diff --git a/.trae/rules/01model.md b/.trae/rules/01model.md new file mode 100644 index 000000000..f94c92273 --- /dev/null +++ b/.trae/rules/01model.md @@ -0,0 +1,126 @@ +--- +alwaysApply: false +description: +--- +# Laravel Search Scope Standard + +## Rule +Untuk semua fitur pencarian (search) yang melibatkan beberapa kolom dengan OR, WAJIB dibungkus `where(function ($query) use (...) { ... })` +agar seluruh OR-terikat dalam satu grup dan tidak merusak kondisi lain (mis. tenant_id, is_active, date range). + +Kolom `date`, `datetime`, `timestamp`, dan field waktu sejenis pada Model TIDAK BOLEH dimasukkan ke `scopeSearch()` secara default, +kecuali memang ada kebutuhan bisnis yang jelas dan eksplisit bahwa user harus bisa mencari berdasarkan tanggal dari input search bebas. +Untuk search umum, prioritaskan hanya field yang benar-benar relevan secara tekstual seperti `code`, `name`, `reference`, `notes`, atau `remarks`. + +## Why +Tanpa grouping closure, `orWhere` dapat “membocorkan” logika sehingga mengabaikan filter lain di query utama. + +Kolom tanggal biasanya tidak relevan untuk keyword search umum, memperbesar noise hasil pencarian, dan lebih tepat ditangani oleh filter terpisah +seperti `start_date`, `end_date`, atau parameter range tanggal. + +## Example (Correct) +```php +public function scopeSearch($query, string $search) +{ + return $query->where(function ($query) use ($search) { + $query->where('cash_accounts.code', 'like', '%'.$search.'%') + ->orWhere('cash_accounts.name', 'like', '%'.$search.'%') + ->orWhere('cash_accounts.remarks', 'like', '%'.$search.'%'); + }); +} +``` + +## Example (Incorrect) +```php +public function scopeSearch($query, string $search) +{ + return $query->where(function ($query) use ($search) { + $query->where('capital_openings.code', 'like', '%'.$search.'%') + ->orWhere('capital_openings.date', 'like', '%'.$search.'%') + ->orWhere('capital_openings.remarks', 'like', '%'.$search.'%'); + }); +} +``` + +# BelongsTo Relationship Standard + +## Rule +Setiap relasi `belongsTo` WAJIB menggunakan `withTrashed()` jika model yang direlasikan mendukung SoftDeletes. + +## Why +Agar data tidak hilang saat parent (referensi) di-soft delete, sehingga integritas data historis tetap terjaga saat ditampilkan. + +## Example (Correct) +```php +public function company() +{ + return $this->belongsTo(Company::class)->withTrashed(); +} +``` + +# Field Order Consistency Standard + +## Rule +Urutan field pada Model dan layer terkait WAJIB mengikuti urutan definisi kolom di migration utama tabel tersebut. + +Aturan ini berlaku untuk: +- `$fillable` +- assignment field di Action `create()` dan `update()` +- urutan output field di Resource +- urutan field di FormRequest `rules()`, `attributes()`, dan `prepareForValidation()` +- array atau mapping lain yang merepresentasikan field yang sama + +Jika tidak semua field dipakai pada sebuah method, pertahankan urutan relatif berdasarkan migration dan cukup lewati field yang memang tidak relevan. + +## Why +Urutan yang konsisten membuat review lebih cepat, meminimalkan salah mapping antar layer, dan memudahkan pengecekan apakah implementasi sudah sesuai struktur database. + +## Example +Jika migration mendefinisikan urutan: +```php +$table->foreignId('company_id'); +$table->foreignId('branch_id'); +$table->string('code'); +$table->dateTime('date'); +$table->foreignId('investor_id'); +$table->foreignId('cash_account_id'); +$table->decimal('amount', 30, 8)->default(0); +$table->string('remarks')->nullable(); +``` + +Maka urutan field di Model, Action, Resource, dan Request harus mengikuti susunan yang sama: +```php +'company_id', +'branch_id', +'code', +'date', +'investor_id', +'cash_account_id', +'amount', +'remarks', +``` + +# Scopeable Traits Standard + +## Rule +1. **Gunakan Trait Standar**: + * `App\Traits\ScopeableByCompany`: Untuk model yang memiliki `company_id`. + * `App\Traits\ScopeableByBranch`: Untuk model yang memiliki `branch_id`. + * `App\Traits\ScopeableByStatus`: Untuk model yang memiliki `status`. +2. **Mandatory Trait**: Jika Action Class atau Controller menggunakan helper `whereCompanyId($id)` atau `whereBranchId($id)`, Model **WAJIB** menggunakan trait terkait secara eksplisit (`use Scopeable...`). Jangan berasumsi helper tersedia secara global. + +## Example +```php +use App\Traits\ScopeableByCompany; +use App\Traits\ScopeableByBranch; + +class Order extends Model +{ + // WAJIB use Trait agar method scope tersedia + use ScopeableByCompany, ScopeableByBranch; + // ... +} + +// Usage in Action/Controller +$query->whereCompanyId($companyId)->whereBranchId($branchId); +``` diff --git a/.trae/rules/02factory.md b/.trae/rules/02factory.md new file mode 100644 index 000000000..fba419a3a --- /dev/null +++ b/.trae/rules/02factory.md @@ -0,0 +1,31 @@ +--- +alwaysApply: false +description: +--- +# PROMPT RULE FACTORY (Laravel) + +Saat membuat/mengedit `database/factories/*.php`: + +- Wajib: Hanya field internal (tanpa foreign key). +- State helper: method `public` deskriptif, return `$this->state(...)` (mis. `setStatusActive()`), hanya override field relevan. + +Field: +- `code`: uppercase + pola rapi (mis. `SUP-####` via lexify/numerify); jangan `word/uuid` mentah. +- `name`: realistis (Indonesia; “PT/CV …” bila cocok). Jika menambahkan suffix random (misal `Str::random`), wajib tambahkan spasi sebagai pemisah (contoh: `$name . ' ' . Str::random(3)`). +- `remarks`: kalimat pendek wajar (boleh `sentence`, bukan lorem noise). + +Lokal Indonesia (jika ada): `city` kota Indo; `address` gaya “Jl.”; `phone/mobile` format `+62/08`; `tax_id` angka masuk akal (mis. `##.###.###.#-###.###`). + +Relasi/FK: +- **STRICT FORBIDDEN**: Jangan pernah mendefinisikan `*_id` (Foreign Key) di dalam method `definition()`. +- **Why**: + 1. Menghindari inkonsistensi data (misal: Child Model dibuatkan Company baru yang beda dengan Parent Model). + 2. Mencegah spam database (membuat ratusan Company baru yang tidak perlu). + 3. Memudahkan testing dengan skenario fleksibel. +- **Solution**: Set relasi di pemanggil (Seeder/Test) menggunakan `->for($model)` atau `->for(Model::factory())`. + +Enum/boolean: +- Enum cast: pakai enum; boolean: `fake()->boolean()` atau default logis + state variasi. + +Gaya: +- Konsisten; `fake()` / `fake('id_ID')`; 1 field per baris; tanpa logika bisnis berat. diff --git a/.trae/rules/03seeder.md b/.trae/rules/03seeder.md new file mode 100644 index 000000000..fef3e7315 --- /dev/null +++ b/.trae/rules/03seeder.md @@ -0,0 +1,277 @@ +--- +alwaysApply: false +description: +--- +## PROMPT RULE SEEDER + +Saat membuat atau mengubah seeder di project ini (`database/seeders/*.php`), gunakan standar berikut: + +1. **Struktur dasar seeder** + +- Namespace dan import: + + - Namespace selalu `Database\Seeders;`. + - Import hanya model dan class yang benar‑benar dipakai (`use App\Models\X;`, `use Illuminate\Database\Seeder;`). + - Class selalu `extends Seeder`. + +- Signature method `run`: + - Untuk seeder yang bekerja **per user**: + + ```php + public function run(?int $entitiesPerUser = null, ?int $userId = null) + ``` + + Contoh: `CompanySeeder::run(?int $companiesPerUser = null, ?int $userId = null)`. + + - Untuk seeder yang bekerja **per company**: + + ```php + public function run(?int $entitiesPerCompany = null, ?int $companyId = null) + ``` + + Contoh: `BranchSeeder`, `WarehouseSeeder`, `InvestorSeeder`, `CustomerSeeder`, `CustomerGroupSeeder`, `ProductCategorySeeder`, `BrandSeeder`, `CashAccountSeeder`, `UnitSeeder`. + + - Di awal method tetapkan default jika parameter `null`: + + ```php + $entitiesPerCompany = $entitiesPerCompany ?? 5; // atau angka default lain + ``` + +2. **Pattern pemilihan parent (User / Company)** + +- Untuk seeder per user (`CompanySeeder`): + + ```php + $companiesPerUser = $companiesPerUser ?? 1; + + $users = $userId ? User::where('id', $userId)->get() : User::all(); + ``` + +- Untuk seeder per company: + + Boleh pakai salah satu pola berikut (pilih satu dan konsisten dalam seeder itu): + + - Ternary sederhana (dipakai banyak seeder): + + ```php + $companies = $companyId ? Company::where('id', $companyId)->get() : Company::all(); + ``` + + - Atau query builder eksplisit (seperti `CustomerSeeder`): + + ```php + $query = Company::query(); + if ($companyId) { + $query->where('id', $companyId); + } + $companies = $query->get(); + ``` + +- Selalu loop: + + ```php + foreach ($companies as $company) { + // isi per company + } + ``` + +3. **Cara memakai factory di seeder** + +- Jangan set field detail di seeder; gunakan factory untuk mengisi data, dan seeder hanya: + - Mengatur parent (`->for($company)`, `->for($branch)`). + - Menghubungkan relasi khusus (`->hasAttached($user)`). + - Menggunakan state (status, default, dsb). + +- Contoh pola umum per company: + + ```php + for ($i = 0; $i < $entitiesPerCompany; $i++) { + ModelX::factory() + ->for($company) + ->create(); + } + ``` + +- Untuk model yang butuh **company + branch** (Warehouse, CashAccount): + - Ambil branch untuk company dulu: + + ```php + $branch = Branch::where('company_id', $company->id)->inRandomOrder()->first(); + if (! $branch) { + continue; // atau lewati company ini + } + ``` + + - Baru gunakan: + + ```php + ModelX::factory() + ->for($company) + ->for($branch) + ->create(); + ``` + +4. **Pola khusus seeder “utama”** + +- **CompanySeeder**: + - Per user, selalu buat minimal satu company default & aktif: + + ```php + Company::factory() + ->hasAttached($user) + ->setIsDefault() + ->setStatusActive() + ->create(); + ``` + + - Jika `companiesPerUser > 1`, buat sisa company dengan status random active/inactive: + + ```php + $remaining = max(0, $companiesPerUser - 1); + + for ($i = 0; $i < $remaining; $i++) { + $company = Company::factory()->hasAttached($user); + + random_int(0, 1) ? $company->setStatusActive() : $company->setStatusInactive(); + + $company->create(); + } + ``` + +- **BranchSeeder**: + - Per company, selalu buat satu branch **main & active**: + + ```php + Branch::factory() + ->for($company) + ->setIsMainBranch() + ->setStatusActive() + ->create(); + ``` + + - Branch sisanya: status random active/inactive, tapi tetap `for($company)`: + + ```php + $remaining = max(0, $branchesPerCompany - 1); + + for ($i = 0; $i < $remaining; $i++) { + $branch = Branch::factory()->for($company); + + random_int(0, 1) ? $branch->setStatusActive() : $branch->setStatusInactive(); + + $branch->create(); + } + ``` + +- **WarehouseSeeder**: + - Per company, pilih satu branch random: + + ```php + $branch = Branch::where('company_id', $company->id)->inRandomOrder()->first(); + ``` + + - Untuk tiap warehouse: + - `->for($company)` + - `->for($branch)` + - Status random active/inactive via state: + + ```php + $warehouse = Warehouse::factory() + ->for($company) + ->for($branch); + + random_int(0, 1) ? $warehouse->setStatusActive() : $warehouse->setStatusInactive(); + + $warehouse->create(); + ``` + +- **CashAccountSeeder**: + - Mirip WarehouseSeeder, tapi untuk CashAccount: + - Param `run(?int $cashAccountsPerCompany = null, ?int $companyId = null, ?int $branchId = null)`. + - Ambil branch dengan filter company, dan opsional `branchId`: + + ```php + $branchQuery = Branch::where('company_id', $company->id); + + if ($branchId) { + $branchQuery->where('id', $branchId); + } + $branch = $branchQuery->inRandomOrder()->first(); + + if (! $branch) { + continue; + } + ``` + + - Loop buat CashAccount dengan `->for($company)->for($branch)`. + +- **Seeder “simple master per company”** (`InvestorSeeder`, `CustomerGroupSeeder`, `CustomerSeeder`, `ProductCategorySeeder`, `BrandSeeder`): + - Pola standar: + + ```php + $entitiesPerCompany = $entitiesPerCompany ?? 5; + + $companies = $companyId ? Company::where('id', $companyId)->get() : Company::all(); + + foreach ($companies as $company) { + for ($i = 0; $i < $entitiesPerCompany; $i++) { + ModelX::factory() + ->for($company) + ->create(); + } + } + ``` + +- **UnitSeeder (master dengan “required set”)**: + - Jika ada daftar unit wajib, gunakan pola: + - Daftar array `requiredUnits`. + - Untuk setiap nama, cek dulu apakah sudah ada: + + ```php + $exists = Unit::where('company_id', $company->id) + ->where('name', $unitName) + ->exists(); + if (! $exists) { + Unit::factory() + ->for($company) + ->create([ + 'name' => $unitName, + 'code' => $unitName, + ]); + } + ``` + + - Setelah itu hitung total dan top‑up sampai `unitsPerCompany` tercapai: + + ```php + $currentCount = Unit::where('company_id', $company->id)->count(); + + if ($currentCount < $unitsPerCompany) { + Unit::factory() + ->count($unitsPerCompany - $currentCount) + ->for($company) + ->create(); + } + ``` + +5. **Pemanggilan seeder (di AppSeed / AppInstall)** + +- Saat memanggil seeder dari command lain, gunakan **named arguments** seperti di `AppSeed` / `AppInstall`: + + ```php + (new CompanySeeder())->run(companiesPerUser: 1, userId: null); + (new BranchSeeder())->run(branchesPerCompany: 5, companyId: null); + (new WarehouseSeeder())->run(warehousesPerCompany: 5, companyId: null); + (new InvestorSeeder())->run(investorsPerCompany: 5, companyId: null); + (new CashAccountSeeder())->run(cashAccountsPerCompany: 5, companyId: null); + // dst. + ``` + +- Jangan lupa pertahankan urutan seeding yang logis: + - `User` → `Company` → `Branch` → `Warehouse` → master lainnya (ProductCategory, Brand, Unit, CustomerGroup, Customer, Investor, CashAccount, dll). + +6. **Gaya coding di seeder** + +- Tidak perlu komentar ekstra di dalam seeder kecuali benar‑benar diperlukan. +- Gunakan `random_int(0, 1)` untuk variasi sederhana status, bukan logic rumit. +- Hindari query berat di dalam loop kecil jika bisa disederhanakan dengan satu query di awal (seperti pattern di `UnitSeeder`). \ No newline at end of file diff --git a/.trae/rules/04actionclasspattern.md b/.trae/rules/04actionclasspattern.md new file mode 100644 index 000000000..8b82a8aa6 --- /dev/null +++ b/.trae/rules/04actionclasspattern.md @@ -0,0 +1,210 @@ +--- +alwaysApply: false +description: +--- +Berikut adalah analisa pola standar yang ditemukan pada semua *Class Actions* di bawah menu **Master Data**. Analisa ini disusun dalam format yang siap Anda salin ke dalam file rules untuk standarisasi proyek. + +Analisa ini mencakup struktur dasar, pola method CRUD, penanganan *caching*, *logging*, dan *unique code generation*. + +*** + +# Standardisasi Action Class (Master Data) + +Pola ini berlaku untuk *Action Classes* yang mengelola entitas Master Data (contoh: `CompanyActions`, `BrandActions`, `CustomerActions`, dll). + +## 1. Struktur Dasar Class +Setiap Action class harus memiliki struktur berikut: +* **Namespace**: `App\Actions\{EntityName}` +* **Class Name**: `{EntityName}Actions` +* **Traits Wajib**: + * `use App\Traits\CacheHelper;` (Untuk manajemen cache otomatis) + * `use App\Traits\LoggerHelper;` (Untuk logging error dan performa) +* **Constructor**: Umumnya kosong `public function __construct() {}`. +* **Database Transaction**: **TIDAK PERLU** menggunakan `DB::beginTransaction()`, `DB::commit()`, atau `DB::rollBack()`. + * Transaction akan ditangani di layer yang lebih tinggi (Controller/Service) atau tidak diperlukan untuk operasi single-model sederhana. + * Cukup gunakan blok `try-catch` untuk menangkap exception dan melakukan logging. + +## 2. Pola Method CRUD +Setiap Action class umumnya mengimplementasikan 5 method utama dengan *signature* dan alur logika yang konsisten. + +### 2.1 Urutan Method Public +Untuk konsistensi navigasi dan kemudahan membaca, urutan method public di setiap Action class harus mengikuti pola berikut: + +1. `readAny` +2. `read` +3. `create` +4. `update` +5. `delete` + +### A. Method `create` +* **Signature**: `public function create(array $data): Model` + * *Catatan*: Untuk entitas kompleks (seperti Product), parameter dapat berupa **DTO**. +* **Alur Logika**: + 1. Start timer: `$timer_start = microtime(true);` + 2. Block `try-catch-finally`. + 3. Instansiasi Model baru. + 4. **Auto-generate Code**: `$model->code = $this->generateUniqueCode(...)`. + 5. Assign attributes dari `$data`. + * **Null Safety**: Jangan gunakan operator `?? null` atau `?? default` di sini. Null safety dan validasi data harus sudah ditangani di Controller/Request. Action class berasumsi data yang diterima sudah valid dan lengkap (sesuai struktur tabel). + 6. Simpan Model: `$model->save()`. + 7. **Flush Cache**: `$this->flushCache()`. + 8. Return Model. +* **Error Handling**: Log error di `catch` menggunakan `$this->loggerDebug(__METHOD__, $e)`. +* **Performance**: Log waktu eksekusi di `finally` menggunakan `$this->loggerPerformance(__METHOD__, $execution_time)`. + +### B. Method `readAny` +* **Signature**: `public function readAny(bool $withTrashed, int $companyId, ?int $branchId, ..., ?ExecuteDTO $execute)` +* **Grouping Parameter (Wajib 3 Blok Visual untuk Non-Outlier)**: +* Untuk semua Action class non-legacy yang memakai `?ExecuteDTO $execute`, signature `readAny` wajib dibagi menjadi 3 blok dengan linebreak: +* 1. Blok basis/konteks: parameter scope utama seperti `withTrashed`, `companyId`, `branchId`, `search`, atau parameter konteks lain seperti `referableType` dan `referableId` bila modul tidak memakai company scope +* 2. Blok filter: seluruh filter spesifik modul seperti `includeId`, `categoryId`, `brandId`, `warehouseId`, `cashAccountId`, `productId`, `productUnitId`, `serial`, `withRemainingStock`, dan filter bisnis lain +* 3. Blok eksekusi: `execute` +* Urutan umum yang harus diutamakan adalah scope/konteks dulu, lalu filter, lalu `execute` terakhir. +* Untuk action yang memakai `companyId`, letakkan `companyId` sebelum `search`. +* `includeId` dianggap bagian dari blok filter, bukan blok eksekusi. +* Urutan dan grouping ini wajib konsisten pada: +* * signature method `readAny` +* * daftar variable di closure `use (...)` +* * urutan filter `if (...)` di query +* * array `$cacheParams` +* Action legacy/outlier berikut tidak boleh dirapikan ke pola ini kecuali diminta eksplisit: +* * `UserActions` +* * `RoleActions` +* * `PurchaseOrderProductUnitActions` +* * `PurchaseOrderDownPaymentApplyActions` +* * `PurchaseOrderDownPaymentActions` +* **Alur Logika**: + 1. **Build Query (Mandatory Filters)**: + * Inisialisasi query dengan filter wajib di level utama (bukan di dalam closure). + * Gunakan Scope/Trait helper jika tersedia (`whereCompanyId`, `whereBranchId`). + * **WithTrashed Pattern**: Gunakan pola deklaratif (withoutTrashed by default, override jika perlu). Gunakan *one-liner* `if` tanpa kurung kurawal agar ringkas. + ```php + // Correct (One-liner preferred) + $query->withoutTrashed(); + if ($withTrashed) $query->withTrashed(); + ``` + * **Joins**: Lakukan `join` eksplisit jika perlu melakukan filtering atau sorting berdasarkan kolom di tabel relasi (misal: `stock_adjustments.date`). + 2. **Apply Conditional/Complex Filters**: + * Gunakan `where(function($q) { ... })` untuk search, filter spesifik, atau kondisi OR yang kompleks. + 3. **Apply Sorting**: + * Gunakan `orderBy` yang relevan. + * **Deterministic Sorting**: SELALU tambahkan `orderBy('id', 'asc')` (atau desc) sebagai sorting terakhir untuk memastikan urutan data konsisten saat pagination, terutama jika sorting utama memiliki nilai yang sama. + * Contoh: + ```php + $query->orderBy('companies.name', 'asc') + ->orderBy('stock_adjustments.date', 'desc') + ->orderBy('stock_adjustment_in_products.id', 'asc'); // Final tie-breaker + ``` + 4. **Execute Check**: + * Jika `$execute` adalah `null`, return `$query` (Query Builder) segera. + 5. **Caching Logic** (Inside `if ($execute)`): + * Generate `$cacheKey` menggunakan `implode` array parameter eksplisit (HINDARI `json_encode` object/DTO). + ```php + $cacheParams = [ + $withTrashed ? 'true' : 'false', + $companyId, + $branchId ?? '[null]', + ... + ]; + $cacheKey = 'read_any_...'.implode('_', $cacheParams); + ``` + * **Check Cache**: Gunakan method `readFromCache` (dari `CacheHelper`). + * **Cache Hit Validation**: Bandingkan hasil dengan `Config::get('dcslab.ERROR_RETURN_VALUE')` untuk memastikan validitas cache (bukan sekadar `!is_null`). + ```php + if ($execute->useCache) { + $cacheResult = $this->readFromCache($cacheKey); + if ($cacheResult !== Config::get('dcslab.ERROR_RETURN_VALUE')) { + return $cacheResult; + } + } + ``` + 6. **Pagination/Limit**: + * Handle `pagination` atau `limit` berdasarkan property di `ExecuteDTO`. + * **PENTING**: Properti `limit` berada di dalam objek `$execute->get`, BUKAN langsung di `$execute`. + ```php + if ($execute->pagination) { + // ... paginate logic + } else { + if ($execute->get?->limit) { + $query->limit($execute->get->limit); + } + $result = $query->get(); + } + ``` + 7. **Performance Logging**: + * Hitung `$recordsCount` dari hasil. + * Log performance dengan jumlah record: `$this->loggerPerformance(__METHOD__, $execution_time, $recordsCount);`. + +### C. Method `read` +* **Signature**: `public function read(Model $model): Model` +* **Alur Logika**: + * Load relasi yang dibutuhkan: `return $model->load('relation1', 'relation2');`. + * Untuk modul transaksi stok yang menampilkan detail produk di frontend, relasi produk dan gambar wajib ikut di-load (contoh jalur: `productUnit.product.images`). + +### F. Aturan Relasi `with` untuk Transaksi Stok +* Pada method `readAny`: + * Relasi utama (`belongsTo`) yang sering dipakai UI harus selalu di-`with` (contoh: `stockAdjustment`, `productUnit`, `productUnit.unit`, `productUnit.product`, `productUnit.product.images`). + * Relasi `hasMany` yang berat hanya di-`with` saat pagination (`$execute?->pagination`) untuk efisiensi query. + * Pola ini wajib dipakai pada action transaksi stok seperti `StockAdjustmentActions`, `StockAdjustmentInProductActions`, `StockAdjustmentOutProductActions`, `StockAdjustmentInProductSerialActions`, dan `StockAdjustmentOutProductSerialActions`. +* Pada method `read`: + * Gunakan `load([...])` yang lengkap untuk seluruh relasi yang dibutuhkan halaman detail, termasuk nested relation ke produk dan gambar. + +### D. Method `update` +* **Signature**: `public function update(Model $model, array $data): Model` + * *Catatan*: Gunakan **DTO** jika entitas kompleks. +* **Alur Logika**: + 1. Start timer & Try-Catch-Finally. + 2. **Regenerate Code**: `$this->generateUniqueCode(..., $model->id)` (pastikan kirim ID untuk pengecualian unik). + 3. **Assign Attributes**: Assign properti satu per satu (Style Property Assignment), BUKAN `update([...])`. Ini lebih eksplisit dan konsisten dengan method `create`. + ```php + $model->field1 = $data['field1']; + $model->field2 = $data['field2']; + // ... + $model->save(); + ``` + 4. **Jangan Ubah Foreign Key Konteks yang Immutable**: + * Jika `company_id`, `branch_id`, atau foreign key konteks lain ditetapkan saat create dan secara bisnis tidak boleh berpindah konteks, maka field tersebut **tidak boleh** di-assign ulang pada method `update`. + * Untuk kebutuhan seperti generate unique code saat update, gunakan nilai yang sudah ada di model (contoh: `$model->company_id`), bukan dari payload update. + * Contoh yang benar: + ```php + $model->code = $this->generateUniqueCode($model->company_id, $data['code'], $model->id); + $model->date = $data['date']; + $model->remarks = $data['remarks']; + $model->save(); + ``` + 5. **Style Kondisional Singkat**: + * Jika conditional hanya berisi satu statement pendek, utamakan *one-line if* tanpa kurung kurawal agar konsisten dengan style project pada action class. + * Cocok dipakai untuk sinkronisasi atau delete relasi internal yang sederhana. + * Contoh: + ```php + $cashTransaction = $model->cashTransaction; + if ($cashTransaction) $this->cashTransactionActions->delete($cashTransaction); + ``` + 6. `$this->flushCache()`. + 7. Return `$model->refresh()`. + +### E. Method `delete` +* **Signature**: `public function delete(Model $model): bool` +* **Alur Logika**: + 1. Start timer & Try-Catch-Finally. + 2. `$model->delete()`. + 3. `$this->flushCache()`. + 4. Return `true` (atau hasil delete). + +## 3. Helper Methods (Wajib Ada) +Untuk menjaga konsistensi data unik (Code & Name), method berikut wajib ada: + +### A. `generateUniqueCode` +* **Signature**: `public function generateUniqueCode(int $companyId, string $code, ?int $exceptId): string` +* **Logika**: + * Cek jika input adalah keyword AUTO (misal: `config('dcslab.KEYWORDS.AUTO')`). + * Looping `do-while` untuk generate kode (Prefix + Counter + Pad). + * Validasi keunikan menggunakan `isUniqueCode`. + +### B. `isUniqueCode` +* **Signature**: `public function isUniqueCode(int $companyId, string $code, ?int $exceptId): bool` +* **Logika**: Cek database apakah kode sudah ada (exclude `$exceptId` jika update). + +### C. `isUniqueName` +* **Signature**: `public function isUniqueName(int $companyId, string $name, ?int $exceptId): bool` +* **Logika**: Validasi keunikan nama (sering digunakan untuk validasi input). diff --git a/.trae/rules/05resource.md b/.trae/rules/05resource.md new file mode 100644 index 000000000..8940e3836 --- /dev/null +++ b/.trae/rules/05resource.md @@ -0,0 +1,106 @@ +--- +alwaysApply: false +description: +--- +# Standardisasi Resource API + +Aturan ini mengatur standar penulisan API Resource (`app/Http/Resources`) untuk menjaga konsistensi format response dan performa aplikasi. + +## 1. Struktur Dasar +- Class harus extends `Illuminate\Http\Resources\Json\JsonResource`. +- Method utama adalah `toArray($request)`. + +## 2. ID Encoding +Semua field `id` (primary key) **WAJIB** di-encode menggunakan `Hashids`. +```php +use Vinkla\Hashids\Facades\Hashids; + +'id' => Hashids::encode($this->id), +``` + +## 3. Handling Status (Soft Deletes) +Jika model menggunakan Soft Deletes, resource harus menangani status `DELETED` secara eksplisit. Gunakan helper method private `setStatus` di dalam class resource. + +```php +use App\Enums\RecordStatusEnum; + +public function toArray($request) +{ + return [ + // ... field lainnya + 'status' => $this->setStatus($this->status, $this->deleted_at), + ]; +} + +private function setStatus($status, $deleted_at) +{ + if (! is_null($deleted_at)) { + return RecordStatusEnum::DELETED->name; + } else { + return $status->name; + } +} +``` + +## 4. Handling Relationships (Eager Loading) +Untuk mencegah N+1 Query problem, **WAJIB**: +- Tidak mengakses relationship secara langsung (`$this->company`, `$this->warehouse`, dll). +- Selalu menggunakan `whenLoaded` untuk semua relasi pada Resource. + +### Single Relation (BelongsTo/HasOne) +Gunakan `new Resource(...)` dengan `whenLoaded` dan opsional `mergeWhen`. +```php +'company' => new CompanyResource($this->whenLoaded('company')), +// Atau jika ingin di-merge ke root level: +$this->mergeWhen($this->relationLoaded('company'), [ + 'company' => new CompanyResource($this->whenLoaded('company')), +]), +``` + +### Collection Relation (HasMany) +Gunakan `Resource::collection(...)`. +```php +'branches' => BranchResource::collection($this->whenLoaded('branches')), +``` + +## 5. Format Data Lainnya +- **ULID**: Sertakan jika ada kolom `ulid`. +- **Enum**: Return `->name` atau `->value` sesuai kebutuhan (biasanya `->name` untuk status). +- **Boolean**: Pastikan return tipe boolean asli (`true`/`false`) atau `1`/`0` sesuai konvensi database project (Project ini tampaknya menggunakan boolean asli di response JSON). + +## Contoh Lengkap +```php +namespace App\Http\Resources; + +use App\Enums\RecordStatusEnum; +use Illuminate\Http\Resources\Json\JsonResource; +use Vinkla\Hashids\Facades\Hashids; + +class BranchResource extends JsonResource +{ + public function toArray($request) + { + return [ + 'id' => Hashids::encode($this->id), + 'ulid' => $this->ulid, + 'code' => $this->code, + 'name' => $this->name, + + // Relationship handling + 'company' => new CompanyResource($this->whenLoaded('company')), + + // Status handling + 'status' => $this->setStatus($this->status, $this->deleted_at), + ]; + } + + private function setStatus($status, $deleted_at) + { + if (! is_null($deleted_at)) { + return RecordStatusEnum::DELETED->name; + } else { + return $status->name; + } + } +} +``` diff --git a/.trae/rules/06controller.md b/.trae/rules/06controller.md new file mode 100644 index 000000000..3830f208b --- /dev/null +++ b/.trae/rules/06controller.md @@ -0,0 +1,226 @@ +--- +alwaysApply: false +description: Standarisasi penulisan Controller untuk modul Master Data, mencakup struktur method, handling request, cache strategy, dan exception handling. +--- +# Controller Standardization Rules (Master Data) + +Aturan ini berlaku untuk semua Controller di bawah menu Master Data (e.g., Company, Branch, Warehouse, Investor, dll). + +## 1. General Structure & Dependencies +- **Inheritance**: Semua controller wajib mewarisi `App\Http\Controllers\BaseController`. +- **Dependency Injection**: Gunakan Constructor Injection untuk memanggil Action Class. +- **Penamaan Properti DI**: Nama properti mengikuti nama class Action dalam camelCase, contoh: + - `StockAdjustmentActions` → `$stockAdjustmentActions` + - `StockAdjustmentInProductActions` → `$stockAdjustmentInProductActions` + - `StockAdjustmentOutProductActions` → `$stockAdjustmentOutProductActions` +- **Common Imports**: + - `App\DTOs\ExecuteDTO`, `ExecuteGetDTO`, `ExecutePaginationDTO` + - `App\Helpers\HashidsHelper` + - `App\Http\Resources\Resource` + - `Illuminate\Support\Facades\Auth` + - `Illuminate\Support\Facades\DB` + - `Exception` + +## 2. CRUD Methods Standard + +### 2.1 Urutan Method Public +Untuk semua controller CRUD di bawah menu Master Data, urutan method public utama harus menggunakan pola berikut: + +1. `readAny` +2. `read` +3. `store` +4. `update` +5. `delete` + +### A. Method `store(StoreRequest $request)` +1. **Validation**: Gunakan dedicated FormRequest class (e.g., `StoreSupplierRequest` atau `SupplierStoreRequest`). + - **Pemisahan Request**: Wajib memisahkan Request untuk Store dan Update untuk menjaga *Single Responsibility*. + - Ambil data dengan `$request->validated()`. +2. **Transaction**: Bungkus logika dalam `try-catch` block dengan `DB::beginTransaction()`, `DB::commit()`, dan `DB::rollBack()`. +3. **Unique Validation**: Lakukan validasi unik manual (Code/Name) memanggil method Action (`isUniqueCode`/`isUniqueName`). + - **Guard Clause**: Gunakan *One-line Guard Clause* untuk pengecekan validasi. + - *Syntax*: `if (! $isUnique) return response()->error(['field' => [trans('rules.unique_...')]], 422);` +4. **Action Execution**: Panggil method `create` pada Action Class. + - *Input*: Kirimkan `array` data (Default). + - Jika Action menerima DTO, gunakan named argument pada pemanggilan Action dan constructor DTO agar mapping field eksplisit dan mudah dibaca. + ```php + $result = $this->entityActions->create( + data: new EntityCreateDTO( + companyId: $validatedRequest['company_id'], + branchId: $validatedRequest['branch_id'], + ) + ); + ``` +5. **Response**: + - Success: `response()->success()` + - Failure: `response()->error($errorMsg)` + - **Formatting**: Gunakan ternary operator untuk return response. + `return is_null($result) ? response()->error($errorMsg) : response()->success();` + +### B. Method `readAny(Request $request)` +1. **Auth & Authorization**: + - **Guard Clause**: Wajib cek `Auth::check()` dengan *One-line Guard Clause*. + `if (! Auth::check()) return response()->error(trans('auth.unauthenticated'), 401);` + - Lanjutkan dengan `$this->authorize('viewAny', Model::class);`. +2. **Input Handling**: + - Gunakan `Illuminate\Http\Request` biasa, bukan FormRequest khusus. + - Decode Hashids (e.g., `company_id`, `include_id`) sebelum validasi. + - Validasi inline menggunakan `$request->validate([...])`. + - **Urutan Parameter Validasi Wajib**: + 1. `with_trashed` (boolean) + 2. `company_id` (integer) + 3. `search` (string) + 4. ... (Filter spesifik lainnya) + 5. `refresh` (boolean) + 6. `paginate` (array) + 7. `get` (array) +3. **Cache Strategy**: + - Logic: `useCache` harus bernilai kebalikan dari request `refresh`. + - Syntax: `useCache: ! $validatedRequest['refresh']`. +4. **Pagination/Get Logic**: + - Gunakan *Immediately Invoked Function Expression (IIFE)* atau closure untuk memisahkan logika `ExecutePaginationDTO` dan `ExecuteGetDTO`. +5. **Grouping Named Argument `readAny` (Wajib 3 Blok untuk Non-Outlier)**: + - Pada pemanggilan Action `readAny`, susun named argument menjadi 3 blok dengan linebreak: + 1. Blok basis/konteks: parameter seperti `withTrashed`, `companyId`, `branchId`, `search`, atau konteks utama lain seperti `referableType` dan `referableId` + 2. Blok filter: semua filter spesifik modul seperti `includeId`, `categoryId`, `brandId`, `warehouseId`, `cashAccountId`, `productId`, `productUnitId`, `serial`, `withRemainingStock`, dan filter bisnis lain + 3. Blok eksekusi: `execute` + - Untuk controller yang memakai `companyId`, urutan basis yang diutamakan adalah `withTrashed`, `companyId`, `branchId` (jika ada), lalu `search`. + - `includeId` tetap masuk ke blok filter. + - Named argument wajib mengikuti urutan pada signature Action agar mapping tetap mudah dibaca saat review. + - Aturan ini berlaku untuk seluruh controller non-legacy yang memanggil `readAny(..., execute: new ExecuteDTO(...))`, termasuk controller master data dan transaksi. + - Controller legacy/outlier berikut dikecualikan dan tidak boleh dipaksa ke pola ini kecuali diminta eksplisit: + - `UserController` + - `RoleController` + - `PurchaseOrderProductUnitController` + - `PurchaseOrderDownPaymentApplyController` + - `PurchaseOrderDownPaymentController` + - Controller Stock Adjustment Product tetap wajib mengikuti pola ini secara ketat: + - `StockAdjustmentInProductController` + - `StockAdjustmentOutProductController` + - `StockAdjustmentInProductSerialController` + - `StockAdjustmentOutProductSerialController` +6. **Response**: `Resource::collection($result)`. + - Gunakan *Early Return* jika hasil null. + ```php + if (is_null($result)) { + return response()->error($errorMsg); + } + return Resource::collection($result); + ``` + +### C. Method `read(Model $model)` +1. **Auth & Authorization**: + - **Guard Clause**: Wajib cek `Auth::check()` dengan *One-line Guard Clause* (sama seperti `readAny`). + - Lanjutkan dengan `$this->authorize('view', $model);`. +2. **Execution**: Panggil method `read` pada Action Class. +3. **Response**: `new Resource($result)`. + - Gunakan *Early Return* jika hasil null (sama seperti `readAny`). + +### D. Method `update(Model $model, UpdateRequest $request)` +1. **Validation**: Gunakan dedicated FormRequest class (e.g., `UpdateSupplierRequest` atau `SupplierUpdateRequest`). +2. **Flow**: Mirip dengan `store`. +3. **Unique Validation**: Sertakan ID model saat ini untuk pengecualian (`ignore current id`). + - Gunakan *One-line Guard Clause* untuk pengecekan validasi. +4. **Action Execution**: Panggil method `update` pada Action Class. + - Jika Action menerima DTO, gunakan named argument baik untuk entity utama maupun `data`. + ```php + $result = $this->entityActions->update( + entity: $entity, + data: new EntityUpdateDTO( + code: $validatedRequest['code'], + remarks: $validatedRequest['remarks'], + ) + ); + ``` +5. **Response**: + - Gunakan ternary operator untuk return response (sama seperti `store`). + +### E. Method `delete(Model $model)` +1. **Auth & Authorization**: + - **Guard Clause**: Wajib cek `Auth::check()` dengan *One-line Guard Clause*. + - Lanjutkan dengan `$this->authorize('delete', $model);`. +2. **Transaction**: Wajib menggunakan DB Transaction. +3. **Business Rules**: Cek validasi bisnis sebelum delete (e.g., `isDefault`). +4. **Response**: + - Gunakan ternary operator untuk return response. + `return ! $result ? response()->error($errorMsg) : response()->success();` + +## 3. Exceptions & Special Cases + +### A. Data Transfer Object (DTO) vs Array +- **Default**: Gunakan **Array** (`$validatedRequest`) untuk mengirim data ke Action Class. +- **DTO Usage Criteria**: Gunakan **DTO** hanya jika: + 1. Struktur data/kolom sangat rumit (complex columns). + 2. Data object tersebut digunakan kembali di banyak tempat (reusability). +- **Contoh**: `ProductController` menggunakan `ProductPhysicalCreateDTO` karena kompleksitas atribut produk fisik. + +### B. Method Naming +- Jika Controller menangani multiple tipe entitas (seperti **Product** yang memisahkan Physical dan Service), penamaan method boleh spesifik: + - `storePhysical`, `storeService` + - `updatePhysical` + +### C. Helper Methods +- Method tambahan seperti `getTypes()` diperbolehkan untuk mengembalikan Enum/Konstanta ke frontend. + +## 4. Form Request Standard + +### A. Prepare For Validation +1. **Use `filled()` over `has()`**: + - Saat melakukan merge input di `prepareForValidation`, gunakan method `$this->filled('key')` daripada `$this->has('key')`. + - **Alasan**: `filled()` memastikan nilai tidak hanya *exist* tapi juga tidak kosong/null string. Ini mencegah error decoding pada Hashids dan memastikan sanitasi data (string kosong menjadi null). + - **Contoh**: + ```php + protected function prepareForValidation() + { + $this->merge([ + // Decode Hashids hanya jika terisi + 'company_id' => $this->filled('company_id') ? HashidsHelper::decodeId($this->company_id) : null, + // Sanitasi string kosong menjadi null + 'address' => $this->filled('address') ? $this['address'] : null, + ]); + } + ``` + +### B. Transaksional Dengan Child (Parent + Detail) + +- Untuk modul transaksional yang saat simpan/update juga menyimpan child/detail (misal: StockAdjustment dengan in_products/out_products): + - Wajib menggunakan FormRequest terpisah untuk `store` dan `update` khusus transaksi tersebut. + - Struktur rules untuk child harus dipusatkan di class khusus di namespace `App\Validation\\`, lalu dipetakan ke nested field di FormRequest. + - Contoh format di FormRequest: + ```php + $rules['in_products'] = ['nullable', 'array']; + $rules += StockAdjustmentInProductRules::mapToFieldNames($this->company_id ?? 0, + 'in_products.*.qty', + 'in_products.*.product_unit_id', + 'in_products.*.product_unit_conversion_value', + 'in_products.*.product_unit_cogs', + 'in_products.*.remarks', + ); + + $rules['out_products'] = ['nullable', 'array']; + $rules += StockAdjustmentOutProductRules::mapToFieldNames($this->company_id ?? 0, + 'out_products.*.qty', + 'out_products.*.product_unit_id', + 'out_products.*.product_unit_conversion_value', + 'out_products.*.remarks', + ); + ``` + - Pola di atas memastikan: + - Satu sumber kebenaran untuk rules child. + - Jika aturan field child berubah, FormRequest akan ikut terdampak (mencegah duplikasi rules tersebar di banyak tempat). + +### B. Authorization +1. **Check Auth First**: Selalu cek `Auth::check()` terlebih dahulu. +2. **Gate Policy**: Gunakan `$user->can()` untuk memanggil Policy yang sesuai. + - **Contoh**: + ```php + public function authorize() + { + if (! Auth::check()) { + return false; + } + /** @var \App\User */ + $user = Auth::user(); + return $user->can('create', Supplier::class); + } + ``` diff --git a/.trae/rules/07apitest.md b/.trae/rules/07apitest.md new file mode 100644 index 000000000..9ec6a7203 --- /dev/null +++ b/.trae/rules/07apitest.md @@ -0,0 +1,121 @@ +--- +alwaysApply: false +description: +--- +# Standarisasi API Test (Master Data) + +Aturan ini berlaku untuk pembuatan dan pemeliharaan tes API pada modul Master Data (dan turunannya) yang terletak di `tests/Feature/API`. + +## 1. Struktur File dan Namespace + +Setiap modul memiliki direktori sendiri di dalam `tests/Feature/API/` dengan format nama `{Module}API`. +Tes dipecah berdasarkan aksi (CRUD) menjadi file terpisah: + +- `Create`: `{Module}API/{Module}APICreateTest.php` +- `Read`: `{Module}API/{Module}APIReadTest.php` +- `Edit`: `{Module}API/{Module}APIEditTest.php` +- `Delete`: `{Module}API/{Module}APIDeleteTest.php` + +**Namespace:** `Tests\Feature\API\{Module}API;` +**Inheritance:** Semua class test harus meng-extend `Tests\APITestCase`. + +## 2. Penamaan Method Test + +Format penamaan method harus konsisten: +`test_{module}_api_call_{action}_{condition}_expect_{result}` + +Contoh: +- `test_branch_api_call_store_without_authorization_expect_unauthorized_message` +- `test_branch_api_call_update_expect_successful` +- `test_branch_api_call_delete_of_nonexistance_ulid_expect_not_found` + +## 3. Standar Test Case + +Setiap file test harus mencakup skenario berikut (jika relevan): + +### Common Scenarios (Create, Edit, Delete, Read) +1. **Unauthorized Access**: Memastikan user tanpa login mendapatkan respon 401. + - Method: `..._without_authorization_expect_unauthorized_message` + - Assert: `$api->assertUnauthorized()` +2. **Forbidden Access**: Memastikan user login tanpa hak akses mendapatkan respon 403. + - Method: `..._without_access_right_expect_forbidden_message` + - Assert: `$api->assertForbidden()` + +### Create & Edit Scenarios (`save`, `edit`) +1. **Successful Operation**: Test flow normal dengan data valid. + - Gunakan `Hashids::encode($id)` untuk referensi ID dalam payload. + - Assert: `$api->assertSuccessful()` dan `$this->assertDatabaseHas(...)`. +2. **XSS Protection**: Memastikan script tag di-strip atau di-encode. + - `..._with_script_tags_in_payload_expect_stripped` + - `..._with_script_tags_in_payload_expect_encoded` (header `X-Sanitizer-Mode: encode`) +3. **Validation Errors**: Test field wajib kosong atau format salah. + - Assert: `$api->assertJsonValidationErrors(['field_name'])`. +4. **Unique Code Validation**: + - `..._with_existing_code_in_same_company_expect_failed` (422 Unprocessable). + - `..._with_existing_code_in_different_company_expect_successful` (Harus boleh duplikat beda company). +5. **Auto Code**: Jika fitur mendukung `AUTO` generate code. + - `..._with_auto_code_expect_successful`. + +### Delete Scenarios (`delete`) +1. **Successful Delete**: + - Assert: `$api->assertSuccessful()` dan `$this->assertSoftDeleted(...)` (jika soft delete). +2. **Not Found**: Menghapus resource dengan ULID random/tidak ada. + - Assert: `$api->assertStatus(404)`. +3. **Logic Constraints**: Menghapus data yang tidak boleh dihapus (misal: Main Branch). + - Assert: `$api->assertUnprocessable()` atau status 422. + +### Read Scenarios (`read`) +1. **Successful Read**: + - Assert: `$api->assertSuccessful()`. + - Cek struktur JSON respon (pagination, data). +2. **Pagination & Filtering**: + - Pastikan parameter seperti `page`, `per_page`, `search`, `company_id` berfungsi. + - Ikuti urutan parameter sesuai `rules/05controller.md` untuk request. + +## 4. Setup dan Data Factory + +- Gunakan `User::factory()` dengan role `DEVELOPER` untuk user yang memiliki akses penuh dalam test positif. +- Gunakan `setUp(): void` yang memanggil `parent::setUp()`. +- Hindari hardcode ID, gunakan factory relationship. + +```php +$user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); +``` + +## 5. Routing + +Gunakan helper `route()` dengan nama route yang standar: +- Create: `api.post.{module}.save` +- Read: `api.get.{module}.read` +- Edit: `api.post.{module}.edit` (parameter ULID) +- Delete: `api.post.{module}.delete` (parameter ULID) + +## 6. Contoh Implementasi (Template Singkat) + +```php +public function test_module_api_call_store_expect_successful() +{ + // 1. Setup User & Data + $user = User::factory()->...->create(); + $this->actingAs($user); + + // 2. Prepare Payload + $company = $user->companies->first(); + $payload = Model::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + // 3. Call API + $api = $this->json('POST', route('api.post.module.save'), $payload); + + // 4. Assertions + $api->assertSuccessful(); + $this->assertDatabaseHas('table_name', [ + 'company_id' => $company->id, + 'name' => $payload['name'], + ]); +} +``` diff --git a/.trae/rules/08requestts.md b/.trae/rules/08requestts.md new file mode 100644 index 000000000..a07c24a5d --- /dev/null +++ b/.trae/rules/08requestts.md @@ -0,0 +1,116 @@ +--- +alwaysApply: false +description: +--- +# Standarisasi Request.ts (Frontend Type Definitions) + +Aturan ini mengatur standar penulisan file definisi tipe TypeScript (`Request.ts`) untuk layanan frontend di direktori `web/src/types/services`. + +## 1. Penamaan File dan Lokasi +- **Lokasi**: `web/src/types/services/{module}/{Module}Request.ts` +- **Penamaan File**: `{Module}Request.ts` (PascalCase). +- **Contoh**: `web/src/types/services/branch/BranchRequest.ts` + +## 2. Struktur Interface +Setiap file `Request.ts` umumnya harus memiliki interface berikut: + +### 2.1. ReadAnyPaginateRequest +Digunakan untuk request daftar data dengan paginasi. + +**Format Penamaan**: `export interface {Module}ReadAnyPaginateRequest` + +**Urutan Property (Wajib Dipatuhi):** +1. `with_trashed: boolean;` (Wajib, paling atas) +2. `company_id: string;` (Jika modul scope company) +3. `branch_id?: string | null;` (Jika modul scope branch) +4. `search?: string | null;` (Pencarian umum) +5. `...filters` (Filter spesifik lain, misal `branch_id`, `status`, `type`, `include_id`, dll) + - **Catatan**: Urutan filter harus sesuai dengan urutan `$fillable` pada Model terkait di backend. +6. `refresh: boolean;` (Wajib) +8. `page: number;` (Wajib) +9. `per_page: number;` (Wajib) + +**Contoh:** +```typescript +export interface BranchReadAnyPaginateRequest { + with_trashed: boolean; + company_id: string; + search?: string | null; + is_main?: boolean; + status?: string | number; + include_id?: string; + refresh: boolean; + page: number; + per_page: number; +} +``` + +### 2.2. ReadAnyGetRequest +Digunakan untuk request daftar data tanpa paginasi penuh (biasanya dengan limit). + +**Format Penamaan**: `export interface {Module}ReadAnyGetRequest` + +**Urutan Property:** +Mirip dengan `PaginateRequest`, namun mengganti `page` dan `per_page` dengan `limit`. + +1. `with_trashed: boolean;` +2. `company_id: string;` +3. `search?: string | null;` + +4. `...` (Property scope & filter sama seperti Paginate) + - **Catatan**: Urutan filter wajib mengikuti urutan `$fillable` pada Model terkait di backend. +5. `refresh: boolean;` +6. `limit: number;` + +**Contoh:** +```typescript +export interface BranchReadAnyGetRequest { + with_trashed: boolean; + company_id: string; + search?: string | null; + is_main?: boolean; + status?: string | number; + include_id?: string; + refresh: boolean; + limit: number; +} +``` + +### 2.3. StoreRequest & UpdateRequest +Digunakan untuk payload Create dan Edit. + +**Format Penamaan**: +- `export interface {Module}StoreRequest` +- `export interface {Module}UpdateRequest` + +**Aturan:** +- Sesuaikan dengan field yang dibutuhkan API. +- Gunakan tipe yang tepat (`string`, `number`, `boolean`). +- Property opsional ditandai dengan `?`. + +## 3. Konvensi Tipe Data +- **Search**: `search?: string | null;` +- **Status**: `status?: string | number;` (Mengakomodasi status berupa kode string atau angka enum) +- **ID Fields**: `string` (Karena menggunakan Hashids) +- **Boolean Flags**: `boolean` (bukan number 0/1) + +## 4. Urutan Filter (Wajib) +Semua filter tambahan (selain `company_id`, `branch_id`, dan `search`) **WAJIB** diurutkan berdasarkan urutan properti `$fillable` pada Model Eloquent terkait di backend. Hal ini untuk memastikan konsistensi antara Frontend dan Backend validation logic. + +## 5. Referensi +Selalu pastikan interface ini sinkron dengan parameter yang diharapkan oleh Controller API di sisi backend (lihat `06controller.md` untuk urutan parameter di backend, meskipun di frontend kita mengirim object JSON/Query param, menjaga konsistensi penamaan sangat penting). + +## 6. Aturan Khusus Stock Adjustment Product `readAny` +- Untuk request type: + - `StockAdjustmentInProductReadAnyPaginateRequest` + - `StockAdjustmentInProductReadAnyGetRequest` + - `StockAdjustmentOutProductReadAnyPaginateRequest` + - `StockAdjustmentOutProductReadAnyGetRequest` + - `StockAdjustmentInProductSerialReadAnyPaginateRequest` + - `StockAdjustmentInProductSerialReadAnyGetRequest` + - `StockAdjustmentOutProductSerialReadAnyPaginateRequest` + - `StockAdjustmentOutProductSerialReadAnyGetRequest` +- Urutan property wajib mengikuti 3 blok: + 1. `with_trashed`, `company_id`, `branch_id`, `search` + 2. `stock_adjustment_id`, `start_date`, `end_date`, `category_id`, `in_warehouse_id`, `out_warehouse_id`, `product_unit_code`, `product_name`, `product_category_id`, `product_brand_id` + 3. `refresh` lalu `page/per_page` atau `limit` diff --git a/.trae/rules/09service.md b/.trae/rules/09service.md new file mode 100644 index 000000000..392df13f8 --- /dev/null +++ b/.trae/rules/09service.md @@ -0,0 +1,221 @@ +--- +alwaysApply: false +description: +--- +# Standarisasi Service Frontend (Service.ts) + +Dokumen ini menjelaskan standar penulisan file Service di frontend (`web/src/services/`) untuk menjaga konsistensi, type safety, dan kemudahan maintenance. + +## 1. Struktur Dasar Class +Setiap Service class harus: +- Di-export sebagai `default`. +- Menginjeksi `ZiggyRouteStore` untuk manajemen route. +- Menginjeksi `ErrorHandlerService` untuk penanganan error yang seragam. +- Memiliki properti `ziggyRoute` dan `errorHandlerService`. + +```typescript +import axios from "../axios"; +import { useZiggyRouteStore } from "../stores/ziggy-route"; +import { route, Config } from "ziggy-js"; +import { ServiceResponse } from "../types/services/ServiceResponse"; +import ErrorHandlerService from "./ErrorHandlerService"; +// ... imports lainnya + +export default class ExampleService { + private ziggyRoute: Config; + private ziggyRouteStore = useZiggyRouteStore(); + private errorHandlerService; + + constructor() { + this.ziggyRoute = this.ziggyRouteStore.getZiggy; + this.errorHandlerService = new ErrorHandlerService(); + } + // ... methods +} +``` + +## 2. Penamaan Method (Naming Convention) +Gunakan nama method berikut untuk operasi standar CRUD: + +| Operasi | Nama Method | Signature | +|---------|-------------|-----------| +| Read Paginated | `readAnyPaginate` | `(args: RequestType): Promise> \| null>>` | +| Read List (No Pagination) | `readAnyGet` | `(args: RequestType): Promise> \| null>>` | +| Read Single | `read` | `(ulid: string): Promise>` | +| Delete | `delete` | `(ulid: string): Promise>` | +| Form Create | `use[Entity]CreateForm` | `(): Form<...>` | +| Form Edit | `use[Entity]EditForm` | `(ulid: string): Form<...>` | + +## 2.1. Urutan Method dalam Class Service +Setelah `constructor()`, urutan method di dalam class service wajib konsisten seperti berikut: + +1. `readAnyPaginate` +2. `readAnyGet` +3. `read` +4. `use[Entity]CreateForm` +5. `use[Entity]EditForm` +6. `delete` + +Contoh urutan yang benar: + +```typescript +export default class ExampleService { + constructor() { + // ... + } + + public async readAnyPaginate(...) { + // ... + } + + public async readAnyGet(...) { + // ... + } + + public async read(...) { + // ... + } + + public useExampleCreateForm() { + // ... + } + + public useExampleEditForm(ulid: string) { + // ... + } + + public async delete(ulid: string) { + // ... + } +} +``` + +Urutan ini dipakai agar service mudah dipindai: method baca data ditempatkan lebih dulu, form builder di tengah, dan aksi destruktif `delete` diletakkan paling akhir. + +## 3. Penanganan Parameter Request (Query Params) +Pastikan parameter diproses dengan benar sebelum dikirim ke API: + +### a. Boolean +Jangan mengonversi boolean ke `1` atau `0` secara manual. Kirimkan nilai boolean asli jika API mendukungnya, atau biarkan handling di backend. +**JANGAN:** `queryParams["active"] = args.active ? 1 : 0;` +**LAKUKAN:** +```typescript +if (args.active !== undefined) queryParams['active'] = args.active; +``` + +### b. Search & Optional Strings +Jangan mengirim string kosong (`""`) untuk parameter opsional seperti `search`. Cek keberadaan nilai terlebih dahulu. +**JANGAN:** `queryParams["search"] = args.search ? args.search : "";` +**LAKUKAN:** +```typescript +if (args.search) queryParams['search'] = args.search; +``` + +### c. Conditional Parameters +Hanya masukkan parameter ke `queryParams` jika nilainya ada (tidak `undefined` atau `null`). +```typescript +if (args.status) queryParams['status'] = args.status; +if (args.company_id) queryParams['company_id'] = args.company_id; +``` + +### d. Konsistensi Urutan Query `readAny` untuk Stock Adjustment Product +Untuk service berikut: +- `StockAdjustmentInProductService` +- `StockAdjustmentOutProductService` +- `StockAdjustmentInProductSerialService` +- `StockAdjustmentOutProductSerialService` + +Urutan pengisian `queryParams` pada `readAnyPaginate` dan `readAnyGet` wajib mengikuti 3 blok: +1. Basis: `with_trashed`, `company_id`, `branch_id`, `search` +2. Filter: `stock_adjustment_id`, `start_date`, `end_date`, `category_id`, `in_warehouse_id`, `out_warehouse_id`, `product_unit_code`, `product_name`, `product_category_id`, `product_brand_id` +3. Eksekusi: `refresh`, lalu `paginate` atau `get` + +## 4. Return Types & Response Handling +Selalu gunakan tipe data yang eksplisit. + +### Delete Method +Method `delete` harus mengembalikan `ServiceResponse`, bukan `any` atau `void`. + +```typescript +public async delete(ulid: string): Promise> { + const result: ServiceResponse = { success: false }; + try { + // ... request + if (response.status == StatusCode.OK) { + result.success = true; + } + return result; + } catch (e: unknown) { + // error handling + } +} +``` + +## 5. Error Handling +Gunakan pola `try-catch` standar dengan `ErrorHandlerService`. + +```typescript +try { + // ... axios call +} catch (e: unknown) { + if (e instanceof Error && e.message.includes('Ziggy error')) { + return this.errorHandlerService.generateZiggyUrlErrorServiceResponse(e.message); + } else if (isAxiosError(e)) { + return this.errorHandlerService.generateAxiosErrorServiceResponse(e as AxiosError); + } else { + return result; + } +} +``` + +## 6. Form Handling (Laravel Precognition) +Untuk form Create dan Edit, gunakan helper `client` dan `useForm` dari `laravel-precognition-vue`. Pastikan credentials dan CSRF token di-set. + +```typescript +public useExampleCreateForm() { + const url = route('api.post.example.save', undefined, true, this.ziggyRoute); + + client.axios().defaults.withCredentials = true; + client.axios().defaults.withXSRFToken = true; + + const form = useForm('post', url, { + code: '_AUTO_', + name: '', + status: 'ACTIVE', + // ... fields lainnya + }); + + return form; +} +``` + +### a. Typing `useForm` (Penting) +Pada beberapa versi type definition `laravel-precognition-vue`, parameter `data` pada `useForm(...)` dibatasi ke `Record`. Akibatnya, menambahkan generic seperti `useForm(...)` atau mengirim object yang ditipkan langsung ke `MyRequestType` bisa memunculkan error: +`Index signature for type 'string' is missing in type 'MyRequestType'`. + +**LAKUKAN:** +- Panggil `useForm('post', url, { ... })` tanpa generic. +- Jika ada field array yang butuh typing, gunakan assertion pada field tersebut saja. + +```typescript +import type { MyStoreRequest } from "../types/services/my-entity/MyEntityRequest"; + +const form = useForm("post", url, { + company_id: "", + code: "_AUTO_", + items: [] as NonNullable, +}); +``` + +**JANGAN:** +```typescript +const initialData: MyStoreRequest = { /* ... */ }; +const form = useForm("post", url, initialData); +``` + +## 7. Import Order +Urutkan import untuk keterbacaan: +1. Library eksternal (`axios`, `ziggy-js`, `laravel-precognition-vue`) +2. Stores (`pinia` stores) +3. Types (`models`, `resources`, `services`, `enums`) +4. Internal Services (`ErrorHandlerService`, `CacheService`) diff --git a/.trae/rules/10createvue.md b/.trae/rules/10createvue.md new file mode 100644 index 000000000..6e8b04eea --- /dev/null +++ b/.trae/rules/10createvue.md @@ -0,0 +1,620 @@ +--- +alwaysApply: false +description: Standarisasi penulisan halaman Create (EntityCreate.vue) di Frontend +--- +# Standarisasi Halaman Create (EntityCreate.vue) + +Dokumen ini menjelaskan standar penulisan halaman `[Entity]Create.vue` di frontend (`web/src/pages/[entity]/[Entity]Create.vue`) untuk menjaga konsistensi UI/UX, performa, dan error handling. + +## 1. Imports + +### Axios +Jangan mengimpor `axios` secara default. Impor hanya `isAxiosError` dan `AxiosError` untuk keperluan type checking dan error handling. + +**JANGAN:** `import axios from "axios";` +**LAKUKAN:** +```typescript +import { isAxiosError, AxiosError } from "axios"; +``` + +### Components & Services +Pastikan mengimpor komponen UI standar dan Service yang diperlukan. + +```typescript +import { TwoColumnsLayout } from "@/components/Base/Form/FormLayout"; +import { TwoColumnsLayoutCards } from "@/components/Base/Form/FormLayout/TwoColumnsLayout.vue"; +import { CardState } from "@/types/enums/CardState"; +import Button from "@/components/Base/Button"; +import Lucide from "@/components/Base/Lucide"; +import { type AlertPlaceholderProps } from "@/components/AlertPlaceholder/AlertPlaceholder.vue"; +import { + FormInput, + FormLabel, + FormSelect, + FormErrorMessages, + // ... komponen form lainnya +} from "@/components/Base/Form"; +import CacheService from "@/services/CacheService"; +import DashboardService from "@/services/DashboardService"; +// ... Import Service entitas terkait +``` + +## 2. Struktur & Layout + +Gunakan `TwoColumnsLayout` dengan definisi `cards` state. + +```typescript +// Script Setup +const cards = ref>([ + { + title: "views.entity.field_groups.group_1", + state: CardState.Expanded, + id: "group1" + }, + // ... group lainnya + { title: "", state: CardState.Hidden, id: "button" }, +]); + +// Template + +``` + +### Struktur Script Setup (Region) + +Untuk halaman Create dengan `', + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('cash_accounts', [ + 'company_id' => $company->id, + 'name' => 'alert("xss")', + ]); + } + + public function test_cash_account_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'name' => '', + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.save'), $payload, ['X-Sanitizer-Mode' => 'encode']); + + $api->assertSuccessful(); + $this->assertDatabaseHas('cash_accounts', [ + 'company_id' => $company->id, + 'name' => '<script>alert("xss")</script>', + ]); + } + + public function test_cash_account_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('cash_accounts', [ + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_cash_account_api_call_store_with_auto_code_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'code' => Config::get('dcslab.KEYWORDS.AUTO'), + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('cash_accounts', [ + 'company_id' => $company->id, + 'branch_id' => $branch->id, + 'name' => $payload['name'], + ]); + } + + public function test_cash_account_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($company->id + 999), // Invalid Branch ID + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.save'), $payload); + + $api->assertStatus(422); + $api->assertJsonValidationErrors(['branch_id']); + } + + public function test_cash_account_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + CashAccount::factory()->for($company)->create([ + 'code' => 'test1', + 'branch_id' => $branch->id, + ]); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.save'), $payload); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_cash_account_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->has(Company::factory()->setStatusActive()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->whereHas('branches')->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + $branch_1 = $company_1->branches()->inRandomOrder()->first(); + + CashAccount::factory()->for($company_1)->create([ + 'code' => 'test1', + 'branch_id' => $branch_1->id, + ]); + + $branch_2 = $company_2->branches()->inRandomOrder()->first(); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'branch_id' => Hashids::encode($branch_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('cash_accounts', [ + 'company_id' => $company_2->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_cash_account_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $payload = []; + + $api = $this->json('POST', route('api.post.cash_account.save'), $payload); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name', 'is_bank', 'is_active']); + } +} diff --git a/api/tests/Feature/API/CashAccountAPI/CashAccountAPIDeleteTest.php b/api/tests/Feature/API/CashAccountAPI/CashAccountAPIDeleteTest.php new file mode 100644 index 000000000..6271a2273 --- /dev/null +++ b/api/tests/Feature/API/CashAccountAPI/CashAccountAPIDeleteTest.php @@ -0,0 +1,106 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $api = $this->json('POST', route('api.post.cash_account.delete', $cashAccount->ulid)); + + $api->assertUnauthorized(); + } + + public function test_cash_account_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $api = $this->json('POST', route('api.post.cash_account.delete', $cashAccount->ulid)); + + $api->assertForbidden(); + } + + public function test_cash_account_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $api = $this->json('POST', route('api.post.cash_account.delete', $cashAccount->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('cash_accounts', [ + 'id' => $cashAccount->id, + ]); + } + + public function test_cash_account_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.cash_account.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_cash_account_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $this->json('POST', route('api.post.cash_account.delete', null)); + } +} diff --git a/api/tests/Feature/API/CashAccountAPI/CashAccountAPIEditTest.php b/api/tests/Feature/API/CashAccountAPI/CashAccountAPIEditTest.php new file mode 100644 index 000000000..533852a7e --- /dev/null +++ b/api/tests/Feature/API/CashAccountAPI/CashAccountAPIEditTest.php @@ -0,0 +1,225 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.edit', $cashAccount->ulid), $payload); + + $api->assertUnauthorized(); + } + + public function test_cash_account_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.edit', $cashAccount->ulid), $payload); + + $api->assertForbidden(); + } + + public function test_cash_account_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'name' => '', + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.edit', $cashAccount->ulid), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('cash_accounts', [ + 'id' => $cashAccount->id, + 'company_id' => $company->id, + 'name' => 'alert("xss")', + ]); + } + + public function test_cash_account_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'name' => '', + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.edit', $cashAccount->ulid), $payload, ['X-Sanitizer-Mode' => 'encode']); + + $api->assertSuccessful(); + $this->assertDatabaseHas('cash_accounts', [ + 'id' => $cashAccount->id, + 'company_id' => $company->id, + 'name' => '<script>alert("xss")</script>', + ]); + } + + public function test_cash_account_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.edit', $cashAccount->ulid), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('cash_accounts', [ + 'id' => $cashAccount->id, + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_cash_account_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->first(); + $branch = $company->branches()->inRandomOrder()->first(); + CashAccount::factory()->for($company)->count(2)->create([ + 'branch_id' => $branch->id, + ]); + + $cashAccounts = $company->cashAccounts()->inRandomOrder()->take(2)->get(); + $cashAccount_1 = $cashAccounts[0]; + $cashAccount_2 = $cashAccounts[1]; + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'code' => $cashAccount_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.edit', $cashAccount_2->ulid), $payload); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_cash_account_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->has(Company::factory()->setStatusActive()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->whereHas('branches')->inRandomOrder()->get(); + + $company_1 = $companies[0]; + $branch_1 = $company_1->branches()->inRandomOrder()->first(); + CashAccount::factory()->for($company_1)->create([ + 'code' => 'test1', + 'branch_id' => $branch_1->id, + ]); + + $company_2 = $companies[1]; + $branch_2 = $company_2->branches()->inRandomOrder()->first(); + $cashAccount_2 = CashAccount::factory()->for($company_2)->create([ + 'code' => 'test2', + 'branch_id' => $branch_2->id, + ]); + + $payload = CashAccount::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.cash_account.edit', $cashAccount_2->ulid), $payload); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/CashAccountAPI/CashAccountAPIReadTest.php b/api/tests/Feature/API/CashAccountAPI/CashAccountAPIReadTest.php new file mode 100644 index 000000000..30a8cf6ab --- /dev/null +++ b/api/tests/Feature/API/CashAccountAPI/CashAccountAPIReadTest.php @@ -0,0 +1,381 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $api = $this->getJson(route('api.get.cash_account.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(401); + } + + public function test_cash_account_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $api = $this->getJson(route('api.get.cash_account.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(403); + } + + public function test_cash_account_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $ulid = $cashAccount->ulid; + + $api = $this->getJson(route('api.get.cash_account.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_cash_account_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $ulid = $cashAccount->ulid; + + $api = $this->getJson(route('api.get.cash_account.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_cash_account_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + '1 OR SLEEP(5)', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + "admin'--", + "' OR 1=1 --", + ]; + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.cash_account.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.cash_account.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_cash_account_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $api = $this->getJson(route('api.get.cash_account.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.cash_account.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + ]); + } + + public function test_cash_account_api_call_read_any_with_search_expect_filtered() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $cashAccount = CashAccount::factory()->for($company)->create([ + 'name' => 'Searchable Name', + 'branch_id' => $branch->id, + ]); + + CashAccount::factory()->for($company)->create([ + 'name' => 'Other Name', + 'branch_id' => $branch->id, + ]); + + $api = $this->getJson(route('api.get.cash_account.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'Searchable', + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonFragment([ + 'name' => 'Searchable Name', + ]); + $api->assertJsonMissing([ + 'name' => 'Other Name', + ]); + } + + public function test_cash_account_api_call_read_any_with_branch_filter_expect_filtered() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branches = $company->branches()->inRandomOrder()->take(2)->get(); + + if ($branches->count() < 2) { + $branch_1 = $branches->first(); + $branch_2 = Branch::factory()->for($company)->create(); + } else { + $branch_1 = $branches[0]; + $branch_2 = $branches[1]; + } + + CashAccount::factory()->for($company)->create([ + 'name' => 'Account Branch 1', + 'branch_id' => $branch_1->id, + ]); + + CashAccount::factory()->for($company)->create([ + 'name' => 'Account Branch 2', + 'branch_id' => $branch_2->id, + ]); + + $api = $this->getJson(route('api.get.cash_account.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch_1->id), + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonFragment([ + 'name' => 'Account Branch 1', + ]); + $api->assertJsonMissing([ + 'name' => 'Account Branch 2', + ]); + } + + public function test_cash_account_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $cashAccount = CashAccount::factory()->for($company)->create([ + 'branch_id' => $branch->id, + ]); + + $ulid = $cashAccount->ulid; + + $api = $this->getJson(route('api.get.cash_account.read', $ulid)); + + $api->assertSuccessful(); + $api->assertJsonFragment([ + 'name' => $cashAccount->name, + ]); + } + + public function test_cash_account_api_call_read_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.cash_account.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/CompanyAPI/CompanyAPICreateTest.php b/api/tests/Feature/API/CompanyAPI/CompanyAPICreateTest.php index a5b481e82..9d371301b 100644 --- a/api/tests/Feature/API/CompanyAPI/CompanyAPICreateTest.php +++ b/api/tests/Feature/API/CompanyAPI/CompanyAPICreateTest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\CompanyAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Company; use App\Models\Role; use App\Models\User; @@ -18,13 +18,13 @@ protected function setUp(): void public function test_company_api_call_store_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); - $companyArr = Company::factory()->setStatusActive()->setIsDefault() + $payload = Company::factory()->setStatusActive()->setIsDefault() ->make()->toArray(); - $api = $this->json('POST', route('api.post.db.company.company.save'), $companyArr); + $api = $this->json('POST', route('api.post.company.save'), $payload); $api->assertUnauthorized(); } @@ -36,10 +36,10 @@ public function test_company_api_call_store_without_access_right_expect_unauthor $this->actingAs($user); - $companyArr = Company::factory()->setStatusActive()->setIsDefault() + $payload = Company::factory()->setStatusActive()->setIsDefault() ->make()->toArray(); - $api = $this->json('POST', route('api.post.db.company.company.save'), $companyArr); + $api = $this->json('POST', route('api.post.company.save'), $payload); $api->assertForbidden(); } @@ -57,37 +57,130 @@ public function test_company_api_call_store_with_script_tags_in_payload_expect_e public function test_company_api_call_store_expect_successful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); - $companyArr = Company::factory()->setStatusActive()->setIsDefault() + $payload = Company::factory()->setStatusActive()->setIsDefault() ->make()->toArray(); - $api = $this->json('POST', route('api.post.db.company.company.save'), $companyArr); + $api = $this->json('POST', route('api.post.company.save'), $payload); $api->assertSuccessful(); $this->assertDatabaseHas('companies', [ - 'code' => $companyArr['code'], - 'name' => $companyArr['name'], - 'address' => $companyArr['address'], - 'default' => $companyArr['default'], - 'status' => $companyArr['status'], + 'code' => $payload['code'], + 'name' => $payload['name'], + 'address' => $payload['address'], + 'default' => $payload['default'], + 'status' => $payload['status'], + ]); + } + + public function test_company_api_call_store_with_existing_code_in_same_user_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->state([ + 'code' => 'CP001', + ])) + ->create(); + + $this->actingAs($user); + + $payload = Company::factory()->setStatusActive()->make([ + 'code' => 'CP001', + ])->toArray(); + + $api = $this->json('POST', route('api.post.company.save'), $payload); + + $api->assertUnprocessable(); + $api->assertJsonValidationErrors(['code']); + } + + public function test_company_api_call_store_with_existing_name_in_same_user_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()->state([ + 'name' => 'Company Sama', + ])) + ->create(); + + $this->actingAs($user); + + $payload = Company::factory()->setStatusActive()->make([ + 'name' => 'Company Sama', + ])->toArray(); + + $api = $this->json('POST', route('api.post.company.save'), $payload); + + $api->assertUnprocessable(); + $api->assertJsonValidationErrors(['name']); + } + + public function test_company_api_call_store_with_existing_code_in_different_user_expect_successful() + { + User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()->state([ + 'code' => 'CP001', + ])) + ->create(); + + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->create(); + + $this->actingAs($user); + + $payload = Company::factory()->setStatusActive()->make([ + 'code' => 'CP001', + ])->toArray(); + + $api = $this->json('POST', route('api.post.company.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('companies', [ + 'code' => 'CP001', + 'name' => $payload['name'], + ]); + } + + public function test_company_api_call_store_with_auto_code_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->create(); + + $this->actingAs($user); + + $payload = Company::factory()->setStatusActive()->make([ + 'code' => config('dcslab.KEYWORDS.AUTO'), + ])->toArray(); + + $api = $this->json('POST', route('api.post.company.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseMissing('companies', [ + 'code' => config('dcslab.KEYWORDS.AUTO'), + 'name' => $payload['name'], + ]); + $this->assertDatabaseHas('companies', [ + 'name' => $payload['name'], ]); } public function test_company_api_call_store_with_empty_string_parameters_expect_validation_error() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); - $companyArr = []; + $payload = []; - $api = $this->json('POST', route('api.post.db.company.company.save'), $companyArr); + $api = $this->json('POST', route('api.post.company.save'), $payload); $api->assertJsonValidationErrors(['code', 'name', 'status']); } diff --git a/api/tests/Feature/API/CompanyAPI/CompanyAPIDeleteTest.php b/api/tests/Feature/API/CompanyAPI/CompanyAPIDeleteTest.php index 22eb80223..62efdcbb7 100644 --- a/api/tests/Feature/API/CompanyAPI/CompanyAPIDeleteTest.php +++ b/api/tests/Feature/API/CompanyAPI/CompanyAPIDeleteTest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\CompanyAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Company; use App\Models\Role; use App\Models\User; @@ -24,7 +24,7 @@ public function test_company_api_call_delete_without_authorization_expect_unauth $idxDefaultCompany = random_int(0, $companyCount - 1); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->count($companyCount) ->state(new Sequence( fn (Sequence $sequence) => [ @@ -36,7 +36,7 @@ public function test_company_api_call_delete_without_authorization_expect_unauth $company = $user->companies()->where('default', '=', false)->first(); - $api = $this->json('POST', route('api.post.db.company.company.delete', $company->ulid)); + $api = $this->json('POST', route('api.post.company.delete', $company->ulid)); $api->assertUnauthorized(); } @@ -60,7 +60,7 @@ public function test_company_api_call_delete_without_access_right_expect_unautho $company = $user->companies()->where('default', '=', false)->first(); - $api = $this->json('POST', route('api.post.db.company.company.delete', $company->ulid)); + $api = $this->json('POST', route('api.post.company.delete', $company->ulid)); $api->assertForbidden(); } @@ -71,7 +71,7 @@ public function test_company_api_call_delete_expect_successful() $idxDefaultCompany = random_int(0, $companyCount - 1); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->count($companyCount) ->state(new Sequence( fn (Sequence $sequence) => [ @@ -85,7 +85,7 @@ public function test_company_api_call_delete_expect_successful() $company = $user->companies()->where('default', '=', false)->first(); - $api = $this->json('POST', route('api.post.db.company.company.delete', $company->ulid)); + $api = $this->json('POST', route('api.post.company.delete', $company->ulid)); $api->assertSuccessful(); $this->assertSoftDeleted('companies', [ @@ -101,7 +101,7 @@ public function test_company_api_call_delete_of_nonexistance_ulid_expect_not_fou $ulid = Str::ulid()->generate(); - $api = $this->json('POST', route('api.post.db.company.company.delete', $ulid)); + $api = $this->json('POST', route('api.post.company.delete', $ulid)); $api->assertStatus(404); } @@ -112,6 +112,6 @@ public function test_company_api_call_delete_without_parameters_expect_failed() $user = User::factory()->create(); $this->actingAs($user); - $api = $this->json('POST', route('api.post.db.company.company.delete', null)); + $api = $this->json('POST', route('api.post.company.delete', null)); } } diff --git a/api/tests/Feature/API/CompanyAPI/CompanyAPIEditTest.php b/api/tests/Feature/API/CompanyAPI/CompanyAPIEditTest.php index 6cbd250e8..ca1e409ea 100644 --- a/api/tests/Feature/API/CompanyAPI/CompanyAPIEditTest.php +++ b/api/tests/Feature/API/CompanyAPI/CompanyAPIEditTest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\CompanyAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Company; use App\Models\Role; use App\Models\User; @@ -19,15 +19,15 @@ protected function setUp(): void public function test_company_api_call_update_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); $company = $user->companies->first(); - $companyArr = Company::factory()->setStatusActive()->make()->toArray(); + $payload = Company::factory()->setStatusActive()->make()->toArray(); - $api = $this->json('POST', route('api.post.db.company.company.edit', $company->ulid), $companyArr); + $api = $this->json('POST', route('api.post.company.edit', $company->ulid), $payload); $api->assertUnauthorized(); } @@ -42,9 +42,9 @@ public function test_company_api_call_update_without_access_right_expect_unautho $company = $user->companies->first(); - $companyArr = Company::factory()->setStatusActive()->make()->toArray(); + $payload = Company::factory()->setStatusActive()->make()->toArray(); - $api = $this->json('POST', route('api.post.db.company.company.edit', $company->ulid), $companyArr); + $api = $this->json('POST', route('api.post.company.edit', $company->ulid), $payload); $api->assertForbidden(); } @@ -62,7 +62,7 @@ public function test_company_api_call_update_with_script_tags_in_payload_expect_ public function test_company_api_call_update_expect_successful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); @@ -70,18 +70,18 @@ public function test_company_api_call_update_expect_successful() $company = $user->companies->first(); - $companyArr = Company::factory()->setStatusActive()->make()->toArray(); + $payload = Company::factory()->setStatusActive()->setIsDefault()->make()->toArray(); - $api = $this->json('POST', route('api.post.db.company.company.edit', $company->ulid), $companyArr); + $api = $this->json('POST', route('api.post.company.edit', $company->ulid), $payload); $api->assertSuccessful(); $this->assertDatabaseHas('companies', [ 'id' => $company->id, - 'code' => $companyArr['code'], - 'name' => $companyArr['name'], - 'address' => $companyArr['address'], - 'default' => $companyArr['default'], - 'status' => $companyArr['status'], + 'code' => $payload['code'], + 'name' => $payload['name'], + 'address' => $payload['address'], + 'default' => $payload['default'], + 'status' => $payload['status'], ]); } @@ -91,7 +91,7 @@ public function test_company_api_call_update_and_use_existing_code_in_same_user_ $idxDefaultCompany = random_int(0, $companyCount - 1); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->count($companyCount) ->state(new Sequence( fn (Sequence $sequence) => [ @@ -107,15 +107,101 @@ public function test_company_api_call_update_and_use_existing_code_in_same_user_ $company_1 = $companies[0]; $company_2 = $companies[1]; - $companyArr = Company::factory()->make([ + $payload = Company::factory()->make([ 'code' => $company_2->code, ])->toArray(); - $api = $this->json('POST', route('api.post.db.company.company.edit', $company_1->ulid), $companyArr); + $api = $this->json('POST', route('api.post.company.edit', $company_1->ulid), $payload); $api->assertUnprocessable(); $api->assertJsonStructure([ 'errors', ]); } + + public function test_company_api_call_update_and_use_existing_name_in_same_user_expect_failed() + { + $companyCount = 2; + $idxDefaultCompany = random_int(0, $companyCount - 1); + + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->count($companyCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'default' => $sequence->index == $idxDefaultCompany, + ] + )) + ) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->take(2)->get(); + $company_1 = $companies[0]; + $company_2 = $companies[1]; + + $payload = Company::factory()->make([ + 'name' => $company_2->name, + ])->toArray(); + + $api = $this->json('POST', route('api.post.company.edit', $company_1->ulid), $payload); + + $api->assertUnprocessable(); + $api->assertJsonValidationErrors(['name']); + } + + public function test_company_api_call_update_and_use_existing_code_in_different_user_expect_successful() + { + User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()->state([ + 'code' => 'CP001', + ])) + ->create(); + + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->first(); + $payload = Company::factory()->setStatusActive()->make([ + 'code' => 'CP001', + ])->toArray(); + + $api = $this->json('POST', route('api.post.company.edit', $company->ulid), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('companies', [ + 'id' => $company->id, + 'code' => 'CP001', + 'name' => $payload['name'], + ]); + } + + public function test_company_api_call_update_with_auto_code_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->first(); + $payload = Company::factory()->setStatusActive()->make([ + 'code' => config('dcslab.KEYWORDS.AUTO'), + ])->toArray(); + + $api = $this->json('POST', route('api.post.company.edit', $company->ulid), $payload); + + $api->assertSuccessful(); + + $this->assertDatabaseMissing('companies', [ + 'id' => $company->id, + 'code' => config('dcslab.KEYWORDS.AUTO'), + ]); + } } diff --git a/api/tests/Feature/API/CompanyAPI/CompanyAPIReadTest.php b/api/tests/Feature/API/CompanyAPI/CompanyAPIReadTest.php index 9fec9a29a..4cf132242 100644 --- a/api/tests/Feature/API/CompanyAPI/CompanyAPIReadTest.php +++ b/api/tests/Feature/API/CompanyAPI/CompanyAPIReadTest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\CompanyAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Company; use App\Models\Role; use App\Models\User; @@ -21,17 +21,18 @@ protected function setUp(): void public function test_company_api_call_read_any_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], ])); $api->assertUnauthorized(); @@ -45,13 +46,14 @@ public function test_company_api_call_read_any_without_access_right_expect_unaut $this->actingAs($user); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], ])); $api->assertForbidden(); @@ -60,13 +62,13 @@ public function test_company_api_call_read_any_without_access_right_expect_unaut public function test_company_api_call_read_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); $company = $user->companies()->inRandomOrder()->first(); - $api = $this->getJson(route('api.get.db.company.company.read', $company->ulid)); + $api = $this->getJson(route('api.get.company.read', $company->ulid)); $api->assertUnauthorized(); } @@ -81,7 +83,7 @@ public function test_company_api_call_read_without_access_right_expect_unauthori $company = $user->companies()->inRandomOrder()->first(); - $api = $this->getJson(route('api.get.db.company.company.read', $company->ulid)); + $api = $this->getJson(route('api.get.company.read', $company->ulid)); $api->assertForbidden(); } @@ -89,7 +91,7 @@ public function test_company_api_call_read_without_access_right_expect_unauthori public function test_company_api_call_read_with_sql_injection_expect_injection_ignored() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); @@ -100,102 +102,25 @@ public function test_company_api_call_read_with_sql_injection_expect_injection_i '1 UNION SELECT username, password FROM users', '1; DROP TABLE users', "' OR '1'='1' --", - "' OR \'1\'=\'1", '1 OR SLEEP(5)', - '1 AND (SELECT COUNT(*) FROM sysobjects) > 1', - "1 AND (SELECT * FROM users WHERE username = 'admin' AND SLEEP(5))", "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", - "SELECT * FROM users; INSERT INTO logs (message) VALUES ('Injected SQL query')", - "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin' AND password LIKE '%a%')", "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", - '1 OR 1=1; DROP TABLE users; --', - '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns', - '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = database()', - "1; EXEC xp_cmdshell('echo vulnerable'); --", - "' OR EXISTS(SELECT * FROM information_schema.tables WHERE table_schema='public' AND table_name='users' LIMIT 1) --", - "1'; EXEC sp_addrolemember 'db_owner', 'admin'; --", - "1' OR '1'='1'; -- EXEC master..xp_cmdshell 'echo vulnerable' --", - "1' UNION ALL SELECT NULL, NULL, NULL, NULL, NULL, NULL, CONCAT(username, ':', password) FROM users --", - '1; SELECT pg_sleep(5); --', - "1 AND SLEEP(5) AND 'abc'='abc", - "1 AND SLEEP(5) AND 'xyz'='xyz", - '1 OR 1=1; SELECT COUNT(*) FROM information_schema.tables;', - "1' UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' --", - '1 AND (SELECT * FROM (SELECT(SLEEP(5)))hOKz)', - "1' AND 1=(SELECT COUNT(*) FROM tabname); --", - "1'; WAITFOR DELAY '0:0:5' --", - "1 OR 1=1; WAITFOR DELAY '0:0:5' --", - "1; DECLARE @v VARCHAR(8000);SET @v = '';SELECT @v = @v + name + ', ' FROM sysobjects WHERE xtype = 'U';SELECT @v --", - "1; SELECT COUNT(*), CONCAT(table_name, ':', column_name) FROM information_schema.columns GROUP BY table_name, column_name HAVING COUNT(*) > 1; --", - '1; SELECT COUNT(*), table_name FROM information_schema.columns GROUP BY table_name HAVING COUNT(*) > 1; --', - "1' OR '1'='1'; SELECT COUNT(*) FROM information_schema.tables; --", - '1 AND (SELECT COUNT(*) FROM users) > 10', - '1 AND (SELECT COUNT(*) FROM users) > 100', - "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin')", - "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR '1'='1", - "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR 'x'='x", - '1 AND (SELECT COUNT(*) FROM users) > 1; SELECT * FROM users;', - '1 OR 1=1; SELECT * FROM users;', - "1' OR 1=1; SELECT * FROM users;", - "1 OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", - "1' OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", - "1 OR 1=1; SELECT * FROM users WHERE username = 'admin' --", - "1' OR 1=1; SELECT * FROM users WHERE username = 'admin' --", - "' OR 1=1 --", "admin'--", - "admin' #", - "' OR 'x'='x", - "' OR 'a'='a'", - "' OR 'a'='a'--", - "' OR 1=1", - "' OR 1=1--", - "' OR 1=1#", - "' OR 1=1 /*", - "' OR '1'='1'--", - "' OR '1'='1'/*", - "' OR '1'='1' #", - "' OR '1'='1' /*", - "' OR '1'='1' or ''='", - "' OR '1'='1' or 'a'='a", - "' OR '1'='1' or 'a'='a'--", - "' OR '1'='1' or 'a'='a'/*", - "' OR '1'='1' or 'a'='a' #", - "' OR '1'='1' or 'a'='a' /*", - '1; SELECT * FROM users WHERE 1=1', - '1; SELECT * FROM users WHERE 1=1--', - '1; SELECT * FROM users WHERE 1=1/*', - "1' OR 1=1; SELECT * FROM users WHERE 1=1", - "1' OR 1=1; SELECT * FROM users WHERE 1=1--", - "1' OR 1=1; SELECT * FROM users WHERE 1=1/*", - "1 OR '1'='1'; SELECT * FROM users WHERE 1=1", - "1 OR '1'='1'; SELECT * FROM users WHERE 1=1--", - "1 OR '1'='1'; SELECT * FROM users WHERE 1=1/*", - "1' OR '1'='1'; SELECT * FROM users WHERE 1=1", - "1' OR '1'='1'; SELECT * FROM users WHERE 1=1--", - "1' OR '1'='1'; SELECT * FROM users WHERE 1=1/*", - "1' OR '1'='1' UNION SELECT username, password FROM users", - "1' OR '1'='1' UNION SELECT username, password FROM users--", - "1' OR '1'='1' UNION SELECT username, password FROM users/*", - "1' OR '1'='1' UNION SELECT username, password FROM users #", - "1' OR '1'='1' UNION SELECT username, password FROM users /*", - "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.tables", - "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema", - "' OR '", - "1' OR '1'='1' UNION SELECT NULL", - "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.columns", - "1' OR '1'='1' UNION SELECT NULL, table_name FROM", - "' OR '1'='1' or", + "' OR 1=1 --", ]; - $testIdx = random_int(0, count($injections)); + $testIdx = random_int(0, count($injections) - 1); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => $injections[$testIdx], - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, + 'default' => '', + 'status' => '', 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], ])); $api->assertSuccessful(); @@ -214,15 +139,15 @@ public function test_company_api_call_read_with_sql_injection_expect_injection_i ], ]); - $testIdx = random_int(0, count($injections)); + $testIdx = random_int(0, count($injections) - 1); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => $injections[$testIdx], - 'paginate' => false, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], ])); $api->assertSuccessful(); @@ -235,19 +160,20 @@ public function test_company_api_call_read_with_sql_injection_expect_injection_i public function test_company_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); $this->actingAs($user); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], ])); $api->assertSuccessful(); @@ -261,13 +187,13 @@ public function test_company_api_call_read_any_with_or_without_pagination_expect ], ]); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => false, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], ])); $api->assertSuccessful(); @@ -276,18 +202,20 @@ public function test_company_api_call_read_any_with_or_without_pagination_expect public function test_company_api_call_read_any_with_pagination_expect_several_per_page() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); $this->actingAs($user); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => 1, - 'per_page' => 25, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertSuccessful(); @@ -316,7 +244,7 @@ public function test_company_api_call_read_any_with_search_expect_filtered_resul $testName = Company::factory()->insertStringInName('testing')->make()->name; $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->count($companyCount) ->state(new Sequence( fn (Sequence $sequence) => [ @@ -329,13 +257,14 @@ public function test_company_api_call_read_any_with_search_expect_filtered_resul $this->actingAs($user); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => 'testing', - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], ])); $api->assertSuccessful(); @@ -357,13 +286,15 @@ public function test_company_api_call_read_any_with_search_expect_filtered_resul public function test_company_api_call_read_any_without_search_querystring_expect_failed() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); $this->actingAs($user); - $api = $this->getJson(route('api.get.db.company.company.read_any', [])); + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, + ])); $api->assertUnprocessable(); } @@ -371,19 +302,20 @@ public function test_company_api_call_read_any_without_search_querystring_expect public function test_company_api_call_read_any_with_special_char_in_search_expect_results() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); $this->actingAs($user); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, - 'search' => "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~", - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], ])); $api->assertSuccessful(); @@ -398,40 +330,32 @@ public function test_company_api_call_read_any_with_special_char_in_search_expec ]); } - public function test_company_api_call_read_any_with_negative_value_in_parameters_expect_results() + public function test_company_api_call_read_any_with_negative_value_in_parameters_expect_failed() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); $this->actingAs($user); - $api = $this->getJson(route('api.get.db.company.company.read_any', [ - 'userId' => $user->id, + $api = $this->getJson(route('api.get.company.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => -1, - 'per_page' => -10, 'refresh' => false, + 'paginate' => [ + 'page' => -1, + 'per_page' => -10, + ], ])); - $api->assertSuccessful(); - $api->assertJsonStructure([ - 'data', - 'links' => [ - 'first', 'last', 'prev', 'next', - ], - 'meta' => [ - 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', - ], - ]); + $api->assertStatus(422); } public function test_company_api_call_read_expect_successful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); @@ -439,7 +363,7 @@ public function test_company_api_call_read_expect_successful() $company = $user->companies()->inRandomOrder()->first(); - $api = $this->getJson(route('api.get.db.company.company.read', $company->ulid)); + $api = $this->getJson(route('api.get.company.read', $company->ulid)); $api->assertSuccessful(); } @@ -448,18 +372,18 @@ public function test_company_api_call_read_without_ulid_expect_exception() { $this->expectException(Exception::class); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); - $this->getJson(route('api.get.db.company.company.read', null)); + $this->getJson(route('api.get.company.read', null)); } public function test_company_api_call_read_with_nonexistance_ulid_expect_not_found() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); @@ -467,7 +391,7 @@ public function test_company_api_call_read_with_nonexistance_ulid_expect_not_fou $ulid = Str::ulid()->generate(); - $api = $this->getJson(route('api.get.db.company.company.read', $ulid)); + $api = $this->getJson(route('api.get.company.read', $ulid)); $api->assertStatus(404); } diff --git a/api/tests/Feature/API/CustomerAPI/CustomerAPICreateTest.php b/api/tests/Feature/API/CustomerAPI/CustomerAPICreateTest.php new file mode 100644 index 000000000..91ddfdd3f --- /dev/null +++ b/api/tests/Feature/API/CustomerAPI/CustomerAPICreateTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.save'), $customerArr); + + $api->assertUnauthorized(); + } + + public function test_customer_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.save'), $customerArr); + + $api->assertForbidden(); + } + + public function test_customer_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_customer_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.save'), $customerArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customers', [ + 'company_id' => $company->id, + 'code' => $customerArr['code'], + 'name' => $customerArr['name'], + ]); + } + + public function test_customer_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.save'), $customerArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_customer_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + Customer::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.save'), $customerArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customers', [ + 'company_id' => $company_2->id, + 'code' => $customerArr['code'], + 'name' => $customerArr['name'], + ]); + } + + public function test_customer_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $customerArr = []; + + $api = $this->json('POST', route('api.post.db.customer.customer.save'), $customerArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/CustomerAPI/CustomerAPIDeleteTest.php b/api/tests/Feature/API/CustomerAPI/CustomerAPIDeleteTest.php new file mode 100644 index 000000000..eedea9f01 --- /dev/null +++ b/api/tests/Feature/API/CustomerAPI/CustomerAPIDeleteTest.php @@ -0,0 +1,94 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customer = Customer::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.customer.customer.delete', $customer->ulid)); + + $api->assertUnauthorized(); + } + + public function test_customer_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customer = Customer::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.customer.customer.delete', $customer->ulid)); + + $api->assertForbidden(); + } + + public function test_customer_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customer = Customer::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.customer.customer.delete', $customer->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('customers', [ + 'id' => $customer->id, + ]); + } + + public function test_customer_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.db.customer.customer.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_customer_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + + $this->json('POST', route('api.post.db.customer.customer.delete', null)); + } +} diff --git a/api/tests/Feature/API/CustomerAPI/CustomerAPIEditTest.php b/api/tests/Feature/API/CustomerAPI/CustomerAPIEditTest.php new file mode 100644 index 000000000..59dc8d2de --- /dev/null +++ b/api/tests/Feature/API/CustomerAPI/CustomerAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customer = Customer::factory()->for($company)->create(); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.edit', $customer->ulid), $customerArr); + + $api->assertStatus(401); + } + + public function test_customer_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customer = Customer::factory()->for($company)->create(); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.edit', $customer->ulid), $customerArr); + + $api->assertStatus(403); + } + + public function test_customer_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customer = Customer::factory()->for($company)->create(); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.edit', $customer->ulid), $customerArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customers', [ + 'id' => $customer->id, + 'company_id' => $company->id, + 'code' => $customerArr['code'], + 'name' => $customerArr['name'], + ]); + } + + public function test_customer_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + Customer::factory()->for($company)->count(2)->create(); + + $customers = $company->customers()->inRandomOrder()->take(2)->get(); + $customer_1 = $customers[0]; + $customer_2 = $customers[1]; + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $customer_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.edit', $customer_2->ulid), $customerArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_customer_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + Customer::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $customer_2 = Customer::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $customerArr = Customer::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer.edit', $customer_2->ulid), $customerArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/CustomerAPI/CustomerAPIReadTest.php b/api/tests/Feature/API/CustomerAPI/CustomerAPIReadTest.php new file mode 100644 index 000000000..a26570bec --- /dev/null +++ b/api/tests/Feature/API/CustomerAPI/CustomerAPIReadTest.php @@ -0,0 +1,448 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(401); + } + + public function test_customer_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(403); + } + + public function test_customer_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $customer = Customer::factory()->for($company)->create(); + + $ulid = $customer->ulid; + + $api = $this->getJson(route('api.get.db.customer.customer.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_customer_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customer = Customer::factory()->for($company)->create(); + + $ulid = $customer->ulid; + + $api = $this->getJson(route('api.get.db.customer.customer.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_customer_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + "' OR '1'='1' --", + "' OR 1=1 --", + "admin'--", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR SLEEP(5)', + '1; SELECT pg_sleep(5); --', + ]; + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_customer_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_customer_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_customer_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company) + ->count(2)->create(); + + Customer::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_customer_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertStatus(422); + } + + public function test_customer_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_customer_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Customer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_customer_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customer = Customer::factory()->for($company)->create(); + + $ulid = $customer->ulid; + + $api = $this->getJson(route('api.get.db.customer.customer.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_customer_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.db.customer.customer.read', null)); + } + + public function test_customer_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.db.customer.customer.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPICreateTest.php b/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPICreateTest.php new file mode 100644 index 000000000..52b05529b --- /dev/null +++ b/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPICreateTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.save'), $customerAddressArr); + + $api->assertUnauthorized(); + } + + public function test_customer_address_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.save'), $customerAddressArr); + + $api->assertForbidden(); + } + + public function test_customer_address_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_address_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_customer_address_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.save'), $customerAddressArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customer_addresses', [ + 'company_id' => $company->id, + 'code' => $customerAddressArr['code'], + 'name' => $customerAddressArr['name'], + ]); + } + + public function test_customer_address_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_address_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.save'), $customerAddressArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_customer_address_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + CustomerAddress::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.save'), $customerAddressArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customer_addresses', [ + 'company_id' => $company_2->id, + 'code' => $customerAddressArr['code'], + 'name' => $customerAddressArr['name'], + ]); + } + + public function test_customer_address_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $customerAddressArr = []; + + $api = $this->json('POST', route('api.post.db.customer.customer_address.save'), $customerAddressArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIDeleteTest.php b/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIDeleteTest.php new file mode 100644 index 000000000..85ab021ec --- /dev/null +++ b/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.delete', $customerAddress->ulid)); + + $api->assertStatus(401); + } + + public function test_customer_address_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.delete', $customerAddress->ulid)); + + $api->assertStatus(403); + } + + public function test_customer_address_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.delete', $customerAddress->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('customer_addresses', [ + 'id' => $customerAddress->id, + ]); + } + + public function test_customer_address_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_customer_address_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.db.customer.customer_address.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIEditTest.php b/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIEditTest.php new file mode 100644 index 000000000..006131575 --- /dev/null +++ b/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.edit', $customerAddress->ulid), $customerAddressArr); + + $api->assertStatus(401); + } + + public function test_customer_address_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.edit', $customerAddress->ulid), $customerAddressArr); + + $api->assertStatus(403); + } + + public function test_customer_address_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_address_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_address_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.edit', $customerAddress->ulid), $customerAddressArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customer_addresses', [ + 'id' => $customerAddress->id, + 'company_id' => $company->id, + 'code' => $customerAddressArr['code'], + 'name' => $customerAddressArr['name'], + ]); + } + + public function test_customer_address_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_address_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + CustomerAddress::factory()->for($company)->count(2)->create(); + + $customerAddresses = $company->customerAddresses()->inRandomOrder()->take(2)->get(); + $customerAddress_1 = $customerAddresses[0]; + $customerAddress_2 = $customerAddresses[1]; + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $customerAddress_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.edit', $customerAddress_2->ulid), $customerAddressArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_customer_address_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + CustomerAddress::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $customerAddress_2 = CustomerAddress::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $customerAddressArr = CustomerAddress::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.customer.customer_address.edit', $customerAddress_2->ulid), $customerAddressArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIReadTest.php b/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIReadTest.php new file mode 100644 index 000000000..097941a1e --- /dev/null +++ b/api/tests/Feature/API/CustomerAddressAPI/CustomerAddressAPIReadTest.php @@ -0,0 +1,539 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(401); + } + + public function test_customer_address_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(403); + } + + public function test_customer_address_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $ulid = $customerAddress->ulid; + + $api = $this->getJson(route('api.get.db.customer.customer_address.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_customer_address_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $ulid = $customerAddress->ulid; + + $api = $this->getJson(route('api.get.db.customer.customer_address.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_customer_address_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + "' OR \'1\'=\'1", + '1 OR SLEEP(5)', + '1 AND (SELECT COUNT(*) FROM sysobjects) > 1', + "1 AND (SELECT * FROM users WHERE username = 'admin' AND SLEEP(5))", + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "SELECT * FROM users; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin' AND password LIKE '%a%')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR 1=1; DROP TABLE users; --', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = database()', + "1; EXEC xp_cmdshell('echo vulnerable'); --", + "' OR EXISTS(SELECT * FROM information_schema.tables WHERE table_schema='public' AND table_name='users' LIMIT 1) --", + "1'; EXEC sp_addrolemember 'db_owner', 'admin'; --", + "1' OR '1'='1'; -- EXEC master..xp_cmdshell 'echo vulnerable' --", + "1' UNION ALL SELECT NULL, NULL, NULL, NULL, NULL, NULL, CONCAT(username, ':', password) FROM users --", + '1; SELECT pg_sleep(5); --', + "1 AND SLEEP(5) AND 'abc'='abc", + "1 AND SLEEP(5) AND 'xyz'='xyz", + '1 OR 1=1; SELECT COUNT(*) FROM information_schema.tables;', + "1' UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' --", + '1 AND (SELECT * FROM (SELECT(SLEEP(5)))hOKz)', + "1' AND 1=(SELECT COUNT(*) FROM tabname); --", + "1'; WAITFOR DELAY '0:0:5' --", + "1 OR 1=1; WAITFOR DELAY '0:0:5' --", + "1; DECLARE @v VARCHAR(8000);SET @v = '';SELECT @v = @v + name + ', ' FROM sysobjects WHERE xtype = 'U';SELECT @v --", + "1; SELECT COUNT(*), CONCAT(table_name, ':', column_name) FROM information_schema.columns GROUP BY table_name, column_name HAVING COUNT(*) > 1; --", + '1; SELECT COUNT(*), table_name FROM information_schema.columns GROUP BY table_name HAVING COUNT(*) > 1; --', + "1' OR '1'='1'; SELECT COUNT(*) FROM information_schema.tables; --", + '1 AND (SELECT COUNT(*) FROM users) > 10', + '1 AND (SELECT COUNT(*) FROM users) > 100', + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin')", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR '1'='1", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR 'x'='x", + '1 AND (SELECT COUNT(*) FROM users) > 1; SELECT * FROM users;', + '1 OR 1=1; SELECT * FROM users;', + "1' OR 1=1; SELECT * FROM users;", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "' OR 1=1 --", + "admin'--", + "admin' #", + "' OR 'x'='x", + "' OR 'a'='a'", + "' OR 'a'='a'--", + "' OR 1=1", + "' OR 1=1--", + "' OR 1=1#", + "' OR 1=1 /*", + "' OR '1'='1'--", + "' OR '1'='1'/*", + "' OR '1'='1' #", + "' OR '1'='1' /*", + "' OR '1'='1' or ''='", + "' OR '1'='1' or 'a'='a", + "' OR '1'='1' or 'a'='a'--", + "' OR '1'='1' or 'a'='a'/*", + "' OR '1'='1' or 'a'='a' #", + "' OR '1'='1' or 'a'='a' /*", + '1; SELECT * FROM users WHERE 1=1', + '1; SELECT * FROM users WHERE 1=1--', + '1; SELECT * FROM users WHERE 1=1/*', + "1' OR 1=1; SELECT * FROM users WHERE 1=1", + "1' OR 1=1; SELECT * FROM users WHERE 1=1--", + "1' OR 1=1; SELECT * FROM users WHERE 1=1/*", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1' UNION SELECT username, password FROM users", + "1' OR '1'='1' UNION SELECT username, password FROM users--", + "1' OR '1'='1' UNION SELECT username, password FROM users/*", + "1' OR '1'='1' UNION SELECT username, password FROM users #", + "1' OR '1'='1' UNION SELECT username, password FROM users /*", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.tables", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema", + "' OR '", + "1' OR '1'='1' UNION SELECT NULL", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.columns", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM", + "' OR '1'='1' or", + ]; + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_customer_address_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_customer_address_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_customer_address_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company) + ->count(2)->create(); + + CustomerAddress::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_customer_address_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertStatus(422); + } + + public function test_customer_address_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_customer_address_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerAddress::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_customer_address_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerAddress = CustomerAddress::factory()->for($company)->create(); + + $ulid = $customerAddress->ulid; + + $api = $this->getJson(route('api.get.db.customer.customer_address.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_customer_address_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.db.customer.customer_address.read', null)); + } + + public function test_customer_address_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.db.customer.customer_address.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPICreateTest.php b/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPICreateTest.php new file mode 100644 index 000000000..0f1783cce --- /dev/null +++ b/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPICreateTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.save'), $customerGroupArr); + + $api->assertUnauthorized(); + } + + public function test_customer_group_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.save'), $customerGroupArr); + + $api->assertForbidden(); + } + + public function test_customer_group_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_group_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_customer_group_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.save'), $customerGroupArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customer_groups', [ + 'company_id' => $company->id, + 'code' => $customerGroupArr['code'], + 'name' => $customerGroupArr['name'], + ]); + } + + public function test_customer_group_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_group_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.save'), $customerGroupArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_customer_group_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + CustomerGroup::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.save'), $customerGroupArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customer_groups', [ + 'company_id' => $company_2->id, + 'code' => $customerGroupArr['code'], + 'name' => $customerGroupArr['name'], + ]); + } + + public function test_customer_group_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $customerGroupArr = []; + + $api = $this->json('POST', route('api.post.customer_group.save'), $customerGroupArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIDeleteTest.php b/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIDeleteTest.php new file mode 100644 index 000000000..72483fcd2 --- /dev/null +++ b/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.customer_group.delete', $customerGroup->ulid)); + + $api->assertStatus(401); + } + + public function test_customer_group_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.customer_group.delete', $customerGroup->ulid)); + + $api->assertStatus(403); + } + + public function test_customer_group_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.customer_group.delete', $customerGroup->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('customer_groups', [ + 'id' => $customerGroup->id, + ]); + } + + public function test_customer_group_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.customer_group.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_customer_group_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.customer_group.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIEditTest.php b/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIEditTest.php new file mode 100644 index 000000000..89177e913 --- /dev/null +++ b/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.edit', $customerGroup->ulid), $customerGroupArr); + + $api->assertStatus(401); + } + + public function test_customer_group_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.edit', $customerGroup->ulid), $customerGroupArr); + + $api->assertStatus(403); + } + + public function test_customer_group_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_group_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_group_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.edit', $customerGroup->ulid), $customerGroupArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('customer_groups', [ + 'id' => $customerGroup->id, + 'company_id' => $company->id, + 'code' => $customerGroupArr['code'], + 'name' => $customerGroupArr['name'], + ]); + } + + public function test_customer_group_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_customer_group_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + CustomerGroup::factory()->for($company)->count(2)->create(); + + $customerGroups = $company->customerGroups()->inRandomOrder()->take(2)->get(); + $customerGroup_1 = $customerGroups[0]; + $customerGroup_2 = $customerGroups[1]; + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $customerGroup_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.edit', $customerGroup_2->ulid), $customerGroupArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_customer_group_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + CustomerGroup::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $customerGroup_2 = CustomerGroup::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $customerGroupArr = CustomerGroup::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.customer_group.edit', $customerGroup_2->ulid), $customerGroupArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIReadTest.php b/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIReadTest.php new file mode 100644 index 000000000..a4c04b36b --- /dev/null +++ b/api/tests/Feature/API/CustomerGroupAPI/CustomerGroupAPIReadTest.php @@ -0,0 +1,434 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(401); + } + + public function test_customer_group_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(403); + } + + public function test_customer_group_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read', $customerGroup->ulid)); + + $api->assertStatus(401); + } + + public function test_customer_group_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read', $customerGroup->ulid)); + + $api->assertStatus(403); + } + + public function test_customer_group_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1 OR SLEEP(5)', + '1; DROP TABLE users', + "admin'--", + "1' OR '1'='1' UNION SELECT username, password FROM users", + ]; + + foreach ($injections as $injection) { + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injection, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injection, + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + } + + public function test_customer_group_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_customer_group_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_customer_group_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company) + ->count(2)->create(); + + CustomerGroup::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_customer_group_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + ])); + + $api->assertStatus(422); + } + + public function test_customer_group_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_customer_group_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => false, + 'paginate' => [ + 'page' => -1, + 'per_page' => -25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_customer_group_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $customerGroup = CustomerGroup::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.customer_group.read', $customerGroup->ulid)); + + $api->assertSuccessful(); + } + + public function test_customer_group_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.customer_group.read', null)); + } + + public function test_customer_group_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.customer_group.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/EmployeeAPI/EmployeeAPICreateTest.php b/api/tests/Feature/API/EmployeeAPI/EmployeeAPICreateTest.php new file mode 100644 index 000000000..f3bd0ab27 --- /dev/null +++ b/api/tests/Feature/API/EmployeeAPI/EmployeeAPICreateTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.save'), $employeeArr); + + $api->assertUnauthorized(); + } + + public function test_employee_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.save'), $employeeArr); + + $api->assertForbidden(); + } + + public function test_employee_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_employee_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_employee_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.save'), $employeeArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('employees', [ + 'company_id' => $company->id, + 'code' => $employeeArr['code'], + 'name' => $employeeArr['name'], + ]); + } + + public function test_employee_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_employee_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.save'), $employeeArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_employee_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + Employee::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.save'), $employeeArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('employees', [ + 'company_id' => $company_2->id, + 'code' => $employeeArr['code'], + 'name' => $employeeArr['name'], + ]); + } + + public function test_employee_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $employeeArr = []; + + $api = $this->json('POST', route('api.post.db.company.employee.save'), $employeeArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/EmployeeAPI/EmployeeAPIDeleteTest.php b/api/tests/Feature/API/EmployeeAPI/EmployeeAPIDeleteTest.php new file mode 100644 index 000000000..d8526b85a --- /dev/null +++ b/api/tests/Feature/API/EmployeeAPI/EmployeeAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $employee = Employee::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.company.employee.delete', $employee->ulid)); + + $api->assertStatus(401); + } + + public function test_employee_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $employee = Employee::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.company.employee.delete', $employee->ulid)); + + $api->assertStatus(403); + } + + public function test_employee_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $employee = Employee::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.company.employee.delete', $employee->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('employees', [ + 'id' => $employee->id, + ]); + } + + public function test_employee_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.db.company.employee.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_employee_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.db.company.employee.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/EmployeeAPI/EmployeeAPIEditTest.php b/api/tests/Feature/API/EmployeeAPI/EmployeeAPIEditTest.php new file mode 100644 index 000000000..ff080872a --- /dev/null +++ b/api/tests/Feature/API/EmployeeAPI/EmployeeAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $employee = Employee::factory()->for($company)->create(); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.edit', $employee->ulid), $employeeArr); + + $api->assertStatus(401); + } + + public function test_employee_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $employee = Employee::factory()->for($company)->create(); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.edit', $employee->ulid), $employeeArr); + + $api->assertStatus(403); + } + + public function test_employee_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_employee_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_employee_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $employee = Employee::factory()->for($company)->create(); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.edit', $employee->ulid), $employeeArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('employees', [ + 'id' => $employee->id, + 'company_id' => $company->id, + 'code' => $employeeArr['code'], + 'name' => $employeeArr['name'], + ]); + } + + public function test_employee_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_employee_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + Employee::factory()->for($company)->count(2)->create(); + + $employees = $company->employees()->inRandomOrder()->take(2)->get(); + $employee_1 = $employees[0]; + $employee_2 = $employees[1]; + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $employee_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.edit', $employee_2->ulid), $employeeArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_employee_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + Employee::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $employee_2 = Employee::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $employeeArr = Employee::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.company.employee.edit', $employee_2->ulid), $employeeArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/EmployeeAPI/EmployeeAPIReadTest.php b/api/tests/Feature/API/EmployeeAPI/EmployeeAPIReadTest.php new file mode 100644 index 000000000..60438acab --- /dev/null +++ b/api/tests/Feature/API/EmployeeAPI/EmployeeAPIReadTest.php @@ -0,0 +1,539 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(401); + } + + public function test_employee_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(403); + } + + public function test_employee_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $employee = Employee::factory()->for($company)->create(); + + $ulid = $employee->ulid; + + $api = $this->getJson(route('api.get.db.company.employee.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_employee_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $employee = Employee::factory()->for($company)->create(); + + $ulid = $employee->ulid; + + $api = $this->getJson(route('api.get.db.company.employee.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_employee_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + "' OR \'1\'=\'1", + '1 OR SLEEP(5)', + '1 AND (SELECT COUNT(*) FROM sysobjects) > 1', + "1 AND (SELECT * FROM users WHERE username = 'admin' AND SLEEP(5))", + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "SELECT * FROM users; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin' AND password LIKE '%a%')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR 1=1; DROP TABLE users; --', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = database()', + "1; EXEC xp_cmdshell('echo vulnerable'); --", + "' OR EXISTS(SELECT * FROM information_schema.tables WHERE table_schema='public' AND table_name='users' LIMIT 1) --", + "1'; EXEC sp_addrolemember 'db_owner', 'admin'; --", + "1' OR '1'='1'; -- EXEC master..xp_cmdshell 'echo vulnerable' --", + "1' UNION ALL SELECT NULL, NULL, NULL, NULL, NULL, NULL, CONCAT(username, ':', password) FROM users --", + '1; SELECT pg_sleep(5); --', + "1 AND SLEEP(5) AND 'abc'='abc", + "1 AND SLEEP(5) AND 'xyz'='xyz", + '1 OR 1=1; SELECT COUNT(*) FROM information_schema.tables;', + "1' UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' --", + '1 AND (SELECT * FROM (SELECT(SLEEP(5)))hOKz)', + "1' AND 1=(SELECT COUNT(*) FROM tabname); --", + "1'; WAITFOR DELAY '0:0:5' --", + "1 OR 1=1; WAITFOR DELAY '0:0:5' --", + "1; DECLARE @v VARCHAR(8000);SET @v = '';SELECT @v = @v + name + ', ' FROM sysobjects WHERE xtype = 'U';SELECT @v --", + "1; SELECT COUNT(*), CONCAT(table_name, ':', column_name) FROM information_schema.columns GROUP BY table_name, column_name HAVING COUNT(*) > 1; --", + '1; SELECT COUNT(*), table_name FROM information_schema.columns GROUP BY table_name HAVING COUNT(*) > 1; --', + "1' OR '1'='1'; SELECT COUNT(*) FROM information_schema.tables; --", + '1 AND (SELECT COUNT(*) FROM users) > 10', + '1 AND (SELECT COUNT(*) FROM users) > 100', + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin')", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR '1'='1", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR 'x'='x", + '1 AND (SELECT COUNT(*) FROM users) > 1; SELECT * FROM users;', + '1 OR 1=1; SELECT * FROM users;', + "1' OR 1=1; SELECT * FROM users;", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "' OR 1=1 --", + "admin'--", + "admin' #", + "' OR 'x'='x", + "' OR 'a'='a'", + "' OR 'a'='a'--", + "' OR 1=1", + "' OR 1=1--", + "' OR 1=1#", + "' OR 1=1 /*", + "' OR '1'='1'--", + "' OR '1'='1'/*", + "' OR '1'='1' #", + "' OR '1'='1' /*", + "' OR '1'='1' or ''='", + "' OR '1'='1' or 'a'='a", + "' OR '1'='1' or 'a'='a'--", + "' OR '1'='1' or 'a'='a'/*", + "' OR '1'='1' or 'a'='a' #", + "' OR '1'='1' or 'a'='a' /*", + '1; SELECT * FROM users WHERE 1=1', + '1; SELECT * FROM users WHERE 1=1--', + '1; SELECT * FROM users WHERE 1=1/*', + "1' OR 1=1; SELECT * FROM users WHERE 1=1", + "1' OR 1=1; SELECT * FROM users WHERE 1=1--", + "1' OR 1=1; SELECT * FROM users WHERE 1=1/*", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1' UNION SELECT username, password FROM users", + "1' OR '1'='1' UNION SELECT username, password FROM users--", + "1' OR '1'='1' UNION SELECT username, password FROM users/*", + "1' OR '1'='1' UNION SELECT username, password FROM users #", + "1' OR '1'='1' UNION SELECT username, password FROM users /*", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.tables", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema", + "' OR '", + "1' OR '1'='1' UNION SELECT NULL", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.columns", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM", + "' OR '1'='1' or", + ]; + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_employee_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_employee_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_employee_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company) + ->count(2)->create(); + + Employee::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_employee_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertStatus(422); + } + + public function test_employee_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_employee_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Employee::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.company.employee.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_employee_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $employee = Employee::factory()->for($company)->create(); + + $ulid = $employee->ulid; + + $api = $this->getJson(route('api.get.db.company.employee.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_employee_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.db.company.employee.read', null)); + } + + public function test_employee_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.db.company.employee.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/InvestorAPI/InvestorAPICreateTest.php b/api/tests/Feature/API/InvestorAPI/InvestorAPICreateTest.php new file mode 100644 index 000000000..1c52597b9 --- /dev/null +++ b/api/tests/Feature/API/InvestorAPI/InvestorAPICreateTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.save'), $payload); + + $api->assertUnauthorized(); + } + + public function test_investor_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.save'), $payload); + + $api->assertForbidden(); + } + + public function test_investor_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_investor_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_investor_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('investors', [ + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_investor_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_investor_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.save'), $payload); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_investor_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + Investor::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('investors', [ + 'company_id' => $company_2->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_investor_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $payload = []; + + $api = $this->json('POST', route('api.post.investor.save'), $payload); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/InvestorAPI/InvestorAPIDeleteTest.php b/api/tests/Feature/API/InvestorAPI/InvestorAPIDeleteTest.php new file mode 100644 index 000000000..b1d107032 --- /dev/null +++ b/api/tests/Feature/API/InvestorAPI/InvestorAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $investor = Investor::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.investor.delete', $investor->ulid)); + + $api->assertStatus(401); + } + + public function test_investor_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $investor = Investor::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.investor.delete', $investor->ulid)); + + $api->assertStatus(403); + } + + public function test_investor_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $investor = Investor::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.investor.delete', $investor->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('investors', [ + 'id' => $investor->id, + ]); + } + + public function test_investor_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.investor.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_investor_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.investor.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/InvestorAPI/InvestorAPIEditTest.php b/api/tests/Feature/API/InvestorAPI/InvestorAPIEditTest.php new file mode 100644 index 000000000..0505267f1 --- /dev/null +++ b/api/tests/Feature/API/InvestorAPI/InvestorAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $investor = Investor::factory()->for($company)->create(); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.edit', $investor->ulid), $payload); + + $api->assertStatus(401); + } + + public function test_investor_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $investor = Investor::factory()->for($company)->create(); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.edit', $investor->ulid), $payload); + + $api->assertStatus(403); + } + + public function test_investor_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_investor_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_investor_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $investor = Investor::factory()->for($company)->create(); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.edit', $investor->ulid), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('investors', [ + 'id' => $investor->id, + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_investor_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_investor_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + Investor::factory()->for($company)->count(2)->create(); + + $investors = $company->investors()->inRandomOrder()->take(2)->get(); + $investor_1 = $investors[0]; + $investor_2 = $investors[1]; + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $investor_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.edit', $investor_2->ulid), $payload); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_investor_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + Investor::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $investor_2 = Investor::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $payload = Investor::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.investor.edit', $investor_2->ulid), $payload); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/InvestorAPI/InvestorAPIReadTest.php b/api/tests/Feature/API/InvestorAPI/InvestorAPIReadTest.php new file mode 100644 index 000000000..7ad02777f --- /dev/null +++ b/api/tests/Feature/API/InvestorAPI/InvestorAPIReadTest.php @@ -0,0 +1,451 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(401); + } + + public function test_investor_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(403); + } + + public function test_investor_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $investor = Investor::factory()->for($company)->create(); + + $ulid = $investor->ulid; + + $api = $this->getJson(route('api.get.investor.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_investor_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $investor = Investor::factory()->for($company)->create(); + + $ulid = $investor->ulid; + + $api = $this->getJson(route('api.get.investor.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_investor_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + "' OR '1'='1' --", + "' OR 1=1 --", + "admin'--", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR SLEEP(5)', + '1; SELECT pg_sleep(5); --', + ]; + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_investor_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_investor_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_investor_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company) + ->count(2)->create(); + + Investor::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_investor_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + ])); + + $api->assertStatus(422); + } + + public function test_investor_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_investor_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Investor::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.investor.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => false, + 'paginate' => [ + 'page' => -1, + 'per_page' => -25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_investor_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $investor = Investor::factory()->for($company)->create(); + + $ulid = $investor->ulid; + + $api = $this->getJson(route('api.get.investor.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_investor_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.investor.read', null)); + } + + public function test_investor_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.investor.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/ProductAPI/ProductAPICreateTest.php b/api/tests/Feature/API/ProductAPI/ProductAPICreateTest.php new file mode 100644 index 000000000..5187db8fa --- /dev/null +++ b/api/tests/Feature/API/ProductAPI/ProductAPICreateTest.php @@ -0,0 +1,253 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $productCategory = $company->productCategories()->inRandomOrder()->first(); + $brand = $company->brands()->inRandomOrder()->first(); + + $productArr = Product::factory()->make([ + 'product_category_id' => Hashids::encode($productCategory->id), + 'brand_id' => Hashids::encode($brand->id), + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.save'), $productArr); + + $api->assertUnauthorized(); + } + + public function test_product_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $productCategory = $company->productCategories()->inRandomOrder()->first(); + $brand = $company->brands()->inRandomOrder()->first(); + + $productArr = Product::factory()->make([ + 'product_category_id' => Hashids::encode($productCategory->id), + 'brand_id' => Hashids::encode($brand->id), + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.save'), $productArr); + + $api->assertForbidden(); + } + + public function test_product_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_product_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_product_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $productArr = (new ProductSeeder)->makeProductUnits(encode: true)->toArray(); + + // $company = $user->companies()->inRandomOrder()->first(); + // $productCategory = $company->productCategories()->inRandomOrder()->first(); + // $brand = $company->brands()->inRandomOrder()->first(); + + // $productArr = Product::factory()->make([ + // 'product_category_id' => Hashids::encode($productCategory->id), + // 'brand_id' => Hashids::encode($brand->id), + // 'company_id' => Hashids::encode($company->id), + // ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.save'), $productArr); + + $api->assertSuccessful(); + + $productArr['product_unit_id'] = HashidsHelper::decodeId($api['data']['product_unit']['id']); + + $this->assertDatabaseHas('products', [ + 'product_category_id' => Hashids::decode($productArr['product_category_id'])[0], + 'brand_id' => Hashids::decode($productArr['brand_id'])[0], + 'company_id' => Hashids::decode($productArr['company_id'])[0], + 'code' => $productArr['code'], + 'name' => $productArr['name'], + 'product_type' => $productArr['product_type'], + 'taxable_supply' => $productArr['taxable_supply'], + 'standard_rated_supply' => $productArr['standard_rated_supply'], + 'price_include_vat' => $productArr['price_include_vat'], + 'point' => $productArr['point'], + 'use_serial_number' => $productArr['use_serial_number'], + 'has_expiry_date' => $productArr['has_expiry_date'], + 'status' => $productArr['status'], + 'remarks' => $productArr['remarks'], + ]); + } + + // public function test_product_api_call_store_expect_successful() + // { + // $user = User::factory() + // ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + // ->has(Company::factory()->setStatusActive()->setIsDefault() + // ->has(ProductCategory::factory()->count(3)) + // ->has(Brand::factory()->count(3))) + // ->create(); + + // $this->actingAs($user); + + // $productArr = (new ProductSeeder())->make(encode: true)->toArray(); + + // $api = $this->json('POST', route('api.post.db.product.product.save'), $productArr); + + // $api->assertSuccessful(); + + // $productArr['product_unit_id'] = HashidsHelper::decodeId($api['data']['product_unit']['id']); + + // $this->assertDatabaseHas('products', [ + // 'product_category_id' => Hashids::decode($productArr['product_category_id'])[0], + // 'brand_id' => Hashids::decode($productArr['brand_id'])[0], + // 'company_id' => Hashids::decode($productArr['company_id'])[0], + // 'code' => $productArr['code'], + // 'name' => $productArr['name'], + // 'product_type' => $productArr['product_type'], + // 'taxable_supply' => $productArr['taxable_supply'], + // 'standard_rated_supply' => $productArr['standard_rated_supply'], + // 'price_include_vat' => $productArr['price_include_vat'], + // 'point' => $productArr['point'], + // 'use_serial_number' => $productArr['use_serial_number'], + // 'has_expiry_date' => $productArr['has_expiry_date'], + // 'status' => $productArr['status'], + // 'remarks' => $productArr['remarks'], + // ]); + // } + + public function test_product_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_product_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $productArr = Product::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.save'), $productArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_product_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + Product::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $productArr = Product::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.save'), $productArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('products', [ + 'company_id' => $company_2->id, + 'code' => $productArr['code'], + 'name' => $productArr['name'], + ]); + } + + public function test_product_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $productArr = []; + + $api = $this->json('POST', route('api.post.db.product.product.save'), $productArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/ProductAPI/ProductAPIDeleteTest.php b/api/tests/Feature/API/ProductAPI/ProductAPIDeleteTest.php new file mode 100644 index 000000000..ade327d9f --- /dev/null +++ b/api/tests/Feature/API/ProductAPI/ProductAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $product = Product::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.product.product.delete', $product->ulid)); + + $api->assertStatus(401); + } + + public function test_product_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $product = Product::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.product.product.delete', $product->ulid)); + + $api->assertStatus(403); + } + + public function test_product_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $product = Product::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.product.product.delete', $product->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('products', [ + 'id' => $product->id, + ]); + } + + public function test_product_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.db.product.product.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_product_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.db.product.product.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/ProductAPI/ProductAPIEditTest.php b/api/tests/Feature/API/ProductAPI/ProductAPIEditTest.php new file mode 100644 index 000000000..573ca37db --- /dev/null +++ b/api/tests/Feature/API/ProductAPI/ProductAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $product = Product::factory()->for($company)->create(); + + $productArr = Product::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.edit', $product->ulid), $productArr); + + $api->assertStatus(401); + } + + public function test_product_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $product = Product::factory()->for($company)->create(); + + $productArr = Product::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.edit', $product->ulid), $productArr); + + $api->assertStatus(403); + } + + public function test_product_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_product_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_product_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $product = Product::factory()->for($company)->create(); + + $productArr = Product::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.edit', $product->ulid), $productArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('products', [ + 'id' => $product->id, + 'company_id' => $company->id, + 'code' => $productArr['code'], + 'name' => $productArr['name'], + ]); + } + + public function test_product_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_product_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + Product::factory()->for($company)->count(2)->create(); + + $products = $company->products()->inRandomOrder()->take(2)->get(); + $product_1 = $products[0]; + $product_2 = $products[1]; + + $productArr = Product::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $product_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.edit', $product_2->ulid), $productArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_product_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + Product::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $product_2 = Product::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $productArr = Product::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.product.product.edit', $product_2->ulid), $productArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/ProductAPI/ProductAPIReadTest.php b/api/tests/Feature/API/ProductAPI/ProductAPIReadTest.php new file mode 100644 index 000000000..774e78e79 --- /dev/null +++ b/api/tests/Feature/API/ProductAPI/ProductAPIReadTest.php @@ -0,0 +1,569 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $productCategory = ProductCategory::inRandomOrder()->first(); + $brand = Brand::inRandomOrder()->first(); + + Product::factory()->for($company)->where('product_category_id', '=', $productCategory->id)->where('brand_id', '=', $brand->id)->create(); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(401); + } + + public function test_product_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(403); + } + + public function test_product_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $product = Product::factory()->for($company)->create(); + + $ulid = $product->ulid; + + $api = $this->getJson(route('api.get.db.product.product.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_product_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $product = Product::factory()->for($company)->create(); + + $ulid = $product->ulid; + + $api = $this->getJson(route('api.get.db.product.product.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_product_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + "' OR \'1\'=\'1", + '1 OR SLEEP(5)', + '1 AND (SELECT COUNT(*) FROM sysobjects) > 1', + "1 AND (SELECT * FROM users WHERE username = 'admin' AND SLEEP(5))", + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "SELECT * FROM users; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin' AND password LIKE '%a%')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR 1=1; DROP TABLE users; --', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = database()', + "1; EXEC xp_cmdshell('echo vulnerable'); --", + "' OR EXISTS(SELECT * FROM information_schema.tables WHERE table_schema='public' AND table_name='users' LIMIT 1) --", + "1'; EXEC sp_addrolemember 'db_owner', 'admin'; --", + "1' OR '1'='1'; -- EXEC master..xp_cmdshell 'echo vulnerable' --", + "1' UNION ALL SELECT NULL, NULL, NULL, NULL, NULL, NULL, CONCAT(username, ':', password) FROM users --", + '1; SELECT pg_sleep(5); --', + "1 AND SLEEP(5) AND 'abc'='abc", + "1 AND SLEEP(5) AND 'xyz'='xyz", + '1 OR 1=1; SELECT COUNT(*) FROM information_schema.tables;', + "1' UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' --", + '1 AND (SELECT * FROM (SELECT(SLEEP(5)))hOKz)', + "1' AND 1=(SELECT COUNT(*) FROM tabname); --", + "1'; WAITFOR DELAY '0:0:5' --", + "1 OR 1=1; WAITFOR DELAY '0:0:5' --", + "1; DECLARE @v VARCHAR(8000);SET @v = '';SELECT @v = @v + name + ', ' FROM sysobjects WHERE xtype = 'U';SELECT @v --", + "1; SELECT COUNT(*), CONCAT(table_name, ':', column_name) FROM information_schema.columns GROUP BY table_name, column_name HAVING COUNT(*) > 1; --", + '1; SELECT COUNT(*), table_name FROM information_schema.columns GROUP BY table_name HAVING COUNT(*) > 1; --', + "1' OR '1'='1'; SELECT COUNT(*) FROM information_schema.tables; --", + '1 AND (SELECT COUNT(*) FROM users) > 10', + '1 AND (SELECT COUNT(*) FROM users) > 100', + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin')", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR '1'='1", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR 'x'='x", + '1 AND (SELECT COUNT(*) FROM users) > 1; SELECT * FROM users;', + '1 OR 1=1; SELECT * FROM users;', + "1' OR 1=1; SELECT * FROM users;", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "' OR 1=1 --", + "admin'--", + "admin' #", + "' OR 'x'='x", + "' OR 'a'='a'", + "' OR 'a'='a'--", + "' OR 1=1", + "' OR 1=1--", + "' OR 1=1#", + "' OR 1=1 /*", + "' OR '1'='1'--", + "' OR '1'='1'/*", + "' OR '1'='1' #", + "' OR '1'='1' /*", + "' OR '1'='1' or ''='", + "' OR '1'='1' or 'a'='a", + "' OR '1'='1' or 'a'='a'--", + "' OR '1'='1' or 'a'='a'/*", + "' OR '1'='1' or 'a'='a' #", + "' OR '1'='1' or 'a'='a' /*", + '1; SELECT * FROM users WHERE 1=1', + '1; SELECT * FROM users WHERE 1=1--', + '1; SELECT * FROM users WHERE 1=1/*', + "1' OR 1=1; SELECT * FROM users WHERE 1=1", + "1' OR 1=1; SELECT * FROM users WHERE 1=1--", + "1' OR 1=1; SELECT * FROM users WHERE 1=1/*", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1' UNION SELECT username, password FROM users", + "1' OR '1'='1' UNION SELECT username, password FROM users--", + "1' OR '1'='1' UNION SELECT username, password FROM users/*", + "1' OR '1'='1' UNION SELECT username, password FROM users #", + "1' OR '1'='1' UNION SELECT username, password FROM users /*", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.tables", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema", + "' OR '", + "1' OR '1'='1' UNION SELECT NULL", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.columns", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM", + "' OR '1'='1' or", + ]; + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_product_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_product_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_product_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company) + ->count(2)->create(); + + Product::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_product_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertStatus(422); + } + + public function test_product_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_product_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Product::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.product.product.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_product_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $product = Product::factory()->for($company)->create(); + + $ulid = $product->ulid; + + $api = $this->getJson(route('api.get.db.product.product.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_product_api_call_read_without_ulid_expect_exception() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.db.product.product.read', null)); + } + + public function test_product_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.db.product.product.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPICreateTest.php b/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPICreateTest.php new file mode 100644 index 000000000..39cace3e6 --- /dev/null +++ b/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPICreateTest.php @@ -0,0 +1,180 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('product_categories', [ + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'type' => $payload['type'], + ]); + } + + public function test_product_category_api_call_store_with_auto_code_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => Config::get('dcslab.KEYWORDS.AUTO'), + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('product_categories', [ + 'company_id' => $company->id, + 'name' => $payload['name'], + 'type' => $payload['type'], + ]); + + $this->assertDatabaseMissing('product_categories', [ + 'company_id' => $company->id, + 'code' => Config::get('dcslab.KEYWORDS.AUTO'), + ]); + } + + public function test_product_category_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.save'), $payload); + + $api->assertUnprocessable(); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_product_category_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + $company_2 = $companies[1]; + + ProductCategory::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('product_categories', [ + 'company_id' => $company_2->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'type' => $payload['type'], + ]); + } + + public function test_product_category_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $payload = []; + + $api = $this->json('POST', route('api.post.product_category.save'), $payload); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name', 'type']); + } + + public function test_product_category_api_call_store_with_sql_injection_payload_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => "'; DROP TABLE product_categories; --", + 'name' => "'; DROP TABLE product_categories; --", + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.save'), $payload); + + $api->assertSuccessful(); + + $this->assertDatabaseHas('product_categories', [ + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } +} diff --git a/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIDeleteTest.php b/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIDeleteTest.php new file mode 100644 index 000000000..e89c228d5 --- /dev/null +++ b/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIDeleteTest.php @@ -0,0 +1,119 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $productCategory = ProductCategory::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.product_category.delete', $productCategory->ulid)); + + $api->assertUnauthorized(); + } + + public function test_product_category_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $productCategory = ProductCategory::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.product_category.delete', $productCategory->ulid)); + + $api->assertForbidden(); + } + + public function test_product_category_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $productCategory = ProductCategory::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.product_category.delete', $productCategory->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('product_categories', [ + 'id' => $productCategory->id, + ]); + } + + public function test_product_category_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.product_category.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_product_category_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.product_category.delete', null)); + } + + public function test_product_category_api_call_delete_with_sql_injection_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + '1 OR SLEEP(5)', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + "admin'--", + "' OR 1=1 --", + ]; + + $testIdx = random_int(0, count($injections) - 1); + $injection = $injections[$testIdx]; + + $api = $this->json('POST', route('api.post.product_category.delete', $injection)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIEditTest.php b/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIEditTest.php new file mode 100644 index 000000000..d25916283 --- /dev/null +++ b/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIEditTest.php @@ -0,0 +1,142 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $productCategory = ProductCategory::factory()->for($company)->create(); + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.edit', $productCategory->ulid), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('product_categories', [ + 'id' => $productCategory->id, + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'type' => $payload['type'], + ]); + } + + public function test_product_category_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company)->count(2)->create(); + + $productCategories = $company->productCategories()->inRandomOrder()->take(2)->get(); + $productCategory_1 = $productCategories[0]; + $productCategory_2 = $productCategories[1]; + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $productCategory_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.edit', $productCategory_2->ulid), $payload); + + $api->assertUnprocessable(); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_product_category_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + $company_2 = $companies[1]; + + ProductCategory::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $productCategory_2 = ProductCategory::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.edit', $productCategory_2->ulid), $payload); + + $api->assertSuccessful(); + + $this->assertDatabaseHas('product_categories', [ + 'id' => $productCategory_2->id, + 'company_id' => $company_2->id, + 'code' => 'test1', + ]); + } + + public function test_product_category_api_call_update_with_sql_injection_payload_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $productCategory = ProductCategory::factory()->for($company)->create(); + + $payload = ProductCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => "'; DROP TABLE product_categories; --", + 'name' => "'; DROP TABLE product_categories; --", + ])->toArray(); + + $api = $this->json('POST', route('api.post.product_category.edit', $productCategory->ulid), $payload); + + $api->assertSuccessful(); + + $this->assertDatabaseHas('product_categories', [ + 'id' => $productCategory->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } +} diff --git a/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIReadTest.php b/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIReadTest.php new file mode 100644 index 000000000..49b74a2a0 --- /dev/null +++ b/api/tests/Feature/API/ProductCategoryAPI/ProductCategoryAPIReadTest.php @@ -0,0 +1,364 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + '1 OR SLEEP(5)', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + "admin'--", + "' OR 1=1 --", + ]; + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'type' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'type' => null, + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_product_category_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'type' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'type' => null, + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + ]); + } + + public function test_product_category_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company)->count(30)->create(); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'type' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_product_category_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company)->count(2)->create(); + + ProductCategory::factory()->for($company) + ->create([ + 'name' => 'testing', + ]); + + ProductCategory::factory()->for($company) + ->create([ + 'code' => 'testing_code', + ]); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'type' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 2, + ]); + } + + public function test_product_category_api_call_read_any_without_required_parameters_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertUnprocessable(); + } + + public function test_product_category_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'type' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_product_category_api_call_read_any_with_type_filter_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + ProductCategory::factory()->for($company) + ->create([ + 'type' => ProductCategoryTypeEnum::PRODUCT, + ]); + + ProductCategory::factory()->for($company) + ->create([ + 'type' => ProductCategoryTypeEnum::SERVICE, + ]); + + $api = $this->getJson(route('api.get.product_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'type' => ProductCategoryTypeEnum::PRODUCT->value, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 1, + ]); + } + + public function test_product_category_api_call_read_single_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $productCategory = ProductCategory::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.product_category.read', $productCategory->ulid)); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + ]); + } +} diff --git a/api/tests/Feature/API/ProfileAPI/ProfileAPITest.php b/api/tests/Feature/API/ProfileAPI/ProfileAPITest.php index 0ad28c4cb..3661ddfcd 100644 --- a/api/tests/Feature/API/ProfileAPI/ProfileAPITest.php +++ b/api/tests/Feature/API/ProfileAPI/ProfileAPITest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\ProfileAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Profile; use App\Models\Role; use App\Models\Setting; @@ -25,7 +25,7 @@ public function test_profile_api_call_read_profile_expect_result() public function test_profile_api_call_update_user_profile_expect_successful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); @@ -45,7 +45,7 @@ public function test_profile_api_call_update_user_profile_expect_successful() public function test_profile_api_call_update_user_profile_other_than_alpha_numeric_expect_unsuccessful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); @@ -69,7 +69,7 @@ public function test_profile_api_call_update_personal_info_expect_successful() { $user = User::factory() ->has(Profile::factory()) - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Setting::factory()->createDefaultSetting_PREF_THEME()) ->has(Setting::factory()->createDefaultSetting_PREF_DATE_FORMAT()) ->has(Setting::factory()->createDefaultSetting_PREF_TIME_FORMAT()) @@ -100,7 +100,7 @@ public function test_profile_api_call_update_personal_info_expect_successful() public function test_profile_api_call_change_password_expect_successful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); @@ -126,7 +126,7 @@ public function test_profile_api_call_update_account_settings_expect_successful( $this->markTestSkipped('Test under construction'); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Setting::factory()->createDefaultSetting_PREF_THEME()) ->has(Setting::factory()->createDefaultSetting_PREF_DATE_FORMAT()) ->has(Setting::factory()->createDefaultSetting_PREF_TIME_FORMAT()) @@ -167,7 +167,7 @@ public function test_profile_api_call_update_roles_expect_successful() $this->markTestSkipped('Test under construction'); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Role::factory()->count(3)) ->has(Setting::factory()->createDefaultSetting_PREF_THEME()) ->has(Setting::factory()->createDefaultSetting_PREF_DATE_FORMAT()) diff --git a/api/tests/Feature/API/RoleAPI/RoleAPIReadTest.php b/api/tests/Feature/API/RoleAPI/RoleAPIReadTest.php index 7a528cde2..5b0f14867 100644 --- a/api/tests/Feature/API/RoleAPI/RoleAPIReadTest.php +++ b/api/tests/Feature/API/RoleAPI/RoleAPIReadTest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\RoleAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Role; use App\Models\User; use Tests\APITestCase; @@ -17,10 +17,12 @@ protected function setUp(): void public function test_role_api_call_read_any_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); - $api = $this->getJson(route('api.get.db.admin.role.read_any', [])); + $api = $this->getJson(route('api.get.db.admin.role.read_any', [ + 'with_trashed' => false, + ])); $api->assertUnauthorized(); } @@ -34,7 +36,9 @@ public function test_role_api_call_read_any_without_access_right_expect_unauthor $this->actingAs($user); - $api = $this->getJson(route('api.get.db.admin.role.read_any', [])); + $api = $this->getJson(route('api.get.db.admin.role.read_any', [ + 'with_trashed' => false, + ])); $api->assertForbidden(); } @@ -42,12 +46,14 @@ public function test_role_api_call_read_any_without_access_right_expect_unauthor public function test_role_api_call_read_any_expect_collection() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); - $api = $this->getJson(route('api.get.db.admin.role.read_any', [])); + $api = $this->getJson(route('api.get.db.admin.role.read_any', [ + 'with_trashed' => false, + ])); $api->assertSuccessful(); } diff --git a/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPICreateTest.php b/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPICreateTest.php new file mode 100644 index 000000000..ff69198ba --- /dev/null +++ b/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPICreateTest.php @@ -0,0 +1,235 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload); + + $api->assertUnauthorized(); + } + + public function test_stock_adjustment_category_api_call_store_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload); + + $api->assertForbidden(); + } + + public function test_stock_adjustment_category_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'name' => '', + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_adjustment_categories', [ + 'company_id' => $company->id, + 'name' => 'alert("xss")', + ]); + } + + public function test_stock_adjustment_category_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'name' => '', + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload, ['X-Sanitizer-Mode' => 'encode']); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_adjustment_categories', [ + 'company_id' => $company->id, + 'name' => '<script>alert("xss")</script>', + ]); + } + + public function test_stock_adjustment_category_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_adjustment_categories', [ + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_adjustment_category_api_call_store_with_auto_code_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => Config::get('dcslab.KEYWORDS.AUTO'), + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_adjustment_categories', [ + 'company_id' => $company->id, + 'name' => $payload['name'], + ]); + } + + public function test_stock_adjustment_category_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockAdjustmentCategory::factory()->for($company)->create([ + 'code' => 'TEST1', + ]); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'TEST1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_stock_adjustment_category_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + $company_2 = $companies[1]; + + StockAdjustmentCategory::factory()->for($company_1)->create([ + 'code' => 'TEST1', + ]); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'TEST1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_adjustment_categories', [ + 'company_id' => $company_2->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_adjustment_category_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $payload = []; + + $api = $this->json('POST', route('api.post.stock_adjustment_category.save'), $payload); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIDeleteTest.php b/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIDeleteTest.php new file mode 100644 index 000000000..89c0dd22a --- /dev/null +++ b/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIDeleteTest.php @@ -0,0 +1,98 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $category = StockAdjustmentCategory::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.delete', $category->ulid)); + + $api->assertUnauthorized(); + } + + public function test_stock_adjustment_category_api_call_delete_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $category = StockAdjustmentCategory::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.delete', $category->ulid)); + + $api->assertForbidden(); + } + + public function test_stock_adjustment_category_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $category = StockAdjustmentCategory::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.delete', $category->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('stock_adjustment_categories', [ + 'id' => $category->id, + ]); + } + + public function test_stock_adjustment_category_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_stock_adjustment_category_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + + $user = User::factory()->create(); + + $this->actingAs($user); + + $this->json('POST', route('api.post.stock_adjustment_category.delete', null)); + } +} diff --git a/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIEditTest.php b/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIEditTest.php new file mode 100644 index 000000000..79e03d4b9 --- /dev/null +++ b/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIEditTest.php @@ -0,0 +1,150 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockAdjustmentCategory = StockAdjustmentCategory::factory()->for($company)->create(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.edit', $stockAdjustmentCategory->ulid), $payload); + + $api->assertStatus(401); + } + + public function test_stock_adjustment_category_api_call_update_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockAdjustmentCategory = StockAdjustmentCategory::factory()->for($company)->create(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.edit', $stockAdjustmentCategory->ulid), $payload); + + $api->assertStatus(403); + } + + public function test_stock_adjustment_category_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockAdjustmentCategory = StockAdjustmentCategory::factory()->for($company)->create(); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.edit', $stockAdjustmentCategory->ulid), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_adjustment_categories', [ + 'id' => $stockAdjustmentCategory->id, + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_adjustment_category_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockAdjustmentCategory::factory()->for($company)->count(2)->create(); + + $categories = $company->stockAdjustmentCategories()->inRandomOrder()->take(2)->get(); + $category1 = $categories[0]; + $category2 = $categories[1]; + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $category1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.edit', $category2->ulid), $payload); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_stock_adjustment_category_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company1 = $companies[0]; + StockAdjustmentCategory::factory()->for($company1)->create([ + 'code' => 'TEST1', + ]); + + $company2 = $companies[1]; + $category2 = StockAdjustmentCategory::factory()->for($company2)->create([ + 'code' => 'TEST2', + ]); + + $payload = StockAdjustmentCategory::factory()->make([ + 'company_id' => Hashids::encode($company2->id), + 'code' => 'TEST1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.stock_adjustment_category.edit', $category2->ulid), $payload); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIReadTest.php b/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIReadTest.php new file mode 100644 index 000000000..66907efd6 --- /dev/null +++ b/api/tests/Feature/API/StockAdjustmentCategoryAPI/StockAdjustmentCategoryAPIReadTest.php @@ -0,0 +1,307 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + StockAdjustmentCategory::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.stock_adjustment_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(401); + } + + public function test_stock_adjustment_category_api_call_read_any_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockAdjustmentCategory::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.stock_adjustment_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertStatus(403); + } + + public function test_stock_adjustment_category_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockAdjustmentCategory = StockAdjustmentCategory::factory()->for($company)->create(); + + $ulid = $stockAdjustmentCategory->ulid; + + $api = $this->getJson(route('api.get.stock_adjustment_category.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_stock_adjustment_category_api_call_read_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockAdjustmentCategory = StockAdjustmentCategory::factory()->for($company)->create(); + + $ulid = $stockAdjustmentCategory->ulid; + + $api = $this->getJson(route('api.get.stock_adjustment_category.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_stock_adjustment_category_api_call_read_any_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockAdjustmentCategory::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + '1 OR SLEEP(5)', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + "admin'--", + "' OR 1=1 --", + ]; + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.stock_adjustment_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.stock_adjustment_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_stock_adjustment_category_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockAdjustmentCategory::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.stock_adjustment_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.stock_adjustment_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + ]); + } + + public function test_stock_adjustment_category_api_call_read_any_with_search_expect_filtered() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockAdjustmentCategory::factory()->for($company)->create([ + 'name' => 'Adjustment Category 1', + ]); + + StockAdjustmentCategory::factory()->for($company)->create([ + 'name' => 'Another Category', + ]); + + $api = $this->getJson(route('api.get.stock_adjustment_category.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'Adjustment Category 1', + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonFragment([ + 'name' => 'Adjustment Category 1', + ]); + $api->assertJsonMissing([ + 'name' => 'Another Category', + ]); + } + + public function test_stock_adjustment_category_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockAdjustmentCategory = StockAdjustmentCategory::factory()->for($company)->create(); + + $ulid = $stockAdjustmentCategory->ulid; + + $api = $this->getJson(route('api.get.stock_adjustment_category.read', $ulid)); + + $api->assertSuccessful(); + $api->assertJsonFragment([ + 'name' => $stockAdjustmentCategory->name, + ]); + } + + public function test_stock_adjustment_category_api_call_read_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.stock_adjustment_category.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/StockTransferAPI/StockTransferAPICreateTest.php b/api/tests/Feature/API/StockTransferAPI/StockTransferAPICreateTest.php new file mode 100644 index 000000000..2bc575563 --- /dev/null +++ b/api/tests/Feature/API/StockTransferAPI/StockTransferAPICreateTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.save'), $stockTransferArr); + + $api->assertUnauthorized(); + } + + public function test_stock_transfer_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.save'), $stockTransferArr); + + $api->assertForbidden(); + } + + public function test_stock_transfer_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_stock_transfer_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.save'), $stockTransferArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfers', [ + 'company_id' => $company->id, + 'code' => $stockTransferArr['code'], + 'name' => $stockTransferArr['name'], + ]); + } + + public function test_stock_transfer_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.save'), $stockTransferArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_stock_transfer_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + StockTransfer::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.save'), $stockTransferArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfers', [ + 'company_id' => $company_2->id, + 'code' => $stockTransferArr['code'], + 'name' => $stockTransferArr['name'], + ]); + } + + public function test_stock_transfer_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $stockTransferArr = []; + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.save'), $stockTransferArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/StockTransferAPI/StockTransferAPIDeleteTest.php b/api/tests/Feature/API/StockTransferAPI/StockTransferAPIDeleteTest.php new file mode 100644 index 000000000..68348b94d --- /dev/null +++ b/api/tests/Feature/API/StockTransferAPI/StockTransferAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.delete', $stockTransfer->ulid)); + + $api->assertStatus(401); + } + + public function test_stock_transfer_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.delete', $stockTransfer->ulid)); + + $api->assertStatus(403); + } + + public function test_stock_transfer_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.delete', $stockTransfer->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('stock_transfers', [ + 'id' => $stockTransfer->id, + ]); + } + + public function test_stock_transfer_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_stock_transfer_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/StockTransferAPI/StockTransferAPIEditTest.php b/api/tests/Feature/API/StockTransferAPI/StockTransferAPIEditTest.php new file mode 100644 index 000000000..2d3f1f160 --- /dev/null +++ b/api/tests/Feature/API/StockTransferAPI/StockTransferAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.edit', $stockTransfer->ulid), $stockTransferArr); + + $api->assertStatus(401); + } + + public function test_stock_transfer_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.edit', $stockTransfer->ulid), $stockTransferArr); + + $api->assertStatus(403); + } + + public function test_stock_transfer_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.edit', $stockTransfer->ulid), $stockTransferArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfers', [ + 'id' => $stockTransfer->id, + 'company_id' => $company->id, + 'code' => $stockTransferArr['code'], + 'name' => $stockTransferArr['name'], + ]); + } + + public function test_stock_transfer_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + StockTransfer::factory()->for($company)->count(2)->create(); + + $stockTransfers = $company->stockTransfers()->inRandomOrder()->take(2)->get(); + $stockTransfer_1 = $stockTransfers[0]; + $stockTransfer_2 = $stockTransfers[1]; + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $stockTransfer_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.edit', $stockTransfer_2->ulid), $stockTransferArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_stock_transfer_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + StockTransfer::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $stockTransfer_2 = StockTransfer::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $stockTransferArr = StockTransfer::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer.edit', $stockTransfer_2->ulid), $stockTransferArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/StockTransferAPI/StockTransferAPIReadTest.php b/api/tests/Feature/API/StockTransferAPI/StockTransferAPIReadTest.php new file mode 100644 index 000000000..0cef1ace3 --- /dev/null +++ b/api/tests/Feature/API/StockTransferAPI/StockTransferAPIReadTest.php @@ -0,0 +1,539 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(401); + } + + public function test_stock_transfer_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(403); + } + + public function test_stock_transfer_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $ulid = $stockTransfer->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_stock_transfer_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $ulid = $stockTransfer->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_stock_transfer_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + "' OR \'1\'=\'1", + '1 OR SLEEP(5)', + '1 AND (SELECT COUNT(*) FROM sysobjects) > 1', + "1 AND (SELECT * FROM users WHERE username = 'admin' AND SLEEP(5))", + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "SELECT * FROM users; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin' AND password LIKE '%a%')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR 1=1; DROP TABLE users; --', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = database()', + "1; EXEC xp_cmdshell('echo vulnerable'); --", + "' OR EXISTS(SELECT * FROM information_schema.tables WHERE table_schema='public' AND table_name='users' LIMIT 1) --", + "1'; EXEC sp_addrolemember 'db_owner', 'admin'; --", + "1' OR '1'='1'; -- EXEC master..xp_cmdshell 'echo vulnerable' --", + "1' UNION ALL SELECT NULL, NULL, NULL, NULL, NULL, NULL, CONCAT(username, ':', password) FROM users --", + '1; SELECT pg_sleep(5); --', + "1 AND SLEEP(5) AND 'abc'='abc", + "1 AND SLEEP(5) AND 'xyz'='xyz", + '1 OR 1=1; SELECT COUNT(*) FROM information_schema.tables;', + "1' UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' --", + '1 AND (SELECT * FROM (SELECT(SLEEP(5)))hOKz)', + "1' AND 1=(SELECT COUNT(*) FROM tabname); --", + "1'; WAITFOR DELAY '0:0:5' --", + "1 OR 1=1; WAITFOR DELAY '0:0:5' --", + "1; DECLARE @v VARCHAR(8000);SET @v = '';SELECT @v = @v + name + ', ' FROM sysobjects WHERE xtype = 'U';SELECT @v --", + "1; SELECT COUNT(*), CONCAT(table_name, ':', column_name) FROM information_schema.columns GROUP BY table_name, column_name HAVING COUNT(*) > 1; --", + '1; SELECT COUNT(*), table_name FROM information_schema.columns GROUP BY table_name HAVING COUNT(*) > 1; --', + "1' OR '1'='1'; SELECT COUNT(*) FROM information_schema.tables; --", + '1 AND (SELECT COUNT(*) FROM users) > 10', + '1 AND (SELECT COUNT(*) FROM users) > 100', + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin')", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR '1'='1", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR 'x'='x", + '1 AND (SELECT COUNT(*) FROM users) > 1; SELECT * FROM users;', + '1 OR 1=1; SELECT * FROM users;', + "1' OR 1=1; SELECT * FROM users;", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "' OR 1=1 --", + "admin'--", + "admin' #", + "' OR 'x'='x", + "' OR 'a'='a'", + "' OR 'a'='a'--", + "' OR 1=1", + "' OR 1=1--", + "' OR 1=1#", + "' OR 1=1 /*", + "' OR '1'='1'--", + "' OR '1'='1'/*", + "' OR '1'='1' #", + "' OR '1'='1' /*", + "' OR '1'='1' or ''='", + "' OR '1'='1' or 'a'='a", + "' OR '1'='1' or 'a'='a'--", + "' OR '1'='1' or 'a'='a'/*", + "' OR '1'='1' or 'a'='a' #", + "' OR '1'='1' or 'a'='a' /*", + '1; SELECT * FROM users WHERE 1=1', + '1; SELECT * FROM users WHERE 1=1--', + '1; SELECT * FROM users WHERE 1=1/*', + "1' OR 1=1; SELECT * FROM users WHERE 1=1", + "1' OR 1=1; SELECT * FROM users WHERE 1=1--", + "1' OR 1=1; SELECT * FROM users WHERE 1=1/*", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1' UNION SELECT username, password FROM users", + "1' OR '1'='1' UNION SELECT username, password FROM users--", + "1' OR '1'='1' UNION SELECT username, password FROM users/*", + "1' OR '1'='1' UNION SELECT username, password FROM users #", + "1' OR '1'='1' UNION SELECT username, password FROM users /*", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.tables", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema", + "' OR '", + "1' OR '1'='1' UNION SELECT NULL", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.columns", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM", + "' OR '1'='1' or", + ]; + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_stock_transfer_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_stock_transfer_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_stock_transfer_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company) + ->count(2)->create(); + + StockTransfer::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_stock_transfer_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertStatus(422); + } + + public function test_stock_transfer_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_stock_transfer_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransfer::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_stock_transfer_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransfer = StockTransfer::factory()->for($company)->create(); + + $ulid = $stockTransfer->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_stock_transfer_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read', null)); + } + + public function test_stock_transfer_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPICreateTest.php b/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPICreateTest.php new file mode 100644 index 000000000..d5e7a7bc0 --- /dev/null +++ b/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPICreateTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.save'), $stockTransferItemArr); + + $api->assertUnauthorized(); + } + + public function test_stock_transfer_item_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.save'), $stockTransferItemArr); + + $api->assertForbidden(); + } + + public function test_stock_transfer_item_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_stock_transfer_item_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.save'), $stockTransferItemArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfer_items', [ + 'company_id' => $company->id, + 'code' => $stockTransferItemArr['code'], + 'name' => $stockTransferItemArr['name'], + ]); + } + + public function test_stock_transfer_item_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.save'), $stockTransferItemArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_stock_transfer_item_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + StockTransferItem::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.save'), $stockTransferItemArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfer_items', [ + 'company_id' => $company_2->id, + 'code' => $stockTransferItemArr['code'], + 'name' => $stockTransferItemArr['name'], + ]); + } + + public function test_stock_transfer_item_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $stockTransferItemArr = []; + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.save'), $stockTransferItemArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIDeleteTest.php b/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIDeleteTest.php new file mode 100644 index 000000000..821b78aca --- /dev/null +++ b/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.delete', $stockTransferItem->ulid)); + + $api->assertStatus(401); + } + + public function test_stock_transfer_item_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.delete', $stockTransferItem->ulid)); + + $api->assertStatus(403); + } + + public function test_stock_transfer_item_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.delete', $stockTransferItem->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('stock_transfer_items', [ + 'id' => $stockTransferItem->id, + ]); + } + + public function test_stock_transfer_item_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_stock_transfer_item_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIEditTest.php b/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIEditTest.php new file mode 100644 index 000000000..75a7df7bc --- /dev/null +++ b/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.edit', $stockTransferItem->ulid), $stockTransferItemArr); + + $api->assertStatus(401); + } + + public function test_stock_transfer_item_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.edit', $stockTransferItem->ulid), $stockTransferItemArr); + + $api->assertStatus(403); + } + + public function test_stock_transfer_item_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.edit', $stockTransferItem->ulid), $stockTransferItemArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfer_items', [ + 'id' => $stockTransferItem->id, + 'company_id' => $company->id, + 'code' => $stockTransferItemArr['code'], + 'name' => $stockTransferItemArr['name'], + ]); + } + + public function test_stock_transfer_item_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + StockTransferItem::factory()->for($company)->count(2)->create(); + + $stockTransferItems = $company->stockTransferItems()->inRandomOrder()->take(2)->get(); + $stockTransferItem_1 = $stockTransferItems[0]; + $stockTransferItem_2 = $stockTransferItems[1]; + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $stockTransferItem_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.edit', $stockTransferItem_2->ulid), $stockTransferItemArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_stock_transfer_item_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + StockTransferItem::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $stockTransferItem_2 = StockTransferItem::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $stockTransferItemArr = StockTransferItem::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item.edit', $stockTransferItem_2->ulid), $stockTransferItemArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIReadTest.php b/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIReadTest.php new file mode 100644 index 000000000..38577df94 --- /dev/null +++ b/api/tests/Feature/API/StockTransferItemAPI/StockTransferItemAPIReadTest.php @@ -0,0 +1,539 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(401); + } + + public function test_stock_transfer_item_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(403); + } + + public function test_stock_transfer_item_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $ulid = $stockTransferItem->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_stock_transfer_item_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $ulid = $stockTransferItem->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_stock_transfer_item_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + "' OR \'1\'=\'1", + '1 OR SLEEP(5)', + '1 AND (SELECT COUNT(*) FROM sysobjects) > 1', + "1 AND (SELECT * FROM users WHERE username = 'admin' AND SLEEP(5))", + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "SELECT * FROM users; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin' AND password LIKE '%a%')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR 1=1; DROP TABLE users; --', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = database()', + "1; EXEC xp_cmdshell('echo vulnerable'); --", + "' OR EXISTS(SELECT * FROM information_schema.tables WHERE table_schema='public' AND table_name='users' LIMIT 1) --", + "1'; EXEC sp_addrolemember 'db_owner', 'admin'; --", + "1' OR '1'='1'; -- EXEC master..xp_cmdshell 'echo vulnerable' --", + "1' UNION ALL SELECT NULL, NULL, NULL, NULL, NULL, NULL, CONCAT(username, ':', password) FROM users --", + '1; SELECT pg_sleep(5); --', + "1 AND SLEEP(5) AND 'abc'='abc", + "1 AND SLEEP(5) AND 'xyz'='xyz", + '1 OR 1=1; SELECT COUNT(*) FROM information_schema.tables;', + "1' UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' --", + '1 AND (SELECT * FROM (SELECT(SLEEP(5)))hOKz)', + "1' AND 1=(SELECT COUNT(*) FROM tabname); --", + "1'; WAITFOR DELAY '0:0:5' --", + "1 OR 1=1; WAITFOR DELAY '0:0:5' --", + "1; DECLARE @v VARCHAR(8000);SET @v = '';SELECT @v = @v + name + ', ' FROM sysobjects WHERE xtype = 'U';SELECT @v --", + "1; SELECT COUNT(*), CONCAT(table_name, ':', column_name) FROM information_schema.columns GROUP BY table_name, column_name HAVING COUNT(*) > 1; --", + '1; SELECT COUNT(*), table_name FROM information_schema.columns GROUP BY table_name HAVING COUNT(*) > 1; --', + "1' OR '1'='1'; SELECT COUNT(*) FROM information_schema.tables; --", + '1 AND (SELECT COUNT(*) FROM users) > 10', + '1 AND (SELECT COUNT(*) FROM users) > 100', + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin')", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR '1'='1", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR 'x'='x", + '1 AND (SELECT COUNT(*) FROM users) > 1; SELECT * FROM users;', + '1 OR 1=1; SELECT * FROM users;', + "1' OR 1=1; SELECT * FROM users;", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "' OR 1=1 --", + "admin'--", + "admin' #", + "' OR 'x'='x", + "' OR 'a'='a'", + "' OR 'a'='a'--", + "' OR 1=1", + "' OR 1=1--", + "' OR 1=1#", + "' OR 1=1 /*", + "' OR '1'='1'--", + "' OR '1'='1'/*", + "' OR '1'='1' #", + "' OR '1'='1' /*", + "' OR '1'='1' or ''='", + "' OR '1'='1' or 'a'='a", + "' OR '1'='1' or 'a'='a'--", + "' OR '1'='1' or 'a'='a'/*", + "' OR '1'='1' or 'a'='a' #", + "' OR '1'='1' or 'a'='a' /*", + '1; SELECT * FROM users WHERE 1=1', + '1; SELECT * FROM users WHERE 1=1--', + '1; SELECT * FROM users WHERE 1=1/*', + "1' OR 1=1; SELECT * FROM users WHERE 1=1", + "1' OR 1=1; SELECT * FROM users WHERE 1=1--", + "1' OR 1=1; SELECT * FROM users WHERE 1=1/*", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1' UNION SELECT username, password FROM users", + "1' OR '1'='1' UNION SELECT username, password FROM users--", + "1' OR '1'='1' UNION SELECT username, password FROM users/*", + "1' OR '1'='1' UNION SELECT username, password FROM users #", + "1' OR '1'='1' UNION SELECT username, password FROM users /*", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.tables", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema", + "' OR '", + "1' OR '1'='1' UNION SELECT NULL", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.columns", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM", + "' OR '1'='1' or", + ]; + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_stock_transfer_item_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_stock_transfer_item_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_stock_transfer_item_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company) + ->count(2)->create(); + + StockTransferItem::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_stock_transfer_item_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertStatus(422); + } + + public function test_stock_transfer_item_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_stock_transfer_item_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItem::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_stock_transfer_item_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItem = StockTransferItem::factory()->for($company)->create(); + + $ulid = $stockTransferItem->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_stock_transfer_item_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read', null)); + } + + public function test_stock_transfer_item_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPICreateTest.php b/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPICreateTest.php new file mode 100644 index 000000000..1095c53e0 --- /dev/null +++ b/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPICreateTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.save'), $stockTransferItemSerialArr); + + $api->assertUnauthorized(); + } + + public function test_stock_transfer_item_serial_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.save'), $stockTransferItemSerialArr); + + $api->assertForbidden(); + } + + public function test_stock_transfer_item_serial_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_serial_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_stock_transfer_item_serial_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.save'), $stockTransferItemSerialArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfer_item_serials', [ + 'company_id' => $company->id, + 'code' => $stockTransferItemSerialArr['code'], + 'name' => $stockTransferItemSerialArr['name'], + ]); + } + + public function test_stock_transfer_item_serial_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_serial_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.save'), $stockTransferItemSerialArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_stock_transfer_item_serial_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + StockTransferItemSerial::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.save'), $stockTransferItemSerialArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfer_item_serials', [ + 'company_id' => $company_2->id, + 'code' => $stockTransferItemSerialArr['code'], + 'name' => $stockTransferItemSerialArr['name'], + ]); + } + + public function test_stock_transfer_item_serial_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $stockTransferItemSerialArr = []; + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.save'), $stockTransferItemSerialArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIDeleteTest.php b/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIDeleteTest.php new file mode 100644 index 000000000..7f6cd93b0 --- /dev/null +++ b/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.delete', $stockTransferItemSerial->ulid)); + + $api->assertStatus(401); + } + + public function test_stock_transfer_item_serial_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.delete', $stockTransferItemSerial->ulid)); + + $api->assertStatus(403); + } + + public function test_stock_transfer_item_serial_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.delete', $stockTransferItemSerial->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('stock_transfer_item_serials', [ + 'id' => $stockTransferItemSerial->id, + ]); + } + + public function test_stock_transfer_item_serial_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_stock_transfer_item_serial_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIEditTest.php b/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIEditTest.php new file mode 100644 index 000000000..42d28b7ea --- /dev/null +++ b/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIEditTest.php @@ -0,0 +1,161 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.edit', $stockTransferItemSerial->ulid), $stockTransferItemSerialArr); + + $api->assertStatus(401); + } + + public function test_stock_transfer_item_serial_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.edit', $stockTransferItemSerial->ulid), $stockTransferItemSerialArr); + + $api->assertStatus(403); + } + + public function test_stock_transfer_item_serial_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_serial_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_serial_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.edit', $stockTransferItemSerial->ulid), $stockTransferItemSerialArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('stock_transfer_item_serials', [ + 'id' => $stockTransferItemSerial->id, + 'company_id' => $company->id, + 'code' => $stockTransferItemSerialArr['code'], + 'name' => $stockTransferItemSerialArr['name'], + ]); + } + + public function test_stock_transfer_item_serial_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $this->markTestIncomplete('Not implemented yet.'); + } + + public function test_stock_transfer_item_serial_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + StockTransferItemSerial::factory()->for($company)->count(2)->create(); + + $stockTransferItemSerials = $company->stockTransferItemSerials()->inRandomOrder()->take(2)->get(); + $stockTransferItemSerial_1 = $stockTransferItemSerials[0]; + $stockTransferItemSerial_2 = $stockTransferItemSerials[1]; + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $stockTransferItemSerial_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.edit', $stockTransferItemSerial_2->ulid), $stockTransferItemSerialArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_stock_transfer_item_serial_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + StockTransferItemSerial::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $stockTransferItemSerial_2 = StockTransferItemSerial::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $stockTransferItemSerialArr = StockTransferItemSerial::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.db.stock_transfer.stock_transfer_item_serial.edit', $stockTransferItemSerial_2->ulid), $stockTransferItemSerialArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIReadTest.php b/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIReadTest.php new file mode 100644 index 000000000..35e2a5fb0 --- /dev/null +++ b/api/tests/Feature/API/StockTransferItemSerialAPI/StockTransferItemSerialAPIReadTest.php @@ -0,0 +1,539 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(401); + } + + public function test_stock_transfer_item_serial_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(403); + } + + public function test_stock_transfer_item_serial_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $ulid = $stockTransferItemSerial->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_stock_transfer_item_serial_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $ulid = $stockTransferItemSerial->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_stock_transfer_item_serial_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + "' OR \'1\'=\'1", + '1 OR SLEEP(5)', + '1 AND (SELECT COUNT(*) FROM sysobjects) > 1', + "1 AND (SELECT * FROM users WHERE username = 'admin' AND SLEEP(5))", + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "SELECT * FROM users; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin' AND password LIKE '%a%')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR 1=1; DROP TABLE users; --', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = database()', + "1; EXEC xp_cmdshell('echo vulnerable'); --", + "' OR EXISTS(SELECT * FROM information_schema.tables WHERE table_schema='public' AND table_name='users' LIMIT 1) --", + "1'; EXEC sp_addrolemember 'db_owner', 'admin'; --", + "1' OR '1'='1'; -- EXEC master..xp_cmdshell 'echo vulnerable' --", + "1' UNION ALL SELECT NULL, NULL, NULL, NULL, NULL, NULL, CONCAT(username, ':', password) FROM users --", + '1; SELECT pg_sleep(5); --', + "1 AND SLEEP(5) AND 'abc'='abc", + "1 AND SLEEP(5) AND 'xyz'='xyz", + '1 OR 1=1; SELECT COUNT(*) FROM information_schema.tables;', + "1' UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' --", + '1 AND (SELECT * FROM (SELECT(SLEEP(5)))hOKz)', + "1' AND 1=(SELECT COUNT(*) FROM tabname); --", + "1'; WAITFOR DELAY '0:0:5' --", + "1 OR 1=1; WAITFOR DELAY '0:0:5' --", + "1; DECLARE @v VARCHAR(8000);SET @v = '';SELECT @v = @v + name + ', ' FROM sysobjects WHERE xtype = 'U';SELECT @v --", + "1; SELECT COUNT(*), CONCAT(table_name, ':', column_name) FROM information_schema.columns GROUP BY table_name, column_name HAVING COUNT(*) > 1; --", + '1; SELECT COUNT(*), table_name FROM information_schema.columns GROUP BY table_name HAVING COUNT(*) > 1; --', + "1' OR '1'='1'; SELECT COUNT(*) FROM information_schema.tables; --", + '1 AND (SELECT COUNT(*) FROM users) > 10', + '1 AND (SELECT COUNT(*) FROM users) > 100', + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin')", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR '1'='1", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR 'x'='x", + '1 AND (SELECT COUNT(*) FROM users) > 1; SELECT * FROM users;', + '1 OR 1=1; SELECT * FROM users;', + "1' OR 1=1; SELECT * FROM users;", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "' OR 1=1 --", + "admin'--", + "admin' #", + "' OR 'x'='x", + "' OR 'a'='a'", + "' OR 'a'='a'--", + "' OR 1=1", + "' OR 1=1--", + "' OR 1=1#", + "' OR 1=1 /*", + "' OR '1'='1'--", + "' OR '1'='1'/*", + "' OR '1'='1' #", + "' OR '1'='1' /*", + "' OR '1'='1' or ''='", + "' OR '1'='1' or 'a'='a", + "' OR '1'='1' or 'a'='a'--", + "' OR '1'='1' or 'a'='a'/*", + "' OR '1'='1' or 'a'='a' #", + "' OR '1'='1' or 'a'='a' /*", + '1; SELECT * FROM users WHERE 1=1', + '1; SELECT * FROM users WHERE 1=1--', + '1; SELECT * FROM users WHERE 1=1/*', + "1' OR 1=1; SELECT * FROM users WHERE 1=1", + "1' OR 1=1; SELECT * FROM users WHERE 1=1--", + "1' OR 1=1; SELECT * FROM users WHERE 1=1/*", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1' UNION SELECT username, password FROM users", + "1' OR '1'='1' UNION SELECT username, password FROM users--", + "1' OR '1'='1' UNION SELECT username, password FROM users/*", + "1' OR '1'='1' UNION SELECT username, password FROM users #", + "1' OR '1'='1' UNION SELECT username, password FROM users /*", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.tables", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema", + "' OR '", + "1' OR '1'='1' UNION SELECT NULL", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.columns", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM", + "' OR '1'='1' or", + ]; + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_stock_transfer_item_serial_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_stock_transfer_item_serial_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_stock_transfer_item_serial_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company) + ->count(2)->create(); + + StockTransferItemSerial::factory()->for($company) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_stock_transfer_item_serial_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertStatus(422); + } + + public function test_stock_transfer_item_serial_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_stock_transfer_item_serial_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + StockTransferItemSerial::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_stock_transfer_item_serial_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $stockTransferItemSerial = StockTransferItemSerial::factory()->for($company)->create(); + + $ulid = $stockTransferItemSerial->ulid; + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_stock_transfer_item_serial_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read', null)); + } + + public function test_stock_transfer_item_serial_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.db.stock_transfer.stock_transfer_item_serial.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/SupplierAPI/SupplierAPICreateTest.php b/api/tests/Feature/API/SupplierAPI/SupplierAPICreateTest.php new file mode 100644 index 000000000..521a21f62 --- /dev/null +++ b/api/tests/Feature/API/SupplierAPI/SupplierAPICreateTest.php @@ -0,0 +1,250 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr); + + $api->assertUnauthorized(); + } + + public function test_supplier_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr); + + $api->assertForbidden(); + } + + public function test_supplier_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'name' => ' Test Name', + 'address' => ' Address', + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('suppliers', [ + 'company_id' => $company->id, + 'name' => 'alert("xss") Test Name', + 'address' => 'alert("xss") Address', + ]); + } + + public function test_supplier_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'name' => ' Test Name', + 'address' => ' Address', + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr, ['X-Sanitizer-Mode' => 'encode']); + + $api->assertSuccessful(); + $this->assertDatabaseHas('suppliers', [ + 'company_id' => $company->id, + 'name' => '<script>alert("xss")</script> Test Name', + 'address' => '<script>alert("xss")</script> Address', + ]); + } + + public function test_supplier_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('suppliers', [ + 'company_id' => $company->id, + 'code' => $supplierArr['code'], + 'name' => $supplierArr['name'], + 'address' => $supplierArr['address'], + 'city' => $supplierArr['city'], + 'payment_term_type' => $supplierArr['payment_term_type'], + 'payment_term' => $supplierArr['payment_term'], + 'taxable_enterprise' => $supplierArr['taxable_enterprise'], + 'tax_id' => $supplierArr['tax_id'], + 'status' => $supplierArr['status'], + 'remarks' => $supplierArr['remarks'], + ]); + } + + public function test_supplier_api_call_store_with_nonexistance_company_id_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode(99999999), // Non-existent company ID + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr); + + $api->assertStatus(422); + $api->assertJsonValidationErrors(['company_id']); + } + + public function test_supplier_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_supplier_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + + $company_2 = $companies[1]; + + Supplier::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('suppliers', [ + 'company_id' => $company_2->id, + 'code' => $supplierArr['code'], + 'name' => $supplierArr['name'], + 'address' => $supplierArr['address'], + 'city' => $supplierArr['city'], + 'payment_term_type' => $supplierArr['payment_term_type'], + 'payment_term' => $supplierArr['payment_term'], + 'taxable_enterprise' => $supplierArr['taxable_enterprise'], + 'tax_id' => $supplierArr['tax_id'], + 'status' => $supplierArr['status'], + 'remarks' => $supplierArr['remarks'], + ]); + } + + public function test_supplier_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $supplierArr = []; + + $api = $this->json('POST', route('api.post.supplier.save'), $supplierArr); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } +} diff --git a/api/tests/Feature/API/SupplierAPI/SupplierAPIDeleteTest.php b/api/tests/Feature/API/SupplierAPI/SupplierAPIDeleteTest.php new file mode 100644 index 000000000..7f5dba01f --- /dev/null +++ b/api/tests/Feature/API/SupplierAPI/SupplierAPIDeleteTest.php @@ -0,0 +1,95 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.supplier.delete', $supplier->ulid)); + + $api->assertStatus(401); + } + + public function test_supplier_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.supplier.delete', $supplier->ulid)); + + $api->assertStatus(403); + } + + public function test_supplier_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.supplier.delete', $supplier->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('suppliers', [ + 'id' => $supplier->id, + ]); + } + + public function test_supplier_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.supplier.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_supplier_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.supplier.delete', null)); + + $api->assertStatus(500); + } +} diff --git a/api/tests/Feature/API/SupplierAPI/SupplierAPIEditTest.php b/api/tests/Feature/API/SupplierAPI/SupplierAPIEditTest.php new file mode 100644 index 000000000..ace2949b9 --- /dev/null +++ b/api/tests/Feature/API/SupplierAPI/SupplierAPIEditTest.php @@ -0,0 +1,234 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.edit', $supplier->ulid), $supplierArr); + + $api->assertStatus(401); + } + + public function test_supplier_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.edit', $supplier->ulid), $supplierArr); + + $api->assertStatus(403); + } + + public function test_supplier_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'name' => ' Test Name', + 'address' => ' Address', + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.edit', $supplier->ulid), $supplierArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('suppliers', [ + 'id' => $supplier->id, + 'company_id' => $company->id, + 'name' => 'alert("xss") Test Name', + 'address' => 'alert("xss") Address', + ]); + } + + public function test_supplier_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'name' => ' Test Name', + 'address' => ' Address', + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.edit', $supplier->ulid), $supplierArr, ['X-Sanitizer-Mode' => 'encode']); + + $api->assertSuccessful(); + $this->assertDatabaseHas('suppliers', [ + 'id' => $supplier->id, + 'company_id' => $company->id, + 'name' => '<script>alert("xss")</script> Test Name', + 'address' => '<script>alert("xss")</script> Address', + ]); + } + + public function test_supplier_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.edit', $supplier->ulid), $supplierArr); + + $api->assertSuccessful(); + $this->assertDatabaseHas('suppliers', [ + 'id' => $supplier->id, + 'company_id' => $company->id, + 'code' => $supplierArr['code'], + 'name' => $supplierArr['name'], + 'address' => $supplierArr['address'], + 'city' => $supplierArr['city'], + 'payment_term_type' => $supplierArr['payment_term_type'], + 'payment_term' => $supplierArr['payment_term'], + 'taxable_enterprise' => $supplierArr['taxable_enterprise'], + 'tax_id' => $supplierArr['tax_id'], + 'status' => $supplierArr['status'], + 'remarks' => $supplierArr['remarks'], + ]); + } + + public function test_supplier_api_call_update_with_nonexistance_company_id_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = Supplier::factory()->for($company)->create(); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode(99999999), // Non-existent company ID + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.edit', $supplier->ulid), $supplierArr); + + $api->assertStatus(422); + $api->assertJsonValidationErrors(['company_id']); + } + + public function test_supplier_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + Supplier::factory()->for($company)->count(2)->create(); + + $suppliers = $company->suppliers()->inRandomOrder()->take(2)->get(); + $supplier_1 = $suppliers[0]; + $supplier_2 = $suppliers[1]; + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $supplier_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.edit', $supplier_2->ulid), $supplierArr); + + $api->assertStatus(422); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_supplier_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + Supplier::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $supplier_2 = Supplier::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $supplierArr = Supplier::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.supplier.edit', $supplier_2->ulid), $supplierArr); + + $api->assertSuccessful(); + } +} diff --git a/api/tests/Feature/API/SupplierAPI/SupplierAPIReadTest.php b/api/tests/Feature/API/SupplierAPI/SupplierAPIReadTest.php new file mode 100644 index 000000000..9e2201540 --- /dev/null +++ b/api/tests/Feature/API/SupplierAPI/SupplierAPIReadTest.php @@ -0,0 +1,545 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(401); + } + + public function test_supplier_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(403); + } + + public function test_supplier_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $supplier = Supplier::factory()->for($company)->create(); + + $ulid = $supplier->ulid; + + $api = $this->getJson(route('api.get.supplier.read', $ulid)); + + $api->assertStatus(401); + } + + public function test_supplier_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $supplier = Supplier::factory()->for($company)->create(); + + $ulid = $supplier->ulid; + + $api = $this->getJson(route('api.get.supplier.read', $ulid)); + + $api->assertStatus(403); + } + + public function test_supplier_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + "' OR \'1\'=\'1", + '1 OR SLEEP(5)', + '1 AND (SELECT COUNT(*) FROM sysobjects) > 1', + "1 AND (SELECT * FROM users WHERE username = 'admin' AND SLEEP(5))", + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "SELECT * FROM users; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin' AND password LIKE '%a%')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + '1 OR 1=1; DROP TABLE users; --', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns', + '1 AND 1=0 UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = database()', + "1; EXEC xp_cmdshell('echo vulnerable'); --", + "' OR EXISTS(SELECT * FROM information_schema.tables WHERE table_schema='public' AND table_name='users' LIMIT 1) --", + "1'; EXEC sp_addrolemember 'db_owner', 'admin'; --", + "1' OR '1'='1'; -- EXEC master..xp_cmdshell 'echo vulnerable' --", + "1' UNION ALL SELECT NULL, NULL, NULL, NULL, NULL, NULL, CONCAT(username, ':', password) FROM users --", + '1; SELECT pg_sleep(5); --', + "1 AND SLEEP(5) AND 'abc'='abc", + "1 AND SLEEP(5) AND 'xyz'='xyz", + '1 OR 1=1; SELECT COUNT(*) FROM information_schema.tables;', + "1' UNION ALL SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' --", + '1 AND (SELECT * FROM (SELECT(SLEEP(5)))hOKz)', + "1' AND 1=(SELECT COUNT(*) FROM tabname); --", + "1'; WAITFOR DELAY '0:0:5' --", + "1 OR 1=1; WAITFOR DELAY '0:0:5' --", + "1; DECLARE @v VARCHAR(8000);SET @v = '';SELECT @v = @v + name + ', ' FROM sysobjects WHERE xtype = 'U';SELECT @v --", + "1; SELECT COUNT(*), CONCAT(table_name, ':', column_name) FROM information_schema.columns GROUP BY table_name, column_name HAVING COUNT(*) > 1; --", + '1; SELECT COUNT(*), table_name FROM information_schema.columns GROUP BY table_name HAVING COUNT(*) > 1; --', + "1' OR '1'='1'; SELECT COUNT(*) FROM information_schema.tables; --", + '1 AND (SELECT COUNT(*) FROM users) > 10', + '1 AND (SELECT COUNT(*) FROM users) > 100', + "1 OR EXISTS(SELECT * FROM users WHERE username = 'admin')", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR '1'='1", + "1' OR EXISTS(SELECT * FROM users WHERE username = 'admin') OR 'x'='x", + '1 AND (SELECT COUNT(*) FROM users) > 1; SELECT * FROM users;', + '1 OR 1=1; SELECT * FROM users;', + "1' OR 1=1; SELECT * FROM users;", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin'; --", + "1 OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "1' OR 1=1; SELECT * FROM users WHERE username = 'admin' --", + "' OR 1=1 --", + "admin'--", + "admin' #", + "' OR 'x'='x", + "' OR 'a'='a'", + "' OR 'a'='a'--", + "' OR 1=1", + "' OR 1=1--", + "' OR 1=1#", + "' OR 1=1 /*", + "' OR '1'='1'--", + "' OR '1'='1'/*", + "' OR '1'='1' #", + "' OR '1'='1' /*", + "' OR '1'='1' or ''='", + "' OR '1'='1' or 'a'='a", + "' OR '1'='1' or 'a'='a'--", + "' OR '1'='1' or 'a'='a'/*", + "' OR '1'='1' or 'a'='a' #", + "' OR '1'='1' or 'a'='a' /*", + '1; SELECT * FROM users WHERE 1=1', + '1; SELECT * FROM users WHERE 1=1--', + '1; SELECT * FROM users WHERE 1=1/*', + "1' OR 1=1; SELECT * FROM users WHERE 1=1", + "1' OR 1=1; SELECT * FROM users WHERE 1=1--", + "1' OR 1=1; SELECT * FROM users WHERE 1=1/*", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1 OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1--", + "1' OR '1'='1'; SELECT * FROM users WHERE 1=1/*", + "1' OR '1'='1' UNION SELECT username, password FROM users", + "1' OR '1'='1' UNION SELECT username, password FROM users--", + "1' OR '1'='1' UNION SELECT username, password FROM users/*", + "1' OR '1'='1' UNION SELECT username, password FROM users #", + "1' OR '1'='1' UNION SELECT username, password FROM users /*", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.tables", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema", + "' OR '", + "1' OR '1'='1' UNION SELECT NULL", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM information_schema.columns", + "1' OR '1'='1' UNION SELECT NULL, table_name FROM", + "' OR '1'='1' or", + ]; + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + if ($api->status() === 422) { + dump($api->json()); + } + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections)); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_supplier_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_supplier_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_supplier_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company) + ->count(2)->create(); + + Supplier::factory()->for($company) + ->state(function (array $attributes) { + return ['name' => 'testing '.$attributes['name']]; + }) + ->count(3)->create(); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_supplier_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertStatus(422); + } + + public function test_supplier_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_supplier_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.supplier.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => -1, + 'per_page' => 25, + ], + ])); + + $api->assertStatus(422); + } + + public function test_supplier_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $supplier = Supplier::factory()->for($company)->create(); + + $ulid = $supplier->ulid; + + $api = $this->getJson(route('api.get.supplier.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_supplier_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.supplier.read', null)); + } + + public function test_supplier_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.supplier.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/UnitAPI/UnitAPICreateTest.php b/api/tests/Feature/API/UnitAPI/UnitAPICreateTest.php new file mode 100644 index 000000000..9a8189a16 --- /dev/null +++ b/api/tests/Feature/API/UnitAPI/UnitAPICreateTest.php @@ -0,0 +1,222 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.save'), $payload); + + $api->assertUnauthorized(); + } + + public function test_unit_api_call_store_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.save'), $payload); + + $api->assertForbidden(); + } + + public function test_unit_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('units', [ + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'description' => $payload['description'], + 'type' => $payload['type'], + ]); + } + + public function test_unit_api_call_store_with_auto_code_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => Config::get('dcslab.KEYWORDS.AUTO'), + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('units', [ + 'company_id' => $company->id, + 'name' => $payload['name'], + 'description' => $payload['description'], + 'type' => $payload['type'], + ]); + + $this->assertDatabaseMissing('units', [ + 'company_id' => $company->id, + 'code' => Config::get('dcslab.KEYWORDS.AUTO'), + ]); + } + + public function test_unit_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->create([ + 'code' => 'test1', + ]); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.save'), $payload); + + $api->assertUnprocessable(); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_unit_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + $company_2 = $companies[1]; + + Unit::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('units', [ + 'company_id' => $company_2->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'description' => $payload['description'], + 'type' => $payload['type'], + ]); + } + + public function test_unit_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $payload = []; + + $api = $this->json('POST', route('api.post.unit.save'), $payload); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } + + public function test_unit_api_call_store_with_sql_injection_payload_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => "'; DROP TABLE units; --", + 'name' => "'; DROP TABLE units; --", + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.save'), $payload); + + $api->assertSuccessful(); + + $this->assertDatabaseHas('units', [ + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'description' => $payload['description'], + 'type' => $payload['type'], + ]); + } +} diff --git a/api/tests/Feature/API/UnitAPI/UnitAPIDeleteTest.php b/api/tests/Feature/API/UnitAPI/UnitAPIDeleteTest.php new file mode 100644 index 000000000..48b28743e --- /dev/null +++ b/api/tests/Feature/API/UnitAPI/UnitAPIDeleteTest.php @@ -0,0 +1,119 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $unit = Unit::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.unit.delete', $unit->ulid)); + + $api->assertUnauthorized(); + } + + public function test_unit_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $unit = Unit::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.unit.delete', $unit->ulid)); + + $api->assertForbidden(); + } + + public function test_unit_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $unit = Unit::factory()->for($company)->create(); + + $api = $this->json('POST', route('api.post.unit.delete', $unit->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('units', [ + 'id' => $unit->id, + ]); + } + + public function test_unit_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.unit.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_unit_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.unit.delete', null)); + } + + public function test_unit_api_call_delete_with_sql_injection_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + '1 OR SLEEP(5)', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + "admin'--", + "' OR 1=1 --", + ]; + + $testIdx = random_int(0, count($injections) - 1); + $injection = $injections[$testIdx]; + + $api = $this->json('POST', route('api.post.unit.delete', $injection)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/UnitAPI/UnitAPIEditTest.php b/api/tests/Feature/API/UnitAPI/UnitAPIEditTest.php new file mode 100644 index 000000000..0ff213d84 --- /dev/null +++ b/api/tests/Feature/API/UnitAPI/UnitAPIEditTest.php @@ -0,0 +1,176 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $unit = Unit::factory()->for($company)->create(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.edit', $unit->ulid), $payload); + + $api->assertUnauthorized(); + } + + public function test_unit_api_call_update_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $unit = Unit::factory()->for($company)->create(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.edit', $unit->ulid), $payload); + + $api->assertForbidden(); + } + + public function test_unit_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $unit = Unit::factory()->for($company)->create(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.edit', $unit->ulid), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('units', [ + 'id' => $unit->id, + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'description' => $payload['description'], + 'type' => $payload['type'], + ]); + } + + public function test_unit_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + Unit::factory()->for($company)->count(2)->create(); + + $units = $company->units()->inRandomOrder()->take(2)->get(); + $unit_1 = $units[0]; + $unit_2 = $units[1]; + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => $unit_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.edit', $unit_2->ulid), $payload); + + $api->assertUnprocessable(); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_unit_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + Unit::factory()->for($company_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $unit_2 = Unit::factory()->for($company_2)->create([ + 'code' => 'test2', + ]); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.edit', $unit_2->ulid), $payload); + + $api->assertSuccessful(); + } + + public function test_unit_api_call_update_with_sql_injection_payload_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $unit = Unit::factory()->for($company)->create(); + + $payload = Unit::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'code' => "'; DROP TABLE units; --", + 'name' => "'; DROP TABLE units; --", + ])->toArray(); + + $api = $this->json('POST', route('api.post.unit.edit', $unit->ulid), $payload); + + $api->assertSuccessful(); + + $this->assertDatabaseHas('units', [ + 'id' => $unit->id, + 'company_id' => $company->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'description' => $payload['description'], + 'type' => $payload['type'], + ]); + } +} diff --git a/api/tests/Feature/API/UnitAPI/UnitAPIReadTest.php b/api/tests/Feature/API/UnitAPI/UnitAPIReadTest.php new file mode 100644 index 000000000..ebb327b9c --- /dev/null +++ b/api/tests/Feature/API/UnitAPI/UnitAPIReadTest.php @@ -0,0 +1,422 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertUnauthorized(); + } + + public function test_unit_api_call_read_any_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertForbidden(); + } + + public function test_unit_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $unit = Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read', $unit->ulid)); + + $api->assertUnauthorized(); + } + + public function test_unit_api_call_read_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $unit = Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read', $unit->ulid)); + + $api->assertForbidden(); + } + + public function test_unit_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + '1 OR SLEEP(5)', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + "admin'--", + "' OR 1=1 --", + ]; + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_unit_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + ]); + } + + public function test_unit_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_unit_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->count(2)->create(); + + Unit::factory()->for($company) + ->create([ + 'name' => 'testing', + ]); + + Unit::factory()->for($company) + ->create([ + 'code' => 'testing_code', + ]); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 2, + ]); + } + + public function test_unit_api_call_read_any_without_required_parameters_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertUnprocessable(); + } + + public function test_unit_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_unit_api_call_read_single_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $unit = Unit::factory()->for($company)->create(); + + $api = $this->getJson(route('api.get.unit.read', $unit->ulid)); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + ]); + } + + public function test_unit_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.unit.read', null)); + } + + public function test_unit_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.unit.read', $ulid)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/UserAPI/UserAPICreateTest.php b/api/tests/Feature/API/UserAPI/UserAPICreateTest.php index 8441ad7cf..52f8db9ec 100644 --- a/api/tests/Feature/API/UserAPI/UserAPICreateTest.php +++ b/api/tests/Feature/API/UserAPI/UserAPICreateTest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\UserAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Profile; use App\Models\Role; use App\Models\User; @@ -19,13 +19,13 @@ protected function setUp(): void public function test_user_api_call_store_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $userArr = User::factory()->make()->toArray(); $userArr = array_merge($userArr, Profile::factory()->make()->toArray()); - $role = Role::where('name', '=', UserRoles::DEVELOPER->value)->first(); + $role = Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first(); $userArr['roles'][0] = [ 'id' => HashIds::encode($role->id), 'display_name' => $role->display_name, @@ -46,7 +46,7 @@ public function test_user_api_call_store_without_access_right_expect_unauthorize $userArr = User::factory()->make()->toArray(); $userArr = array_merge($userArr, Profile::factory()->make()->toArray()); - $role = Role::where('name', '=', UserRoles::DEVELOPER->value)->first(); + $role = Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first(); $userArr['roles'][0] = [ 'id' => HashIds::encode($role->id), 'display_name' => $role->display_name, @@ -70,7 +70,7 @@ public function test_user_api_call_store_with_script_tags_in_payload_expect_enco public function test_user_api_call_store_expect_successful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); @@ -78,7 +78,7 @@ public function test_user_api_call_store_expect_successful() $userArr = User::factory()->make()->toArray(); $userArr = array_merge($userArr, Profile::factory()->make()->toArray()); - $role = Role::where('name', '=', UserRoles::DEVELOPER->value)->first(); + $role = Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first(); $userArr['roles'][0] = [ 'id' => HashIds::encode($role->id), 'display_name' => $role->display_name, @@ -92,7 +92,7 @@ public function test_user_api_call_store_expect_successful() public function test_user_api_call_store_with_empty_string_parameters_expect_validation_error() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); diff --git a/api/tests/Feature/API/UserAPI/UserAPIEditTest.php b/api/tests/Feature/API/UserAPI/UserAPIEditTest.php index aee6e465b..06776eb73 100644 --- a/api/tests/Feature/API/UserAPI/UserAPIEditTest.php +++ b/api/tests/Feature/API/UserAPI/UserAPIEditTest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\UserAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Profile; use App\Models\Role; use App\Models\Setting; @@ -20,13 +20,13 @@ protected function setUp(): void public function test_user_api_call_update_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $user = User::factory() ->setCreatedAt()->setUpdatedAt() ->has(Profile::factory()->setCreatedAt()->setUpdatedAt()) - ->hasAttached(Role::where('name', '=', UserRoles::ADMINISTRATOR->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::ADMINISTRATOR->value)->first()) ->has(Setting::factory()->createDefaultSetting_PREF_THEME()) ->has(Setting::factory()->createDefaultSetting_PREF_DATE_FORMAT()) ->has(Setting::factory()->createDefaultSetting_PREF_TIME_FORMAT()) @@ -35,7 +35,7 @@ public function test_user_api_call_update_without_authorization_expect_unauthori $userArr = User::factory()->make()->toArray(); $userArr = array_merge($userArr, Profile::factory()->make()->toArray()); - $role = Role::where('name', '=', UserRoles::DEVELOPER->value)->first(); + $role = Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first(); $userArr['roles'][0] = [ 'id' => HashIds::encode($role->id), 'display_name' => $role->display_name, @@ -60,7 +60,7 @@ public function test_user_api_call_update_without_access_right_expect_unauthoriz $user = User::factory() ->setCreatedAt()->setUpdatedAt() ->has(Profile::factory()->setCreatedAt()->setUpdatedAt()) - ->hasAttached(Role::where('name', '=', UserRoles::ADMINISTRATOR->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::ADMINISTRATOR->value)->first()) ->has(Setting::factory()->createDefaultSetting_PREF_THEME()) ->has(Setting::factory()->createDefaultSetting_PREF_DATE_FORMAT()) ->has(Setting::factory()->createDefaultSetting_PREF_TIME_FORMAT()) @@ -69,7 +69,7 @@ public function test_user_api_call_update_without_access_right_expect_unauthoriz $userArr = User::factory()->make()->toArray(); $userArr = array_merge($userArr, Profile::factory()->make()->toArray()); - $role = Role::where('name', '=', UserRoles::DEVELOPER->value)->first(); + $role = Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first(); $userArr['roles'][0] = [ 'id' => HashIds::encode($role->id), 'display_name' => $role->display_name, @@ -97,7 +97,7 @@ public function test_user_api_call_update_with_script_tags_in_payload_expect_enc public function test_user_api_call_update_expect_successful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); @@ -105,7 +105,7 @@ public function test_user_api_call_update_expect_successful() $user = User::factory() ->setCreatedAt()->setUpdatedAt() ->has(Profile::factory()->setCreatedAt()->setUpdatedAt()) - ->hasAttached(Role::where('name', '=', UserRoles::ADMINISTRATOR->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::ADMINISTRATOR->value)->first()) ->has(Setting::factory()->createDefaultSetting_PREF_THEME()) ->has(Setting::factory()->createDefaultSetting_PREF_DATE_FORMAT()) ->has(Setting::factory()->createDefaultSetting_PREF_TIME_FORMAT()) @@ -114,7 +114,7 @@ public function test_user_api_call_update_expect_successful() $userArr = User::factory()->make()->toArray(); $userArr = array_merge($userArr, Profile::factory()->make()->toArray()); - $role = Role::where('name', '=', UserRoles::DEVELOPER->value)->first(); + $role = Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first(); $userArr['roles'][0] = [ 'id' => HashIds::encode($role->id), 'display_name' => $role->display_name, diff --git a/api/tests/Feature/API/UserAPI/UserAPIReadTest.php b/api/tests/Feature/API/UserAPI/UserAPIReadTest.php index fa11e1d0b..cce695afb 100644 --- a/api/tests/Feature/API/UserAPI/UserAPIReadTest.php +++ b/api/tests/Feature/API/UserAPI/UserAPIReadTest.php @@ -2,7 +2,7 @@ namespace Tests\Feature\API\UserAPI; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Role; use App\Models\User; use Exception; @@ -19,15 +19,17 @@ protected function setUp(): void public function test_user_api_call_read_any_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $api = $this->getJson(route('api.get.db.admin.user.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertUnauthorized(); @@ -41,11 +43,13 @@ public function test_user_api_call_read_any_without_access_right_expect_unauthor $this->actingAs($user); $api = $this->getJson(route('api.get.db.admin.user.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertForbidden(); @@ -59,7 +63,7 @@ public function test_user_api_call_read_with_sql_injection_expect_injection_igno public function test_user_api_call_read_without_authorization_expect_unauthorized_message() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $api = $this->getJson(route('api.get.db.admin.user.read', $user->ulid)); @@ -82,17 +86,19 @@ public function test_user_api_call_read_without_access_right_expect_unauthorized public function test_user_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); $api = $this->getJson(route('api.get.db.admin.user.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertSuccessful(); @@ -107,11 +113,13 @@ public function test_user_api_call_read_any_with_or_without_pagination_expect_pa ]); $api = $this->getJson(route('api.get.db.admin.user.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => false, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertSuccessful(); @@ -120,17 +128,19 @@ public function test_user_api_call_read_any_with_or_without_pagination_expect_pa public function test_user_api_call_read_any_with_pagination_expect_several_per_page() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); $api = $this->getJson(route('api.get.db.admin.user.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => 1, - 'per_page' => 25, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertSuccessful(); @@ -153,7 +163,7 @@ public function test_user_api_call_read_any_with_pagination_expect_several_per_p public function test_user_api_call_read_any_with_search_expect_filtered_results() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); @@ -162,11 +172,13 @@ public function test_user_api_call_read_any_with_search_expect_filtered_results( User::factory()->setName('testing2')->create(); $api = $this->getJson(route('api.get.db.admin.user.read_any', [ + 'with_trashed' => false, 'search' => 'testing', - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertSuccessful(); @@ -184,12 +196,14 @@ public function test_user_api_call_read_any_with_search_expect_filtered_results( public function test_user_api_call_read_any_without_search_querystring_expect_failed() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); - $api = $this->getJson(route('api.get.db.admin.user.read_any', [])); + $api = $this->getJson(route('api.get.db.admin.user.read_any', [ + 'with_trashed' => false, + ])); $api->assertUnprocessable(); } @@ -197,17 +211,19 @@ public function test_user_api_call_read_any_without_search_querystring_expect_fa public function test_user_api_call_read_any_with_special_char_in_search_expect_results() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); $api = $this->getJson(route('api.get.db.admin.user.read_any', [ - 'search' => "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~", - 'paginate' => true, - 'page' => 1, - 'per_page' => 10, + 'with_trashed' => false, + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertSuccessful(); @@ -225,17 +241,19 @@ public function test_user_api_call_read_any_with_special_char_in_search_expect_r public function test_user_api_call_read_any_with_negative_value_in_parameters_expect_results() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); $api = $this->getJson(route('api.get.db.admin.user.read_any', [ + 'with_trashed' => false, 'search' => '', - 'paginate' => true, - 'page' => -1, - 'per_page' => -10, 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], ])); $api->assertSuccessful(); @@ -253,7 +271,7 @@ public function test_user_api_call_read_any_with_negative_value_in_parameters_ex public function test_user_api_call_read_expect_successful() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); @@ -267,7 +285,7 @@ public function test_user_api_call_read_without_ulid_expect_exception() { $this->expectException(Exception::class); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); @@ -278,7 +296,7 @@ public function test_user_api_call_read_without_ulid_expect_exception() public function test_user_api_call_read_with_nonexistance_ulid_expect_not_found() { $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->create(); $this->actingAs($user); diff --git a/api/tests/Feature/API/WarehouseAPI/WarehouseAPICreateTest.php b/api/tests/Feature/API/WarehouseAPI/WarehouseAPICreateTest.php new file mode 100644 index 000000000..61c225ca5 --- /dev/null +++ b/api/tests/Feature/API/WarehouseAPI/WarehouseAPICreateTest.php @@ -0,0 +1,300 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $branch = $company->branches()->inRandomOrder()->first(); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + $api->assertUnauthorized(); + } + + public function test_warehouse_api_call_store_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $branch = $company->branches()->inRandomOrder()->first(); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + $api->assertForbidden(); + } + + public function test_warehouse_api_call_store_with_script_tags_in_payload_expect_stripped() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_warehouse_api_call_store_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_warehouse_api_call_store_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $branch = $company->branches()->inRandomOrder()->first(); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('warehouses', [ + 'company_id' => $company->id, + 'branch_id' => $branch->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'address' => $payload['address'], + 'city' => $payload['city'], + 'contact' => $payload['contact'], + 'remarks' => $payload['remarks'], + 'status' => $payload['status'], + ]); + } + + public function test_warehouse_api_call_store_with_nonexistance_branch_id_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + + $branchId = Branch::max('id') + 1; + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branchId), + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + $api->assertUnprocessable(); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_warehouse_api_call_store_with_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create([ + 'code' => 'test1', + ]); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + $api->assertUnprocessable(); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_warehouse_api_call_store_with_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->has(Company::factory()->setStatusActive() + ->has(Branch::factory()->setStatusActive())) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->take(2)->get(); + + $company_1 = $companies[0]; + $branch_1 = $company_1->branches()->inRandomOrder()->first(); + + $company_2 = $companies[1]; + $branch_2 = $company_2->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company_1)->for($branch_1)->create([ + 'code' => 'test1', + ]); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'branch_id' => Hashids::encode($branch_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('warehouses', [ + 'company_id' => $company_2->id, + 'branch_id' => $branch_2->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'address' => $payload['address'], + 'city' => $payload['city'], + 'contact' => $payload['contact'], + 'remarks' => $payload['remarks'], + 'status' => $payload['status'], + ]); + } + + public function test_warehouse_api_call_store_with_existing_name_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has( + Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create([ + 'name' => 'Gudang Sama', + ]); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'name' => 'Gudang Sama', + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + $api->assertUnprocessable(); + $api->assertJsonValidationErrors(['name']); + } + + public function test_warehouse_api_call_store_with_empty_string_parameters_expect_validation_error() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->create(); + + $this->actingAs($user); + + $payload = []; + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + $api->assertJsonValidationErrors(['company_id', 'code', 'name']); + } + + public function test_warehouse_api_call_store_with_sql_injection_payload_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'code' => "'; DROP TABLE warehouses; --", + 'name' => "'; DROP TABLE warehouses; --", + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.save'), $payload); + + // Should succeed because it's just text, but shouldn't execute SQL. + // If it was vulnerable, the table might be dropped or error out. + // We expect it to be saved as is or handled gracefully. + // Here we just check it is successful (saved as text) or validation error if there are rules against special chars. + // Assuming no strict regex on code/name, it should be saved. + $api->assertSuccessful(); + + $this->assertDatabaseHas('warehouses', [ + 'company_id' => $company->id, + 'branch_id' => $branch->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } +} diff --git a/api/tests/Feature/API/WarehouseAPI/WarehouseAPIDeleteTest.php b/api/tests/Feature/API/WarehouseAPI/WarehouseAPIDeleteTest.php new file mode 100644 index 000000000..9814eb29c --- /dev/null +++ b/api/tests/Feature/API/WarehouseAPI/WarehouseAPIDeleteTest.php @@ -0,0 +1,130 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->json('POST', route('api.post.warehouse.delete', $warehouse->ulid)); + + $api->assertUnauthorized(); + } + + public function test_warehouse_api_call_delete_without_access_right_expect_unauthorized_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->json('POST', route('api.post.warehouse.delete', $warehouse->ulid)); + + $api->assertForbidden(); + } + + public function test_warehouse_api_call_delete_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->json('POST', route('api.post.warehouse.delete', $warehouse->ulid)); + + $api->assertSuccessful(); + $this->assertSoftDeleted('warehouses', [ + 'id' => $warehouse->id, + ]); + } + + public function test_warehouse_api_call_delete_of_nonexistance_ulid_expect_not_found() + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->json('POST', route('api.post.warehouse.delete', $ulid)); + + $api->assertStatus(404); + } + + public function test_warehouse_api_call_delete_without_parameters_expect_failed() + { + $this->expectException(Exception::class); + $user = User::factory()->create(); + + $this->actingAs($user); + $api = $this->json('POST', route('api.post.warehouse.delete', null)); + } + + public function test_warehouse_api_call_delete_with_sql_injection_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + '1 OR SLEEP(5)', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + "admin'--", + "' OR 1=1 --", + ]; + + $testIdx = random_int(0, count($injections) - 1); + $injection = $injections[$testIdx]; + + $api = $this->json('POST', route('api.post.warehouse.delete', $injection)); + + $api->assertStatus(404); + } +} diff --git a/api/tests/Feature/API/WarehouseAPI/WarehouseAPIEditTest.php b/api/tests/Feature/API/WarehouseAPI/WarehouseAPIEditTest.php new file mode 100644 index 000000000..09c055df0 --- /dev/null +++ b/api/tests/Feature/API/WarehouseAPI/WarehouseAPIEditTest.php @@ -0,0 +1,270 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.edit', $warehouse->ulid), $payload); + + $api->assertUnauthorized(); + } + + public function test_warehouse_api_call_update_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.edit', $warehouse->ulid), $payload); + + $api->assertForbidden(); + } + + public function test_warehouse_api_call_update_with_script_tags_in_payload_expect_stripped() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_warehouse_api_call_update_with_script_tags_in_payload_expect_encoded() + { + $this->markTestSkipped('Test under construction'); + } + + public function test_warehouse_api_call_update_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.edit', $warehouse->ulid), $payload); + + $api->assertSuccessful(); + $this->assertDatabaseHas('warehouses', [ + 'id' => $warehouse->id, + 'company_id' => $company->id, + 'branch_id' => $branch->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'address' => $payload['address'], + 'city' => $payload['city'], + 'contact' => $payload['contact'], + 'remarks' => $payload['remarks'], + 'status' => $payload['status'], + ]); + } + + public function test_warehouse_api_call_update_with_nonexistance_branch_id_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $newBranchId = Branch::max('id') + 1; + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($newBranchId), + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.edit', $warehouse->ulid), $payload); + + $api->assertUnprocessable(); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_warehouse_api_call_update_and_use_existing_code_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + $branch = $company->branches()->inRandomOrder()->first(); + Warehouse::factory()->for($company)->for($branch)->count(2)->create(); + + $warehouses = $company->warehouses()->inRandomOrder()->take(2)->get(); + $warehouse_1 = $warehouses[0]; + $warehouse_2 = $warehouses[1]; + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'code' => $warehouse_1->code, + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.edit', $warehouse_2->ulid), $payload); + + $api->assertUnprocessable(); + $api->assertJsonStructure([ + 'errors', + ]); + } + + public function test_warehouse_api_call_update_and_use_existing_code_in_different_company_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->has(Company::factory()->setStatusActive() + ->has(Branch::factory()->setStatusActive())) + ->create(); + + $this->actingAs($user); + + $companies = $user->companies()->inRandomOrder()->get(); + + $company_1 = $companies[0]; + $branch_1 = $company_1->branches()->first(); + Warehouse::factory()->for($company_1)->for($branch_1)->create([ + 'code' => 'test1', + ]); + + $company_2 = $companies[1]; + $branch_2 = $company_2->branches()->first(); + $warehouse_2 = Warehouse::factory()->for($company_2)->for($branch_2)->create([ + 'code' => 'test2', + ]); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company_2->id), + 'branch_id' => Hashids::encode($branch_2->id), + 'code' => 'test1', + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.edit', $warehouse_2->ulid), $payload); + + $api->assertSuccessful(); + } + + public function test_warehouse_api_call_update_and_use_existing_name_in_same_company_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies->first(); + $branch = $company->branches()->inRandomOrder()->first(); + Warehouse::factory()->for($company)->for($branch)->count(2)->create(); + + $warehouses = $company->warehouses()->inRandomOrder()->take(2)->get(); + $warehouse_1 = $warehouses[0]; + $warehouse_2 = $warehouses[1]; + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'name' => $warehouse_1->name, + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.edit', $warehouse_2->ulid), $payload); + + $api->assertUnprocessable(); + $api->assertJsonValidationErrors(['name']); + } + + public function test_warehouse_api_call_update_with_sql_injection_payload_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch())) + ->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $payload = Warehouse::factory()->make([ + 'company_id' => Hashids::encode($company->id), + 'branch_id' => Hashids::encode($branch->id), + 'code' => "'; DROP TABLE warehouses; --", + 'name' => "'; DROP TABLE warehouses; --", + ])->toArray(); + + $api = $this->json('POST', route('api.post.warehouse.edit', $warehouse->ulid), $payload); + + $api->assertSuccessful(); + + $this->assertDatabaseHas('warehouses', [ + 'id' => $warehouse->id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } +} diff --git a/api/tests/Feature/API/WarehouseAPI/WarehouseAPIReadTest.php b/api/tests/Feature/API/WarehouseAPI/WarehouseAPIReadTest.php new file mode 100644 index 000000000..f95829fee --- /dev/null +++ b/api/tests/Feature/API/WarehouseAPI/WarehouseAPIReadTest.php @@ -0,0 +1,542 @@ +hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertUnauthorized(); + } + + public function test_warehouse_api_call_read_any_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertForbidden(); + } + + public function test_warehouse_api_call_read_without_authorization_expect_unauthorized_message() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $ulid = $warehouse->ulid; + + $api = $this->getJson(route('api.get.warehouse.read', $ulid)); + + $api->assertUnauthorized(); + } + + public function test_warehouse_api_call_read_without_access_right_expect_forbidden_message() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $ulid = $warehouse->ulid; + + $api = $this->getJson(route('api.get.warehouse.read', $ulid)); + + $api->assertForbidden(); + } + + public function test_warehouse_api_call_read_with_sql_injection_expect_injection_ignored() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create(); + + $injections = [ + "' OR '1'='1", + '1 UNION SELECT username, password FROM users', + '1; DROP TABLE users', + "' OR '1'='1' --", + '1 OR SLEEP(5)', + "1; INSERT INTO logs (message) VALUES ('Injected SQL query')", + "1; UPDATE users SET password = 'hacked' WHERE id = 1; --", + "admin'--", + "' OR 1=1 --", + ]; + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'branch_id' => Hashids::encode($branch->id), + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'total' => 0, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $testIdx = random_int(0, count($injections) - 1); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => $injections[$testIdx], + 'branch_id' => Hashids::encode($branch->id), + 'status' => null, + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'data' => [], + ]); + } + + public function test_warehouse_api_call_read_any_with_or_without_pagination_expect_paginator_or_collection() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'branch_id' => null, + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 10, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'branch_id' => null, + 'status' => null, + 'refresh' => true, + 'get' => [ + 'limit' => 10, + ], + ])); + + $api->assertSuccessful(); + } + + public function test_warehouse_api_call_read_any_with_pagination_expect_several_per_page() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'branch_id' => null, + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + + $api->assertJsonFragment([ + 'per_page' => 25, + ]); + + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_warehouse_api_call_read_any_with_search_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setIsDefault() + ->has(Branch::factory()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch) + ->count(2)->create(); + + Warehouse::factory()->for($company)->for($branch) + ->insertStringInName('testing') + ->count(3)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => 'testing', + 'branch_id' => null, + 'status' => null, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 3, + ]); + } + + public function test_warehouse_api_call_read_any_without_search_querystring_expect_failed() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + ])); + + $api->assertUnprocessable(); + } + + public function test_warehouse_api_call_read_any_with_special_char_in_search_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => " !#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", + 'branch_id' => null, + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + } + + public function test_warehouse_api_call_read_any_with_negative_value_in_parameters_expect_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'branch_id' => null, + 'status' => null, + 'refresh' => false, + 'paginate' => [ + 'page' => -1, + 'per_page' => -25, + ], + ])); + + $api->assertUnprocessable(); + } + + public function test_warehouse_api_call_read_expect_successful() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $ulid = $warehouse->ulid; + + $api = $this->getJson(route('api.get.warehouse.read', $ulid)); + + $api->assertSuccessful(); + } + + public function test_warehouse_api_call_read_without_ulid_expect_exception() + { + $this->expectException(Exception::class); + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $this->getJson(route('api.get.warehouse.read', null)); + } + + public function test_warehouse_api_call_read_with_nonexistance_ulid_expect_not_found() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $ulid = Str::ulid()->generate(); + + $api = $this->getJson(route('api.get.warehouse.read', $ulid)); + + $api->assertStatus(404); + } + + public function test_warehouse_api_call_read_any_with_status_filter_expect_filtered_results() + { + $user = User::factory() + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + )->create(); + + $this->actingAs($user); + + $company = $user->companies()->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + Warehouse::factory()->for($company)->for($branch) + ->count(2)->create(); + + Warehouse::factory()->for($company)->for($branch) + ->setStatusInactive() + ->count(3)->create(); + + $api = $this->getJson(route('api.get.warehouse.read_any', [ + 'with_trashed' => false, + 'company_id' => Hashids::encode($company->id), + 'search' => '', + 'branch_id' => null, + 'status' => RecordStatusEnum::ACTIVE->value, + 'refresh' => true, + 'paginate' => [ + 'page' => 1, + 'per_page' => 25, + ], + ])); + + $api->assertSuccessful(); + $api->assertJsonStructure([ + 'data', + 'links' => [ + 'first', 'last', 'prev', 'next', + ], + 'meta' => [ + 'current_page', 'from', 'last_page', 'links', 'path', 'per_page', 'to', 'total', + ], + ]); + + $api->assertJsonFragment([ + 'total' => 2, + ]); + } +} diff --git a/api/tests/Unit/Actions/BranchActions/BranchActionsCreateTest.php b/api/tests/Unit/Actions/BranchActions/BranchActionsCreateTest.php index feef785c0..41a5611b4 100644 --- a/api/tests/Unit/Actions/BranchActions/BranchActionsCreateTest.php +++ b/api/tests/Unit/Actions/BranchActions/BranchActionsCreateTest.php @@ -3,10 +3,11 @@ namespace Tests\Unit\Actions\BranchActions; use App\Actions\Branch\BranchActions; +use App\DTOs\BranchCreateDTO; use App\Models\Branch; use App\Models\Company; use App\Models\User; -use Exception; +use ArgumentCountError; use Tests\ActionsTestCase; class BranchActionsCreateTest extends ActionsTestCase @@ -28,23 +29,72 @@ public function test_branch_actions_call_create_expect_db_has_record() $company = $user->companies()->inRandomOrder()->first(); - $branchArr = Branch::factory()->for($company) + $payload = Branch::factory()->for($company) ->setStatusActive()->setIsMainBranch() ->make()->toArray(); - $result = $this->branchActions->create($branchArr); + $dto = new BranchCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + city: $payload['city'], + contact: $payload['contact'], + isMain: $payload['is_main'], + remarks: $payload['remarks'], + status: $payload['status'] + ); + $result = $this->branchActions->create($dto); $this->assertDatabaseHas('branches', [ 'id' => $result->id, - 'company_id' => $branchArr['company_id'], - 'code' => $branchArr['code'], - 'name' => $branchArr['name'], + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_branch_actions_call_create_with_is_main_expect_other_branches_reset() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->state(['is_main' => true])) + ) + ->create(); + + $company = $user->companies()->first(); + $previousMainBranch = $company->branches()->first(); + $payload = Branch::factory()->for($company) + ->setStatusActive() + ->setIsMainBranch() + ->make() + ->toArray(); + + $dto = new BranchCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + city: $payload['city'], + contact: $payload['contact'], + isMain: true, + remarks: $payload['remarks'], + status: $payload['status'], + ); + + $result = $this->branchActions->create($dto); + $this->assertTrue((bool) $result->is_main); + $this->assertDatabaseHas('branches', [ + 'id' => $previousMainBranch->id, + 'is_main' => false, ]); } public function test_branch_actions_call_create_with_empty_array_parameters_expect_exception() { - $this->expectException(Exception::class); - $this->branchActions->create([]); + $this->expectException(ArgumentCountError::class); + $dto = new BranchCreateDTO(...[]); + + $this->branchActions->create($dto); } } diff --git a/api/tests/Unit/Actions/BranchActions/BranchActionsEditTest.php b/api/tests/Unit/Actions/BranchActions/BranchActionsEditTest.php index 26c5bfb6e..43ebe1343 100644 --- a/api/tests/Unit/Actions/BranchActions/BranchActionsEditTest.php +++ b/api/tests/Unit/Actions/BranchActions/BranchActionsEditTest.php @@ -3,10 +3,11 @@ namespace Tests\Unit\Actions\BranchActions; use App\Actions\Branch\BranchActions; +use App\DTOs\BranchUpdateDTO; use App\Models\Branch; use App\Models\Company; use App\Models\User; -use Exception; +use ArgumentCountError; use Tests\ActionsTestCase; class BranchActionsEditTest extends ActionsTestCase @@ -30,22 +31,68 @@ public function test_branch_actions_call_update_expect_db_updated() $company = $user->companies()->inRandomOrder()->first(); $branch = $company->branches()->inRandomOrder()->first(); - $branchArr = Branch::factory()->make()->toArray(); + $payload = Branch::factory()->make()->toArray(); - $result = $this->branchActions->update($branch, $branchArr); + $dto = new BranchUpdateDTO( + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + city: $payload['city'], + contact: $payload['contact'], + isMain: $payload['is_main'], + remarks: $payload['remarks'], + status: $payload['status'] + ); + $result = $this->branchActions->update($branch, $dto); $this->assertInstanceOf(Branch::class, $result); $this->assertDatabaseHas('branches', [ 'id' => $branch->id, 'company_id' => $branch->company_id, - 'code' => $branchArr['code'], - 'name' => $branchArr['name'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_branch_actions_call_update_with_is_main_expect_other_branches_reset() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->count(2)->state([ + 'is_main' => false, + ])) + ) + ->create(); + + $company = $user->companies()->first(); + $branches = $company->branches()->orderBy('id')->take(2)->get(); + $previousMainBranch = $branches[0]; + $previousMainBranch->update(['is_main' => true]); + $targetBranch = $branches[1]; + $payload = Branch::factory()->setStatusActive()->setIsMainBranch()->make()->toArray(); + + $dto = new BranchUpdateDTO( + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + city: $payload['city'], + contact: $payload['contact'], + isMain: true, + remarks: $payload['remarks'], + status: $payload['status'], + ); + + $result = $this->branchActions->update($targetBranch, $dto); + $this->assertTrue((bool) $result->is_main); + $this->assertDatabaseHas('branches', [ + 'id' => $previousMainBranch->id, + 'is_main' => false, ]); } public function test_branch_actions_call_update_with_empty_array_parameters_expect_exception() { - $this->expectException(Exception::class); + $this->expectException(ArgumentCountError::class); $user = User::factory() ->has(Company::factory()->setStatusActive()->setIsDefault() @@ -55,8 +102,8 @@ public function test_branch_actions_call_update_with_empty_array_parameters_expe $branch = $user->companies()->inRandomOrder()->first() ->branches()->inRandomOrder()->first(); - $branchArr = []; + $dto = new BranchUpdateDTO(...[]); - $this->branchActions->update($branch, $branchArr); + $this->branchActions->update($branch, $dto); } } diff --git a/api/tests/Unit/Actions/BranchActions/BranchActionsReadTest.php b/api/tests/Unit/Actions/BranchActions/BranchActionsReadTest.php index b0dd5039d..1acfa5149 100644 --- a/api/tests/Unit/Actions/BranchActions/BranchActionsReadTest.php +++ b/api/tests/Unit/Actions/BranchActions/BranchActionsReadTest.php @@ -3,7 +3,9 @@ namespace Tests\Unit\Actions\BranchActions; use App\Actions\Branch\BranchActions; -use App\Enums\UserRoles; +use App\DTOs\ExecuteDTO; +use App\DTOs\ExecutePaginationDTO; +use App\Enums\UserRolesEnum; use App\Models\Branch; use App\Models\Company; use App\Models\Role; @@ -34,11 +36,20 @@ public function test_branch_actions_call_read_any_with_paginate_true_expect_pagi $company = $user->companies()->inRandomOrder()->first(); $result = $this->branchActions->readAny( + withTrashed: false, companyId: $company->id, search: '', - paginate: true, - page: 1, - perPage: 10 + isMain: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10 + ), + get: null + ) ); $this->assertInstanceOf(Paginator::class, $result); @@ -54,9 +65,17 @@ public function test_branch_actions_call_read_any_with_paginate_false_expect_col $company = $user->companies()->inRandomOrder()->first(); $result = $this->branchActions->readAny( + withTrashed: false, companyId: $company->id, search: '', - paginate: false + isMain: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: null + ) ); $this->assertInstanceOf(Collection::class, $result); @@ -66,9 +85,17 @@ public function test_branch_actions_call_read_any_with_nonexistance_companyId_ex { $maxId = Company::max('id') + 1; $result = $this->branchActions->readAny( + withTrashed: false, companyId: $maxId, search: '', - paginate: false + isMain: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: null + ) ); $this->assertInstanceOf(Collection::class, $result); @@ -99,11 +126,20 @@ public function test_branch_actions_call_read_any_with_search_parameter_expect_f $company = $user->companies()->inRandomOrder()->first(); $result = $this->branchActions->readAny( + withTrashed: false, companyId: $company->id, search: 'testing', - paginate: true, - page: 1, - perPage: 10 + isMain: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10 + ), + get: null + ) ); $this->assertInstanceOf(Paginator::class, $result); @@ -116,7 +152,7 @@ public function test_branch_actions_call_read_any_with_page_parameter_negative_e $idxMainBranch = random_int(0, $branchCount - 1); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive() ->has(Branch::factory()->setStatusActive()->count($branchCount) ->state(new Sequence( @@ -130,42 +166,20 @@ public function test_branch_actions_call_read_any_with_page_parameter_negative_e $company = $user->companies()->inRandomOrder()->first(); $result = $this->branchActions->readAny( + withTrashed: false, companyId: $company->id, search: '', - paginate: true, - page: -1, - perPage: 10 - ); - - $this->assertInstanceOf(Paginator::class, $result); - $this->assertTrue($result->total() == 3); - } - - public function test_branch_actions_call_read_any_with_perpage_parameter_negative_expect_results() - { - $branchCount = 3; - $idxMainBranch = random_int(0, $branchCount - 1); - - $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) - ->has(Company::factory()->setStatusActive() - ->has(Branch::factory()->setStatusActive()->count($branchCount) - ->state(new Sequence( - fn (Sequence $sequence) => [ - 'is_main' => $sequence->index == $idxMainBranch ? true : false, - ] - )) - )) - ->create(); - - $company = $user->companies()->inRandomOrder()->first(); - - $result = $this->branchActions->readAny( - companyId: $company->id, - search: '', - paginate: true, - page: 1, - perPage: -10 + isMain: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: -1, + perPage: 10 + ), + get: null + ) ); $this->assertInstanceOf(Paginator::class, $result); diff --git a/api/tests/Unit/Actions/BrandActions/BrandActionsCreateTest.php b/api/tests/Unit/Actions/BrandActions/BrandActionsCreateTest.php new file mode 100644 index 000000000..fa6a7eac9 --- /dev/null +++ b/api/tests/Unit/Actions/BrandActions/BrandActionsCreateTest.php @@ -0,0 +1,54 @@ +brandActions = new BrandActions(); + } + + public function test_brand_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Brand::factory()->for($company)->make()->toArray(); + + $dto = new \App\DTOs\BrandCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'] + ); + + $result = $this->brandActions->create($dto); + $this->assertDatabaseHas('brands', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_brand_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\BrandCreateDTO(); + + $this->brandActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/BrandActions/BrandActionsDeleteTest.php b/api/tests/Unit/Actions/BrandActions/BrandActionsDeleteTest.php new file mode 100644 index 000000000..289c6d194 --- /dev/null +++ b/api/tests/Unit/Actions/BrandActions/BrandActionsDeleteTest.php @@ -0,0 +1,39 @@ +brandActions = new BrandActions(); + } + + public function test_brand_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Brand::factory()) + )->create(); + + $brand = $user->companies()->inRandomOrder()->first() + ->brands()->inRandomOrder()->first(); + $result = $this->brandActions->delete($brand); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('brands', [ + 'id' => $brand->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/BrandActions/BrandActionsEditTest.php b/api/tests/Unit/Actions/BrandActions/BrandActionsEditTest.php new file mode 100644 index 000000000..d841ee5a2 --- /dev/null +++ b/api/tests/Unit/Actions/BrandActions/BrandActionsEditTest.php @@ -0,0 +1,68 @@ +brandActions = new BrandActions(); + } + + public function test_brand_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Brand::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $brand = $company->brands()->inRandomOrder()->first(); + + $payload = Brand::factory()->make()->toArray(); + + $dto = new \App\DTOs\BrandUpdateDTO( + code: $payload['code'], + name: $payload['name'] + ); + + $result = $this->brandActions->update($brand, $dto); + $this->assertInstanceOf(Brand::class, $result); + $this->assertDatabaseHas('brands', [ + 'id' => $brand->id, + 'company_id' => $brand->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_brand_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Brand::factory()) + )->create(); + + $brand = $user->companies()->inRandomOrder()->first() + ->brands()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\BrandUpdateDTO(); + + $this->brandActions->update($brand, $dto); + } +} diff --git a/api/tests/Unit/Actions/BrandActions/BrandActionsReadTest.php b/api/tests/Unit/Actions/BrandActions/BrandActionsReadTest.php new file mode 100644 index 000000000..42c9f3b57 --- /dev/null +++ b/api/tests/Unit/Actions/BrandActions/BrandActionsReadTest.php @@ -0,0 +1,158 @@ +brandActions = new BrandActions(); + } + + public function test_brand_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Brand::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->brandActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_brand_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Brand::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->brandActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_brand_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->brandActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_brand_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $brandCount = 4; + $idxTest = random_int(0, $brandCount - 1); + $defaultName = Brand::factory()->make()->name; + $testname = Brand::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Brand::factory()->count($brandCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->brandActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_brand_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_brand_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_brand_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Brand::factory()) + )->create(); + + $brand = $user->companies()->inRandomOrder()->first() + ->brands()->inRandomOrder()->first(); + + $result = $this->brandActions->read($brand); + + $this->assertInstanceOf(Brand::class, $result); + } +} diff --git a/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsCreateTest.php b/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsCreateTest.php new file mode 100644 index 000000000..d807d3485 --- /dev/null +++ b/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsCreateTest.php @@ -0,0 +1,62 @@ +cashAccountActions = new CashAccountActions(); + } + + public function test_cash_account_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()->has(Branch::factory())) + ->create(); + + $company = $user->companies()->whereHas('branches')->inRandomOrder()->first(); + $branch = $company->branches()->inRandomOrder()->first(); + + $payload = CashAccount::factory()->for($company) + ->make()->toArray(); + $payload['branch_id'] = $branch->id; + + $dto = new \App\DTOs\CashAccountCreateDTO( + companyId: $payload['company_id'], + branchId: $payload['branch_id'], + code: $payload['code'], + name: $payload['name'], + isBank: $payload['is_bank'], + isActive: $payload['is_active'], + remarks: $payload['remarks'] + ); + + $result = $this->cashAccountActions->create($dto); + $this->assertDatabaseHas('cash_accounts', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_cash_account_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\CashAccountCreateDTO(); + + $this->cashAccountActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsDeleteTest.php b/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsDeleteTest.php new file mode 100644 index 000000000..096e82470 --- /dev/null +++ b/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsDeleteTest.php @@ -0,0 +1,47 @@ +cashAccountActions = new CashAccountActions(); + } + + public function test_cash_account_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()) + ->has( + CashAccount::factory()->state(function (array $attributes, Company $company) { + return [ + 'branch_id' => $company->branches()->inRandomOrder()->first()->id, + ]; + }) + ) + )->create(); + + $cashAccount = $user->companies()->inRandomOrder()->first() + ->cashAccounts()->inRandomOrder()->first(); + $result = $this->cashAccountActions->delete($cashAccount); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('cash_accounts', [ + 'id' => $cashAccount->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsEditTest.php b/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsEditTest.php new file mode 100644 index 000000000..68aa6134a --- /dev/null +++ b/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsEditTest.php @@ -0,0 +1,86 @@ +cashAccountActions = new CashAccountActions(); + } + + public function test_cash_account_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()) + ->has( + CashAccount::factory()->state(function (array $attributes, Company $company) { + return [ + 'branch_id' => $company->branches()->inRandomOrder()->first()->id, + ]; + }) + ) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $cashAccount = $company->cashAccounts()->inRandomOrder()->first(); + + $payload = CashAccount::factory()->make()->toArray(); + $payload['company_id'] = $company->id; + + $dto = new CashAccountUpdateDTO( + code: $payload['code'], + name: $payload['name'], + isBank: $payload['is_bank'], + isActive: $payload['is_active'], + remarks: $payload['remarks'] + ); + + $result = $this->cashAccountActions->update($cashAccount, $dto); + $this->assertInstanceOf(CashAccount::class, $result); + $this->assertDatabaseHas('cash_accounts', [ + 'id' => $cashAccount->id, + 'company_id' => $cashAccount->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_cash_account_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(\ArgumentCountError::class); + $dtoClass = \App\DTOs\CashAccountUpdateDTO::class; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()) + ->has( + CashAccount::factory()->state(function (array $attributes, Company $company) { + return [ + 'branch_id' => $company->branches()->inRandomOrder()->first()->id, + ]; + }) + ) + )->create(); + + $cashAccount = $user->companies()->inRandomOrder()->first() + ->cashAccounts()->inRandomOrder()->first(); + + $dto = new $dtoClass(...[]); + + $this->cashAccountActions->update($cashAccount, $dto); + } +} diff --git a/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsReadTest.php b/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsReadTest.php new file mode 100644 index 000000000..893aa21e1 --- /dev/null +++ b/api/tests/Unit/Actions/CashAccountActions/CashAccountActionsReadTest.php @@ -0,0 +1,211 @@ +cashAccountActions = new CashAccountActions(); + } + + public function test_cash_account_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()) + ->has( + CashAccount::factory()->state(function (array $attributes, Company $company) { + return [ + 'branch_id' => $company->branches()->inRandomOrder()->first()->id, + ]; + }) + ) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->cashAccountActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_cash_account_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()) + ->has( + CashAccount::factory()->state(function (array $attributes, Company $company) { + return [ + 'branch_id' => $company->branches()->inRandomOrder()->first()->id, + ]; + }) + ) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->cashAccountActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_cash_account_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->cashAccountActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_cash_account_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $cashAccountCount = 4; + $idxTest = random_int(0, $cashAccountCount - 1); + $defaultName = CashAccount::factory()->make()->name; + $testname = CashAccount::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()) + ->has( + CashAccount::factory()->count($cashAccountCount) + ->state(function (array $attributes, Company $company) { + return [ + 'branch_id' => $company->branches()->inRandomOrder()->first()->id, + ]; + }) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->cashAccountActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_cash_account_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $cashAccountCount = 3; + + $user = User::factory() + ->has(Company::factory()->setStatusActive() + ->has(Branch::factory()) + ->has(CashAccount::factory()->count($cashAccountCount)->state(function (array $attributes, Company $company) { + return [ + 'branch_id' => $company->branches()->inRandomOrder()->first()->id, + ]; + })) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->cashAccountActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: -1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == $cashAccountCount); + } + + public function test_cash_account_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()) + ->has( + CashAccount::factory()->state(function (array $attributes, Company $company) { + return [ + 'branch_id' => $company->branches()->inRandomOrder()->first()->id, + ]; + }) + ) + )->create(); + + $cashAccount = $user->companies()->inRandomOrder()->first() + ->cashAccounts()->inRandomOrder()->first(); + + $result = $this->cashAccountActions->read($cashAccount); + + $this->assertInstanceOf(CashAccount::class, $result); + } +} diff --git a/api/tests/Unit/Actions/CompanyActions/CompanyActionsCreateTest.php b/api/tests/Unit/Actions/CompanyActions/CompanyActionsCreateTest.php index 4b530b581..93af8fcf5 100644 --- a/api/tests/Unit/Actions/CompanyActions/CompanyActionsCreateTest.php +++ b/api/tests/Unit/Actions/CompanyActions/CompanyActionsCreateTest.php @@ -3,9 +3,9 @@ namespace Tests\Unit\Actions\CompanyActions; use App\Actions\Company\CompanyActions; +use App\DTOs\CompanyCreateDTO; use App\Models\Company; use App\Models\User; -use Exception; use Tests\ActionsTestCase; class CompanyActionsCreateTest extends ActionsTestCase @@ -16,30 +16,72 @@ protected function setUp(): void { parent::setUp(); - $this->companyActions = new CompanyActions(); + $this->companyActions = app(CompanyActions::class); } public function test_company_action_call_create_expect_db_has_record() { $user = User::factory()->create(); - $companyArr = Company::factory() + $payload = Company::factory() ->setStatusActive()->setIsDefault()->make([ 'user_id' => $user->id, ])->toArray(); - $result = $this->companyActions->create($companyArr); + $dto = new CompanyCreateDTO( + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + default: $payload['default'], + status: $payload['status'], + ); + + $result = $this->companyActions->create($user, $dto); $this->assertDatabaseHas('companies', [ 'id' => $result->id, - 'code' => $companyArr['code'], - 'name' => $companyArr['name'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_company_action_call_create_with_default_true_expect_previous_default_reset() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $previousDefaultCompany = $user->companies()->first(); + $payload = Company::factory() + ->setStatusActive() + ->setIsDefault() + ->make() + ->toArray(); + + $dto = new CompanyCreateDTO( + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + default: true, + status: $payload['status'], + ); + + $result = $this->companyActions->create($user, $dto); + $this->assertTrue((bool) $result->default); + $this->assertDatabaseHas('companies', [ + 'id' => $previousDefaultCompany->id, + 'default' => false, ]); } public function test_company_service_call_create_with_empty_array_parameters_expect_exception() { - $this->expectException(Exception::class); - $this->companyActions->create([]); + $user = User::factory()->create(); + $dtoClass = CompanyCreateDTO::class; + + $this->expectException(\ArgumentCountError::class); + $dto = new $dtoClass(...[]); + + $this->companyActions->create($user, $dto); } } diff --git a/api/tests/Unit/Actions/CompanyActions/CompanyActionsDeleteTest.php b/api/tests/Unit/Actions/CompanyActions/CompanyActionsDeleteTest.php index 54d52823c..6dbb8bcda 100644 --- a/api/tests/Unit/Actions/CompanyActions/CompanyActionsDeleteTest.php +++ b/api/tests/Unit/Actions/CompanyActions/CompanyActionsDeleteTest.php @@ -15,7 +15,7 @@ protected function setUp(): void { parent::setUp(); - $this->companyActions = new CompanyActions(); + $this->companyActions = app(CompanyActions::class); } public function test_company_actions_call_delete_expect_bool() diff --git a/api/tests/Unit/Actions/CompanyActions/CompanyActionsEditTest.php b/api/tests/Unit/Actions/CompanyActions/CompanyActionsEditTest.php index 30d1ad5fb..3f4ed32ae 100644 --- a/api/tests/Unit/Actions/CompanyActions/CompanyActionsEditTest.php +++ b/api/tests/Unit/Actions/CompanyActions/CompanyActionsEditTest.php @@ -3,9 +3,9 @@ namespace Tests\Unit\Actions\CompanyActions; use App\Actions\Company\CompanyActions; +use App\DTOs\CompanyUpdateDTO; use App\Models\Company; use App\Models\User; -use Exception; use Tests\ActionsTestCase; class CompanyActionsEditTest extends ActionsTestCase @@ -16,7 +16,7 @@ protected function setUp(): void { parent::setUp(); - $this->companyActions = new CompanyActions(); + $this->companyActions = app(CompanyActions::class); } public function test_company_service_call_update_expect_db_updated() @@ -26,29 +26,66 @@ public function test_company_service_call_update_expect_db_updated() ->create(); $company = $user->companies->first(); - $companyArr = Company::factory()->make()->toArray(); + $payload = Company::factory()->make()->toArray(); - $result = $this->companyActions->update($company, $companyArr); + $dto = new CompanyUpdateDTO( + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + default: $payload['default'], + status: $payload['status'], + ); + $result = $this->companyActions->update($user, $company, $dto); $this->assertInstanceOf(Company::class, $result); $this->assertDatabaseHas('companies', [ 'id' => $company->id, - 'code' => $companyArr['code'], - 'name' => $companyArr['name'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_company_service_call_update_with_default_true_expect_other_default_reset() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->has(Company::factory()->setStatusActive()->state(['default' => false])) + ->create(); + + $companies = $user->companies()->orderBy('id')->take(2)->get(); + $previousDefaultCompany = $companies[0]; + $targetCompany = $companies[1]; + $payload = Company::factory()->setStatusActive()->setIsDefault()->make()->toArray(); + + $dto = new CompanyUpdateDTO( + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + default: true, + status: $payload['status'], + ); + + $result = $this->companyActions->update($user, $targetCompany, $dto); + $this->assertTrue((bool) $result->default); + $this->assertDatabaseHas('companies', [ + 'id' => $previousDefaultCompany->id, + 'default' => false, ]); } public function test_company_service_call_update_with_empty_array_parameters_expect_exception() { - $this->expectException(Exception::class); + $this->expectException(\ArgumentCountError::class); + $dtoClass = CompanyUpdateDTO::class; $user = User::factory() ->has(Company::factory()->setStatusActive()->setIsDefault()) ->create(); $company = $user->companies->first(); - $companyArr = []; - $this->companyActions->update($company, $companyArr); + $dto = new $dtoClass(...[]); + + $this->companyActions->update($user, $company, $dto); } } diff --git a/api/tests/Unit/Actions/CompanyActions/CompanyActionsReadTest.php b/api/tests/Unit/Actions/CompanyActions/CompanyActionsReadTest.php index a5c2402b9..b52e9cf5e 100644 --- a/api/tests/Unit/Actions/CompanyActions/CompanyActionsReadTest.php +++ b/api/tests/Unit/Actions/CompanyActions/CompanyActionsReadTest.php @@ -3,7 +3,9 @@ namespace Tests\Unit\Actions\CompanyActions; use App\Actions\Company\CompanyActions; -use App\Enums\UserRoles; +use App\DTOs\ExecuteDTO; +use App\DTOs\ExecutePaginationDTO; +use App\Enums\UserRolesEnum; use App\Models\Company; use App\Models\Role; use App\Models\User; @@ -20,7 +22,7 @@ protected function setUp(): void { parent::setUp(); - $this->companyActions = new CompanyActions(); + $this->companyActions = app(CompanyActions::class); } public function test_company_actions_call_read_any_with_paginate_true_expect_paginator_object() @@ -30,11 +32,20 @@ public function test_company_actions_call_read_any_with_paginate_true_expect_pag ->create(); $result = $this->companyActions->readAny( - userId: $user->id, - search: '', - paginate: true, - page: 1, - perPage: 10 + user: $user, + withTrashed: false, + search: null, + default: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10, + ), + get: null, + ), ); $this->assertInstanceOf(Paginator::class, $result); @@ -47,9 +58,17 @@ public function test_company_actions_call_read_any_with_paginate_false_expect_co ->create(); $result = $this->companyActions->readAny( - userId: $user->id, - search: '', - paginate: false + user: $user, + withTrashed: false, + search: null, + default: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: null, + ), ); $this->assertInstanceOf(Collection::class, $result); @@ -75,11 +94,20 @@ public function test_company_actions_call_read_any_with_search_parameter_expect_ ->create(); $result = $this->companyActions->readAny( - userId: $user->id, + user: $user, + withTrashed: false, search: 'testing', - paginate: true, - page: 1, - perPage: 10 + default: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10, + ), + get: null, + ), ); $this->assertInstanceOf(Paginator::class, $result); @@ -92,7 +120,7 @@ public function test_company_actions_call_read_any_with_page_parameter_negative_ $idxDefaultCompany = random_int(0, $companyCount - 1); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->count($companyCount) ->state(new Sequence( fn (Sequence $sequence) => [ @@ -103,11 +131,20 @@ public function test_company_actions_call_read_any_with_page_parameter_negative_ ->create(); $result = $this->companyActions->readAny( - userId: $user->id, + user: $user, + withTrashed: false, search: '', - paginate: true, - page: -1, - perPage: 10 + default: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: -1, + perPage: 10, + ), + get: null, + ), ); $this->assertInstanceOf(Paginator::class, $result); @@ -120,7 +157,7 @@ public function test_company_actions_call_read_any_with_perpage_parameter_negati $idxDefaultCompany = random_int(0, $companyCount - 1); $user = User::factory() - ->hasAttached(Role::where('name', '=', UserRoles::DEVELOPER->value)->first()) + ->hasAttached(Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()) ->has(Company::factory()->setStatusActive()->count($companyCount) ->state(new Sequence( fn (Sequence $sequence) => [ @@ -131,11 +168,20 @@ public function test_company_actions_call_read_any_with_perpage_parameter_negati ->create(); $result = $this->companyActions->readAny( - userId: $user->id, + user: $user, + withTrashed: false, search: '', - paginate: true, - page: 1, - perPage: -10 + default: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: -10, + ), + get: null, + ), ); $this->assertInstanceOf(Paginator::class, $result); diff --git a/api/tests/Unit/Actions/CustomerActions/CustomerActionsCreateTest.php b/api/tests/Unit/Actions/CustomerActions/CustomerActionsCreateTest.php new file mode 100644 index 000000000..fef23d519 --- /dev/null +++ b/api/tests/Unit/Actions/CustomerActions/CustomerActionsCreateTest.php @@ -0,0 +1,84 @@ +customerActions = new CustomerActions(); + } + + public function test_customer_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $group = CustomerGroup::factory()->for($company)->create(); + + $payload = Customer::factory()->for($company) + ->make([ + 'group_id' => $group->id, + ])->toArray(); + + $dto = new \App\DTOs\CustomerCreateDTO( + companyId: $payload['company_id'], + groupId: $payload['group_id'], + code: $payload['code'], + name: $payload['name'], + paymentTermType: $payload['payment_term_type'], + paymentTerm: $payload['payment_term'], + taxableEnterprise: $payload['taxable_enterprise'], + taxId: $payload['tax_id'], + isMember: $payload['is_member'], + maxOpenInvoice: $payload['max_open_invoice'], + maxInvoiceAge: $payload['max_invoice_age'], + maxOutstandingInvoice: $payload['max_outstanding_invoice'], + zone: $payload['zone'], + remarks: $payload['remarks'], + status: $payload['status'] + ); + + $result = $this->customerActions->create($dto); + $this->assertDatabaseHas('customers', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'is_member' => $payload['is_member'], + 'name' => $payload['name'], + 'group_id' => $payload['group_id'], + 'zone' => $payload['zone'], + 'max_open_invoice' => $payload['max_open_invoice'], + 'max_outstanding_invoice' => $payload['max_outstanding_invoice'], + 'max_invoice_age' => $payload['max_invoice_age'], + 'payment_term_type' => $payload['payment_term_type'], + 'payment_term' => $payload['payment_term'], + 'taxable_enterprise' => $payload['taxable_enterprise'], + 'tax_id' => $payload['tax_id'], + 'status' => $payload['status'], + 'remarks' => $payload['remarks'], + ]); + } + + public function test_customer_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\CustomerCreateDTO(); + + $this->customerActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/CustomerActions/CustomerActionsDeleteTest.php b/api/tests/Unit/Actions/CustomerActions/CustomerActionsDeleteTest.php new file mode 100644 index 000000000..0a3c73532 --- /dev/null +++ b/api/tests/Unit/Actions/CustomerActions/CustomerActionsDeleteTest.php @@ -0,0 +1,39 @@ +customerActions = new CustomerActions(); + } + + public function test_customer_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Customer::factory()) + )->create(); + + $customer = $user->companies()->inRandomOrder()->first() + ->customers()->inRandomOrder()->first(); + $result = $this->customerActions->delete($customer); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('customers', [ + 'id' => $customer->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/CustomerActions/CustomerActionsEditTest.php b/api/tests/Unit/Actions/CustomerActions/CustomerActionsEditTest.php new file mode 100644 index 000000000..635891333 --- /dev/null +++ b/api/tests/Unit/Actions/CustomerActions/CustomerActionsEditTest.php @@ -0,0 +1,98 @@ +customerActions = new CustomerActions(); + } + + public function test_customer_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Customer::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customer = $company->customers()->inRandomOrder()->first(); + + $group = CustomerGroup::factory()->for($company)->create(); + + $payload = Customer::factory()->for($company) + ->make([ + 'group_id' => $group->id, + ])->toArray(); + + $dto = new \App\DTOs\CustomerUpdateDTO( + groupId: $payload['group_id'], + code: $payload['code'], + name: $payload['name'], + paymentTermType: $payload['payment_term_type'], + paymentTerm: $payload['payment_term'], + taxableEnterprise: $payload['taxable_enterprise'], + taxId: $payload['tax_id'], + isMember: $payload['is_member'], + maxOpenInvoice: $payload['max_open_invoice'], + maxInvoiceAge: $payload['max_invoice_age'], + maxOutstandingInvoice: $payload['max_outstanding_invoice'], + zone: $payload['zone'], + remarks: $payload['remarks'], + status: $payload['status'] + ); + + $result = $this->customerActions->update($customer, $dto); + $this->assertInstanceOf(Customer::class, $result); + $this->assertDatabaseHas('customers', [ + 'id' => $customer->id, + 'company_id' => $customer->company_id, + 'code' => $payload['code'], + 'is_member' => $payload['is_member'], + 'name' => $payload['name'], + 'group_id' => $payload['group_id'], + 'zone' => $payload['zone'], + 'max_open_invoice' => $payload['max_open_invoice'], + 'max_outstanding_invoice' => $payload['max_outstanding_invoice'], + 'max_invoice_age' => $payload['max_invoice_age'], + 'payment_term_type' => $payload['payment_term_type'], + 'payment_term' => $payload['payment_term'], + 'taxable_enterprise' => $payload['taxable_enterprise'], + 'tax_id' => $payload['tax_id'], + 'status' => $payload['status'], + 'remarks' => $payload['remarks'], + ]); + } + + public function test_customer_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Customer::factory()) + )->create(); + + $customer = $user->companies()->inRandomOrder()->first() + ->customers()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\CustomerUpdateDTO(); + + $this->customerActions->update($customer, $dto); + } +} diff --git a/api/tests/Unit/Actions/CustomerActions/CustomerActionsReadTest.php b/api/tests/Unit/Actions/CustomerActions/CustomerActionsReadTest.php new file mode 100644 index 000000000..0a6b863f0 --- /dev/null +++ b/api/tests/Unit/Actions/CustomerActions/CustomerActionsReadTest.php @@ -0,0 +1,211 @@ +customerActions = new CustomerActions(); + } + + public function test_customer_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Customer::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerActions->readAny( + withTrashed: false, + companyId: $company->id, + search: '', + isMember: null, + groupId: null, + zone: null, + maxOpenInvoice: null, + maxOutstandingInvoice: null, + maxInvoiceAge: null, + paymentTermType: null, + paymentTerm: null, + taxableEnterprise: null, + taxId: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10, + ), + get: null, + ) + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_customer_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Customer::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerActions->readAny( + withTrashed: false, + companyId: $company->id, + search: '', + isMember: null, + groupId: null, + zone: null, + maxOpenInvoice: null, + maxOutstandingInvoice: null, + maxInvoiceAge: null, + paymentTermType: null, + paymentTerm: null, + taxableEnterprise: null, + taxId: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: new ExecuteGetDTO( + limit: 10, + ), + ) + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_customer_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->customerActions->readAny( + withTrashed: false, + companyId: $maxId, + search: '', + isMember: null, + groupId: null, + zone: null, + maxOpenInvoice: null, + maxOutstandingInvoice: null, + maxInvoiceAge: null, + paymentTermType: null, + paymentTerm: null, + taxableEnterprise: null, + taxId: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: new ExecuteGetDTO( + limit: 10, + ), + ) + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_customer_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $customerCount = 4; + $idxTest = random_int(0, $customerCount - 1); + $defaultName = Customer::factory()->make()->name; + $testname = Customer::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Customer::factory()->count($customerCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerActions->readAny( + withTrashed: false, + companyId: $company->id, + search: 'testing', + isMember: null, + groupId: null, + zone: null, + maxOpenInvoice: null, + maxOutstandingInvoice: null, + maxInvoiceAge: null, + paymentTermType: null, + paymentTerm: null, + taxableEnterprise: null, + taxId: null, + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10, + ), + get: null, + ) + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_customer_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_customer_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_customer_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Customer::factory()) + )->create(); + + $customer = $user->companies()->inRandomOrder()->first() + ->customers()->inRandomOrder()->first(); + + $result = $this->customerActions->read($customer); + + $this->assertInstanceOf(Customer::class, $result); + } +} diff --git a/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsCreateTest.php b/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsCreateTest.php new file mode 100644 index 000000000..d03d4356e --- /dev/null +++ b/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsCreateTest.php @@ -0,0 +1,68 @@ +customerAddressActions = new CustomerAddressActions(); + } + + public function test_customer_address_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $customer = Customer::factory()->for($company)->create(); + + $payload = CustomerAddress::factory()->for($company) + ->make([ + 'customer_id' => $customer->id, + ])->toArray(); + + $dto = new \App\DTOs\CustomerAddressCreateDTO( + companyId: $payload['company_id'], + customerId: $payload['customer_id'], + address: $payload['address'], + city: $payload['city'], + contact: $payload['contact'], + isMain: $payload['is_main'], + remarks: $payload['remarks'] + ); + + $result = $this->customerAddressActions->create($dto); + $this->assertDatabaseHas('customer_addresses', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'customer_id' => $payload['customer_id'], + 'address' => $payload['address'], + 'city' => $payload['city'], + 'contact' => $payload['contact'], + 'is_main' => $payload['is_main'], + 'remarks' => $payload['remarks'], + ]); + } + + public function test_customer_address_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\CustomerAddressCreateDTO(); + + $this->customerAddressActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsDeleteTest.php b/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsDeleteTest.php new file mode 100644 index 000000000..2fb71194e --- /dev/null +++ b/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsDeleteTest.php @@ -0,0 +1,44 @@ +customerAddressActions = new CustomerAddressActions(); + } + + public function test_customer_address_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Customer::factory(), 'customers')) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customer = $company->customers()->inRandomOrder()->first(); + + $customerAddress = CustomerAddress::factory() + ->for($customer, 'customer') + ->create(); + $result = $this->customerAddressActions->delete($customerAddress); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('customer_addresses', [ + 'id' => $customerAddress->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsEditTest.php b/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsEditTest.php new file mode 100644 index 000000000..01ac70c1d --- /dev/null +++ b/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsEditTest.php @@ -0,0 +1,71 @@ +customerAddressActions = new CustomerAddressActions(); + } + + public function test_customer_address_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerAddress::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customerAddress = $company->customerAddresses()->inRandomOrder()->first(); + + $payload = CustomerAddress::factory()->make()->toArray(); + + $dto = new \App\DTOs\CustomerAddressUpdateDTO( + address: $payload['address'], + city: $payload['city'], + contact: $payload['contact'], + isMain: $payload['is_main'], + remarks: $payload['remarks'] + ); + + $result = $this->customerAddressActions->update($customerAddress, $dto); + $this->assertInstanceOf(CustomerAddress::class, $result); + $this->assertDatabaseHas('customer_addresses', [ + 'id' => $customerAddress->id, + 'company_id' => $customerAddress->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_customer_address_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerAddress::factory()) + )->create(); + + $customerAddress = $user->companies()->inRandomOrder()->first() + ->customerAddresses()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\CustomerAddressUpdateDTO(); + + $this->customerAddressActions->update($customerAddress, $dto); + } +} diff --git a/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsReadTest.php b/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsReadTest.php new file mode 100644 index 000000000..2b757e055 --- /dev/null +++ b/api/tests/Unit/Actions/CustomerAddressActions/CustomerAddressActionsReadTest.php @@ -0,0 +1,158 @@ +customerAddressActions = new CustomerAddressActions(); + } + + public function test_customer_address_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerAddress::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerAddressActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_customer_address_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerAddress::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerAddressActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_customer_address_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->customerAddressActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_customer_address_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $customerAddressCount = 4; + $idxTest = random_int(0, $customerAddressCount - 1); + $defaultName = CustomerAddress::factory()->make()->name; + $testname = CustomerAddress::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerAddress::factory()->count($customerAddressCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerAddressActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_customer_address_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_customer_address_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_customer_address_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerAddress::factory()) + )->create(); + + $customerAddress = $user->companies()->inRandomOrder()->first() + ->customerAddresses()->inRandomOrder()->first(); + + $result = $this->customerAddressActions->read($customerAddress); + + $this->assertInstanceOf(CustomerAddress::class, $result); + } +} diff --git a/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsCreateTest.php b/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsCreateTest.php new file mode 100644 index 000000000..18715ac4b --- /dev/null +++ b/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsCreateTest.php @@ -0,0 +1,70 @@ +customerGroupActions = new CustomerGroupActions(); + } + + public function test_customer_group_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = CustomerGroup::factory()->for($company) + ->make()->toArray(); + + $dto = new \App\DTOs\CustomerGroupCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + paymentTermType: $payload['payment_term_type'], + paymentTerm: $payload['payment_term'], + sellAtCost: $payload['sell_at_cost'], + sellingPoint: $payload['selling_point'], + sellingPointMultiple: $payload['selling_point_multiple'], + priceMarkupPercent: $payload['price_markup_percent'], + priceMarkupNominal: $payload['price_markup_nominal'], + priceMarkdownPercent: $payload['price_markdown_percent'], + priceMarkdownNominal: $payload['price_markdown_nominal'], + roundingType: $payload['rounding_type'], + roundingDigit: $payload['rounding_digit'], + maxOpenInvoice: $payload['max_open_invoice'], + maxInvoiceAge: $payload['max_invoice_age'], + maxOutstandingInvoice: $payload['max_outstanding_invoice'], + remarks: $payload['remarks'] + ); + + $result = $this->customerGroupActions->create($dto); + $this->assertDatabaseHas('customer_groups', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_customer_group_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\CustomerGroupCreateDTO(); + + $this->customerGroupActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsDeleteTest.php b/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsDeleteTest.php new file mode 100644 index 000000000..cea14a8ec --- /dev/null +++ b/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsDeleteTest.php @@ -0,0 +1,39 @@ +customerGroupActions = new CustomerGroupActions(); + } + + public function test_customer_group_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerGroup::factory()) + )->create(); + + $customerGroup = $user->companies()->inRandomOrder()->first() + ->customerGroups()->inRandomOrder()->first(); + $result = $this->customerGroupActions->delete($customerGroup); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('customer_groups', [ + 'id' => $customerGroup->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsEditTest.php b/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsEditTest.php new file mode 100644 index 000000000..8ec6ae8ef --- /dev/null +++ b/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsEditTest.php @@ -0,0 +1,83 @@ +customerGroupActions = new CustomerGroupActions(); + } + + public function test_customer_group_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerGroup::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $customerGroup = $company->customerGroups()->inRandomOrder()->first(); + + $payload = CustomerGroup::factory()->make()->toArray(); + + $dto = new \App\DTOs\CustomerGroupUpdateDTO( + code: $payload['code'], + name: $payload['name'], + paymentTermType: $payload['payment_term_type'], + paymentTerm: $payload['payment_term'], + sellAtCost: $payload['sell_at_cost'], + sellingPoint: $payload['selling_point'], + sellingPointMultiple: $payload['selling_point_multiple'], + priceMarkupPercent: $payload['price_markup_percent'], + priceMarkupNominal: $payload['price_markup_nominal'], + priceMarkdownPercent: $payload['price_markdown_percent'], + priceMarkdownNominal: $payload['price_markdown_nominal'], + roundingType: $payload['rounding_type'], + roundingDigit: $payload['rounding_digit'], + maxOpenInvoice: $payload['max_open_invoice'], + maxInvoiceAge: $payload['max_invoice_age'], + maxOutstandingInvoice: $payload['max_outstanding_invoice'], + remarks: $payload['remarks'] + ); + + $result = $this->customerGroupActions->update($customerGroup, $dto); + $this->assertInstanceOf(CustomerGroup::class, $result); + $this->assertDatabaseHas('customer_groups', [ + 'id' => $customerGroup->id, + 'company_id' => $customerGroup->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_customer_group_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerGroup::factory()) + )->create(); + + $customerGroup = $user->companies()->inRandomOrder()->first() + ->customerGroups()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\CustomerGroupUpdateDTO(); + + $this->customerGroupActions->update($customerGroup, $dto); + } +} diff --git a/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsReadTest.php b/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsReadTest.php new file mode 100644 index 000000000..7399e9ff1 --- /dev/null +++ b/api/tests/Unit/Actions/CustomerGroupActions/CustomerGroupActionsReadTest.php @@ -0,0 +1,158 @@ +customerGroupActions = new CustomerGroupActions(); + } + + public function test_customer_group_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerGroup::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerGroupActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_customer_group_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerGroup::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerGroupActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_customer_group_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->customerGroupActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_customer_group_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $customerGroupCount = 4; + $idxTest = random_int(0, $customerGroupCount - 1); + $defaultName = CustomerGroup::factory()->make()->name; + $testname = CustomerGroup::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerGroup::factory()->count($customerGroupCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->customerGroupActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_customer_group_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_customer_group_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_customer_group_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(CustomerGroup::factory()) + )->create(); + + $customerGroup = $user->companies()->inRandomOrder()->first() + ->customerGroups()->inRandomOrder()->first(); + + $result = $this->customerGroupActions->read($customerGroup); + + $this->assertInstanceOf(CustomerGroup::class, $result); + } +} diff --git a/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsCreateTest.php b/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsCreateTest.php new file mode 100644 index 000000000..204c7d228 --- /dev/null +++ b/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsCreateTest.php @@ -0,0 +1,56 @@ +employeeActions = new EmployeeActions(); + } + + public function test_employee_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Employee::factory()->for($company) + ->make()->toArray(); + + $dto = new \App\DTOs\EmployeeCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + remarks: $payload['remarks'] + ); + + $result = $this->employeeActions->create($dto); + $this->assertDatabaseHas('employees', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_employee_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\EmployeeCreateDTO(); + + $this->employeeActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsDeleteTest.php b/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsDeleteTest.php new file mode 100644 index 000000000..86e5d6842 --- /dev/null +++ b/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsDeleteTest.php @@ -0,0 +1,39 @@ +employeeActions = new EmployeeActions(); + } + + public function test_employee_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Employee::factory()) + )->create(); + + $employee = $user->companies()->inRandomOrder()->first() + ->employees()->inRandomOrder()->first(); + $result = $this->employeeActions->delete($employee); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('employees', [ + 'id' => $employee->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsEditTest.php b/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsEditTest.php new file mode 100644 index 000000000..531df8d88 --- /dev/null +++ b/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsEditTest.php @@ -0,0 +1,70 @@ +employeeActions = new EmployeeActions(); + } + + public function test_employee_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Employee::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $employee = $company->employees()->inRandomOrder()->first(); + + $payload = Employee::factory()->make()->toArray(); + + $dto = new \App\DTOs\EmployeeUpdateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + remarks: $payload['remarks'] + ); + + $result = $this->employeeActions->update($employee, $dto); + $this->assertInstanceOf(Employee::class, $result); + $this->assertDatabaseHas('employees', [ + 'id' => $employee->id, + 'company_id' => $employee->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_employee_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Employee::factory()) + )->create(); + + $employee = $user->companies()->inRandomOrder()->first() + ->employees()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\EmployeeUpdateDTO(); + + $this->employeeActions->update($employee, $dto); + } +} diff --git a/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsReadTest.php b/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsReadTest.php new file mode 100644 index 000000000..e35335e13 --- /dev/null +++ b/api/tests/Unit/Actions/EmployeeActions/EmployeeActionsReadTest.php @@ -0,0 +1,158 @@ +employeeActions = new EmployeeActions(); + } + + public function test_employee_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Employee::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->employeeActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_employee_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Employee::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->employeeActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_employee_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->employeeActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_employee_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $employeeCount = 4; + $idxTest = random_int(0, $employeeCount - 1); + $defaultName = Employee::factory()->make()->name; + $testname = Employee::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Employee::factory()->count($employeeCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->employeeActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_employee_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_employee_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_employee_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Employee::factory()) + )->create(); + + $employee = $user->companies()->inRandomOrder()->first() + ->employees()->inRandomOrder()->first(); + + $result = $this->employeeActions->read($employee); + + $this->assertInstanceOf(Employee::class, $result); + } +} diff --git a/api/tests/Unit/Actions/InvestorActions/InvestorActionsCreateTest.php b/api/tests/Unit/Actions/InvestorActions/InvestorActionsCreateTest.php new file mode 100644 index 000000000..5ea6dc8c3 --- /dev/null +++ b/api/tests/Unit/Actions/InvestorActions/InvestorActionsCreateTest.php @@ -0,0 +1,56 @@ +investorActions = new InvestorActions(); + } + + public function test_investor_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Investor::factory()->for($company) + ->make()->toArray(); + + $dto = new \App\DTOs\InvestorCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + remarks: $payload['remarks'] + ); + + $result = $this->investorActions->create($dto); + $this->assertDatabaseHas('investors', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_investor_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\InvestorCreateDTO(); + + $this->investorActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/InvestorActions/InvestorActionsDeleteTest.php b/api/tests/Unit/Actions/InvestorActions/InvestorActionsDeleteTest.php new file mode 100644 index 000000000..274cbda1a --- /dev/null +++ b/api/tests/Unit/Actions/InvestorActions/InvestorActionsDeleteTest.php @@ -0,0 +1,39 @@ +investorActions = new InvestorActions(); + } + + public function test_investor_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Investor::factory()) + )->create(); + + $investor = $user->companies()->inRandomOrder()->first() + ->investors()->inRandomOrder()->first(); + $result = $this->investorActions->delete($investor); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('investors', [ + 'id' => $investor->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/InvestorActions/InvestorActionsEditTest.php b/api/tests/Unit/Actions/InvestorActions/InvestorActionsEditTest.php new file mode 100644 index 000000000..5519364f5 --- /dev/null +++ b/api/tests/Unit/Actions/InvestorActions/InvestorActionsEditTest.php @@ -0,0 +1,69 @@ +investorActions = new InvestorActions(); + } + + public function test_investor_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Investor::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $investor = $company->investors()->inRandomOrder()->first(); + + $payload = Investor::factory()->make()->toArray(); + + $dto = new \App\DTOs\InvestorUpdateDTO( + code: $payload['code'], + name: $payload['name'], + remarks: $payload['remarks'] + ); + + $result = $this->investorActions->update($investor, $dto); + $this->assertInstanceOf(Investor::class, $result); + $this->assertDatabaseHas('investors', [ + 'id' => $investor->id, + 'company_id' => $investor->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_investor_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Investor::factory()) + )->create(); + + $investor = $user->companies()->inRandomOrder()->first() + ->investors()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\InvestorUpdateDTO(); + + $this->investorActions->update($investor, $dto); + } +} diff --git a/api/tests/Unit/Actions/InvestorActions/InvestorActionsReadTest.php b/api/tests/Unit/Actions/InvestorActions/InvestorActionsReadTest.php new file mode 100644 index 000000000..be8464a2e --- /dev/null +++ b/api/tests/Unit/Actions/InvestorActions/InvestorActionsReadTest.php @@ -0,0 +1,167 @@ +investorActions = new InvestorActions(); + } + + public function test_investor_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Investor::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->investorActions->readAny( + withTrashed: false, + search: '', + companyId: $company->id, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10, + ), + get: null, + ) + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_investor_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Investor::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->investorActions->readAny( + withTrashed: false, + search: '', + companyId: $company->id, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: new ExecuteGetDTO( + limit: 10, + ), + ) + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_investor_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->investorActions->readAny( + withTrashed: false, + search: '', + companyId: $maxId, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: new ExecuteGetDTO( + limit: 10, + ), + ) + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_investor_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $investorCount = 4; + $idxTest = random_int(0, $investorCount - 1); + $defaultName = Investor::factory()->make()->name; + $testname = Investor::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Investor::factory()->count($investorCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->investorActions->readAny( + withTrashed: false, + search: 'testing', + companyId: $company->id, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10, + ), + get: null, + ) + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_investor_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_investor_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_investor_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Investor::factory()) + )->create(); + + $investor = $user->companies()->inRandomOrder()->first() + ->investors()->inRandomOrder()->first(); + + $result = $this->investorActions->read($investor); + + $this->assertInstanceOf(Investor::class, $result); + } +} diff --git a/api/tests/Unit/Actions/ProductActions/ProductActionsCreateTest.php b/api/tests/Unit/Actions/ProductActions/ProductActionsCreateTest.php new file mode 100644 index 000000000..3163f41f4 --- /dev/null +++ b/api/tests/Unit/Actions/ProductActions/ProductActionsCreateTest.php @@ -0,0 +1,79 @@ +productActions = new ProductActions(); + } + + public function test_product_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $productCategory = $company->productCategories()->inRandomOrder()->first(); + $brand = $company->brands()->inRandomOrder()->first(); + + $payload = Product::factory() + ->for($company) + ->for($productCategory, 'category') + ->for($brand) + ->make()->toArray(); + + $productUnit = \App\Models\ProductUnit::factory()->make([ + 'company_id' => $company->id, + 'unit_id' => \App\Models\Unit::factory()->create(['company_id' => $company->id])->id, + 'point' => 50, + ])->toArray(); + $payload['product_units'] = [$productUnit]; + + $result = $this->productActions->create($payload); + + $this->assertDatabaseHas('products', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'category_id' => $payload['category_id'], + 'brand_id' => $payload['brand_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + 'type' => $payload['type'], + 'is_price_include_vat' => $payload['is_price_include_vat'], + 'is_use_serial_number' => $payload['is_use_serial_number'], + 'is_expirable' => $payload['is_expirable'], + 'status' => $payload['status'], + 'remarks' => $payload['remarks'], + ]); + + $this->assertDatabaseHas('product_units', [ + 'product_id' => $result->id, + 'point' => 50, + ]); + } + + public function test_product_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $this->productActions->create([]); + } +} diff --git a/api/tests/Unit/Actions/ProductActions/ProductActionsDeleteTest.php b/api/tests/Unit/Actions/ProductActions/ProductActionsDeleteTest.php new file mode 100644 index 000000000..e3100c741 --- /dev/null +++ b/api/tests/Unit/Actions/ProductActions/ProductActionsDeleteTest.php @@ -0,0 +1,52 @@ +productActions = new ProductActions(); + } + + public function test_product_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $productCategory = $company->productCategories()->inRandomOrder()->first(); + + $brand = $company->brands()->inRandomOrder()->first(); + + $product = Product::factory() + ->for($company) + ->for($productCategory) + ->for($brand); + + $product = $product->create(); + $result = $this->productActions->delete($product); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('products', [ + 'id' => $product->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/ProductActions/ProductActionsEditTest.php b/api/tests/Unit/Actions/ProductActions/ProductActionsEditTest.php new file mode 100644 index 000000000..399cb8079 --- /dev/null +++ b/api/tests/Unit/Actions/ProductActions/ProductActionsEditTest.php @@ -0,0 +1,103 @@ +productActions = new ProductActions(); + } + + public function test_product_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $productCategory = $company->productCategories()->inRandomOrder()->first(); + + $brand = $company->brands()->inRandomOrder()->first(); + + $product = Product::factory() + ->for($company) + ->for($productCategory, 'category') + ->for($brand); + + $product = $product->create(); + + $productUnit = \App\Models\ProductUnit::factory()->for($product)->create(['point' => 10]); + + $payload = $product->toArray(); + $payload['product_units'] = [ + [ + 'id' => $productUnit->id, + 'code' => $productUnit->code, + 'unit_id' => $productUnit->unit_id, + 'is_manufacturer_sku' => $productUnit->is_manufacturer_sku, + 'is_base' => $productUnit->is_base, + 'conversion_value' => $productUnit->conversion_value, + 'is_primary_unit' => $productUnit->is_primary_unit, + 'point' => 100, + 'remarks' => $productUnit->remarks, + ], + ]; + + $result = $this->productActions->update($product, $payload); + + $this->assertInstanceOf(Product::class, $result); + $this->assertDatabaseHas('products', [ + 'id' => $product->id, + 'category_id' => $payload['category_id'], + 'brand_id' => $payload['brand_id'], + 'company_id' => $product->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'type' => $payload['type'], + 'is_price_include_vat' => $payload['is_price_include_vat'], + 'is_use_serial_number' => $payload['is_use_serial_number'], + 'is_expirable' => $payload['is_expirable'], + 'status' => $payload['status'], + 'remarks' => $payload['remarks'], + ]); + + $this->assertDatabaseHas('product_units', [ + 'id' => $productUnit->id, + 'point' => 100, + ]); + } + + public function test_product_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Product::factory()) + )->create(); + + $product = $user->companies()->inRandomOrder()->first() + ->products()->inRandomOrder()->first(); + + $payload = []; + + $this->productActions->update($product, $payload); + } +} diff --git a/api/tests/Unit/Actions/ProductActions/ProductActionsReadTest.php b/api/tests/Unit/Actions/ProductActions/ProductActionsReadTest.php new file mode 100644 index 000000000..d4964a2b3 --- /dev/null +++ b/api/tests/Unit/Actions/ProductActions/ProductActionsReadTest.php @@ -0,0 +1,205 @@ +productActions = new ProductActions(); + } + + public function test_product_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $productSeedCount = random_int(1, 5); + for ($i = 0; $i < $productSeedCount; $i++) { + $productCategory = $company->productCategories()->inRandomOrder()->first(); + + $brand = $company->brands()->inRandomOrder()->first(); + + $product = Product::factory() + ->for($company) + ->for($productCategory) + ->for($brand); + + $product->create(); + } + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->productActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_product_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $productSeedCount = random_int(1, 5); + for ($i = 0; $i < $productSeedCount; $i++) { + $productCategory = $company->productCategories()->inRandomOrder()->first(); + + $brand = $company->brands()->inRandomOrder()->first(); + + $product = Product::factory() + ->for($company) + ->for($productCategory) + ->for($brand); + + $product->create(); + } + + $result = $this->productActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_product_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->productActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_product_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $productCount = 4; + $idxTest = random_int(0, $productCount - 1); + $defaultName = Product::factory()->make()->name; + $testname = Product::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3)) + ->has(Product::factory()->count($productCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->productActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_product_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_product_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_product_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count(3)) + ->has(Brand::factory()->count(3))) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $productCategory = $company->productCategories()->inRandomOrder()->first(); + + $brand = $company->brands()->inRandomOrder()->first(); + + $product = Product::factory() + ->for($company) + ->for($productCategory) + ->for($brand); + + $product = $product->create(); + + $result = $this->productActions->read($product); + + $this->assertInstanceOf(Product::class, $result); + } +} diff --git a/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsCreateTest.php b/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsCreateTest.php new file mode 100644 index 000000000..a1e75b771 --- /dev/null +++ b/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsCreateTest.php @@ -0,0 +1,57 @@ +productCategoryActions = new ProductCategoryActions(); + } + + public function test_product_category_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = ProductCategory::factory()->for($company) + ->make()->toArray(); + + $dto = new \App\DTOs\ProductCategoryCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + type: $payload['type'] + ); + + $result = $this->productCategoryActions->create($dto); + $this->assertDatabaseHas('product_categories', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + 'type' => $payload['type'], + ]); + } + + public function test_product_category_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\ProductCategoryCreateDTO(); + + $this->productCategoryActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsDeleteTest.php b/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsDeleteTest.php new file mode 100644 index 000000000..e4b1d2c6b --- /dev/null +++ b/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsDeleteTest.php @@ -0,0 +1,39 @@ +productCategoryActions = new ProductCategoryActions(); + } + + public function test_product_category_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()) + )->create(); + + $productCategory = $user->companies()->inRandomOrder()->first() + ->productCategories()->inRandomOrder()->first(); + $result = $this->productCategoryActions->delete($productCategory); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('product_categories', [ + 'id' => $productCategory->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsEditTest.php b/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsEditTest.php new file mode 100644 index 000000000..6f56d26c0 --- /dev/null +++ b/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsEditTest.php @@ -0,0 +1,69 @@ +productCategoryActions = new ProductCategoryActions(); + } + + public function test_product_category_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $productCategory = $company->productCategories()->inRandomOrder()->first(); + + $payload = ProductCategory::factory()->make()->toArray(); + + $dto = new \App\DTOs\ProductCategoryUpdateDTO( + code: $payload['code'], + name: $payload['name'], + type: $payload['type'] + ); + + $result = $this->productCategoryActions->update($productCategory, $dto); + $this->assertInstanceOf(ProductCategory::class, $result); + $this->assertDatabaseHas('product_categories', [ + 'id' => $productCategory->id, + 'company_id' => $productCategory->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_product_category_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()) + )->create(); + + $productCategory = $user->companies()->inRandomOrder()->first() + ->productCategories()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\ProductCategoryUpdateDTO(); + + $this->productCategoryActions->update($productCategory, $dto); + } +} diff --git a/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsReadTest.php b/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsReadTest.php new file mode 100644 index 000000000..c9da75802 --- /dev/null +++ b/api/tests/Unit/Actions/ProductCategoryActions/ProductCategoryActionsReadTest.php @@ -0,0 +1,158 @@ +productCategoryActions = new ProductCategoryActions(); + } + + public function test_product_category_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->productCategoryActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_product_category_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->productCategoryActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_product_category_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->productCategoryActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_product_category_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $productCategoryCount = 4; + $idxTest = random_int(0, $productCategoryCount - 1); + $defaultName = ProductCategory::factory()->make()->name; + $testname = ProductCategory::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()->count($productCategoryCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->productCategoryActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_product_category_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_product_category_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_product_category_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(ProductCategory::factory()) + )->create(); + + $productCategory = $user->companies()->inRandomOrder()->first() + ->productCategories()->inRandomOrder()->first(); + + $result = $this->productCategoryActions->read($productCategory); + + $this->assertInstanceOf(ProductCategory::class, $result); + } +} diff --git a/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsCreateTest.php b/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsCreateTest.php new file mode 100644 index 000000000..28d03ba12 --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsCreateTest.php @@ -0,0 +1,49 @@ +stockTransferActions = new StockTransferActions(); + } + + public function test_stock_transfer_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockTransfer::factory()->for($company) + ->make()->toArray(); + + $result = $this->stockTransferActions->create($payload); + + $this->assertDatabaseHas('stock_transfers', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_transfer_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $this->stockTransferActions->create([]); + } +} diff --git a/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsDeleteTest.php b/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsDeleteTest.php new file mode 100644 index 000000000..30a1a58bd --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsDeleteTest.php @@ -0,0 +1,39 @@ +stockTransferActions = new StockTransferActions(); + } + + public function test_stock_transfer_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransfer::factory()) + )->create(); + + $stockTransfer = $user->companies()->inRandomOrder()->first() + ->stockTransfers()->inRandomOrder()->first(); + $result = $this->stockTransferActions->delete($stockTransfer); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('stock_transfers', [ + 'id' => $stockTransfer->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsEditTest.php b/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsEditTest.php new file mode 100644 index 000000000..891b6e412 --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsEditTest.php @@ -0,0 +1,62 @@ +stockTransferActions = new StockTransferActions(); + } + + public function test_stock_transfer_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransfer::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransfer = $company->stockTransfers()->inRandomOrder()->first(); + + $payload = StockTransfer::factory()->make()->toArray(); + + $result = $this->stockTransferActions->update($stockTransfer, $payload); + + $this->assertInstanceOf(StockTransfer::class, $result); + $this->assertDatabaseHas('stock_transfers', [ + 'id' => $stockTransfer->id, + 'company_id' => $stockTransfer->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_transfer_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransfer::factory()) + )->create(); + + $stockTransfer = $user->companies()->inRandomOrder()->first() + ->stockTransfers()->inRandomOrder()->first(); + + $payload = []; + + $this->stockTransferActions->update($stockTransfer, $payload); + } +} diff --git a/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsReadTest.php b/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsReadTest.php new file mode 100644 index 000000000..4c339e29e --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferActions/StockTransferActionsReadTest.php @@ -0,0 +1,158 @@ +stockTransferActions = new StockTransferActions(); + } + + public function test_stock_transfer_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransfer::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_stock_transfer_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransfer::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_stock_transfer_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->stockTransferActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_stock_transfer_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $stockTransferCount = 4; + $idxTest = random_int(0, $stockTransferCount - 1); + $defaultName = StockTransfer::factory()->make()->name; + $testname = StockTransfer::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransfer::factory()->count($stockTransferCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_stock_transfer_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_stock_transfer_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_stock_transfer_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransfer::factory()) + )->create(); + + $stockTransfer = $user->companies()->inRandomOrder()->first() + ->stockTransfers()->inRandomOrder()->first(); + + $result = $this->stockTransferActions->read($stockTransfer); + + $this->assertInstanceOf(StockTransfer::class, $result); + } +} diff --git a/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsCreateTest.php b/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsCreateTest.php new file mode 100644 index 000000000..4cf94ab91 --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsCreateTest.php @@ -0,0 +1,49 @@ +stockTransferItemActions = new StockTransferItemActions(); + } + + public function test_stock_transfer_item_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockTransferItem::factory()->for($company) + ->make()->toArray(); + + $result = $this->stockTransferItemActions->create($payload); + + $this->assertDatabaseHas('stock_transfer_items', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_transfer_item_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $this->stockTransferItemActions->create([]); + } +} diff --git a/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsDeleteTest.php b/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsDeleteTest.php new file mode 100644 index 000000000..3e2515518 --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsDeleteTest.php @@ -0,0 +1,39 @@ +stockTransferItemActions = new StockTransferItemActions(); + } + + public function test_stock_transfer_item_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItem::factory()) + )->create(); + + $stockTransferItem = $user->companies()->inRandomOrder()->first() + ->stockTransferItems()->inRandomOrder()->first(); + $result = $this->stockTransferItemActions->delete($stockTransferItem); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('stock_transfer_items', [ + 'id' => $stockTransferItem->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsEditTest.php b/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsEditTest.php new file mode 100644 index 000000000..8232fa490 --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsEditTest.php @@ -0,0 +1,62 @@ +stockTransferItemActions = new StockTransferItemActions(); + } + + public function test_stock_transfer_item_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItem::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItem = $company->stockTransferItems()->inRandomOrder()->first(); + + $payload = StockTransferItem::factory()->make()->toArray(); + + $result = $this->stockTransferItemActions->update($stockTransferItem, $payload); + + $this->assertInstanceOf(StockTransferItem::class, $result); + $this->assertDatabaseHas('stock_transfer_items', [ + 'id' => $stockTransferItem->id, + 'company_id' => $stockTransferItem->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_transfer_item_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItem::factory()) + )->create(); + + $stockTransferItem = $user->companies()->inRandomOrder()->first() + ->stockTransferItems()->inRandomOrder()->first(); + + $payload = []; + + $this->stockTransferItemActions->update($stockTransferItem, $payload); + } +} diff --git a/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsReadTest.php b/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsReadTest.php new file mode 100644 index 000000000..aedb0058d --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferItemActions/StockTransferItemActionsReadTest.php @@ -0,0 +1,197 @@ +stockTransferItemActions = app(StockTransferItemActions::class); + } + + public function test_stock_transfer_item_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItem::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferItemActions->readAny( + withTrashed: false, + companyId: $company->id, + branchId: null, + search: '', + + stockTransferCode: null, + stockTransferStartDate: null, + stockTransferEndDate: null, + stockTransferSourceWarehouseId: null, + stockTransferDestinationWarehouseId: null, + productUnitCode: null, + productUnitProductName: null, + productUnitProductCategoryId: null, + productUnitProductBrandId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO(page: 1, perPage: 10), + get: null, + ) + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_stock_transfer_item_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItem::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferItemActions->readAny( + withTrashed: false, + companyId: $company->id, + branchId: null, + search: '', + + stockTransferCode: null, + stockTransferStartDate: null, + stockTransferEndDate: null, + stockTransferSourceWarehouseId: null, + stockTransferDestinationWarehouseId: null, + productUnitCode: null, + productUnitProductName: null, + productUnitProductCategoryId: null, + productUnitProductBrandId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: new ExecuteGetDTO(limit: 10), + ) + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_stock_transfer_item_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->stockTransferItemActions->readAny( + withTrashed: false, + companyId: $maxId, + branchId: null, + search: '', + + stockTransferCode: null, + stockTransferStartDate: null, + stockTransferEndDate: null, + stockTransferSourceWarehouseId: null, + stockTransferDestinationWarehouseId: null, + productUnitCode: null, + productUnitProductName: null, + productUnitProductCategoryId: null, + productUnitProductBrandId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: new ExecuteGetDTO(limit: 10), + ) + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_stock_transfer_item_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $stockTransferItemCount = 4; + $idxTest = random_int(0, $stockTransferItemCount - 1); + $defaultRemarks = 'default remarks'; + $testRemarks = 'testing remarks'; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItem::factory()->count($stockTransferItemCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'remarks' => $sequence->index == $idxTest ? $testRemarks : $defaultRemarks, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferItemActions->readAny( + withTrashed: false, + companyId: $company->id, + branchId: null, + search: 'testing', + + stockTransferCode: null, + stockTransferStartDate: null, + stockTransferEndDate: null, + stockTransferSourceWarehouseId: null, + stockTransferDestinationWarehouseId: null, + productUnitCode: null, + productUnitProductName: null, + productUnitProductCategoryId: null, + productUnitProductBrandId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO(page: 1, perPage: 10), + get: null, + ) + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_stock_transfer_item_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_stock_transfer_item_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_stock_transfer_item_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItem::factory()) + )->create(); + + $stockTransferItem = $user->companies()->inRandomOrder()->first() + ->stockTransferItems()->inRandomOrder()->first(); + + $result = $this->stockTransferItemActions->read($stockTransferItem); + + $this->assertInstanceOf(StockTransferItem::class, $result); + } +} diff --git a/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsCreateTest.php b/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsCreateTest.php new file mode 100644 index 000000000..4276ae75a --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsCreateTest.php @@ -0,0 +1,49 @@ +stockTransferItemSerialActions = new StockTransferItemSerialActions(); + } + + public function test_stock_transfer_item_serial_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = StockTransferItemSerial::factory()->for($company) + ->make()->toArray(); + + $result = $this->stockTransferItemSerialActions->create($payload); + + $this->assertDatabaseHas('stock_transfer_item_serials', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_transfer_item_serial_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $this->stockTransferItemSerialActions->create([]); + } +} diff --git a/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsDeleteTest.php b/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsDeleteTest.php new file mode 100644 index 000000000..d210c6341 --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsDeleteTest.php @@ -0,0 +1,39 @@ +stockTransferItemSerialActions = new StockTransferItemSerialActions(); + } + + public function test_stock_transfer_item_serial_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItemSerial::factory()) + )->create(); + + $stockTransferItemSerial = $user->companies()->inRandomOrder()->first() + ->stockTransferItemSerials()->inRandomOrder()->first(); + $result = $this->stockTransferItemSerialActions->delete($stockTransferItemSerial); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('stock_transfer_item_serials', [ + 'id' => $stockTransferItemSerial->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsEditTest.php b/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsEditTest.php new file mode 100644 index 000000000..51ecbf60b --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsEditTest.php @@ -0,0 +1,62 @@ +stockTransferItemSerialActions = new StockTransferItemSerialActions(); + } + + public function test_stock_transfer_item_serial_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItemSerial::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $stockTransferItemSerial = $company->stockTransferItemSerials()->inRandomOrder()->first(); + + $payload = StockTransferItemSerial::factory()->make()->toArray(); + + $result = $this->stockTransferItemSerialActions->update($stockTransferItemSerial, $payload); + + $this->assertInstanceOf(StockTransferItemSerial::class, $result); + $this->assertDatabaseHas('stock_transfer_item_serials', [ + 'id' => $stockTransferItemSerial->id, + 'company_id' => $stockTransferItemSerial->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_stock_transfer_item_serial_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItemSerial::factory()) + )->create(); + + $stockTransferItemSerial = $user->companies()->inRandomOrder()->first() + ->stockTransferItemSerials()->inRandomOrder()->first(); + + $payload = []; + + $this->stockTransferItemSerialActions->update($stockTransferItemSerial, $payload); + } +} diff --git a/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsReadTest.php b/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsReadTest.php new file mode 100644 index 000000000..de7e19a70 --- /dev/null +++ b/api/tests/Unit/Actions/StockTransferItemSerialActions/StockTransferItemSerialActionsReadTest.php @@ -0,0 +1,158 @@ +stockTransferItemSerialActions = new StockTransferItemSerialActions(); + } + + public function test_stock_transfer_item_serial_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItemSerial::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferItemSerialActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_stock_transfer_item_serial_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItemSerial::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferItemSerialActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_stock_transfer_item_serial_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->stockTransferItemSerialActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_stock_transfer_item_serial_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $stockTransferItemSerialCount = 4; + $idxTest = random_int(0, $stockTransferItemSerialCount - 1); + $defaultName = StockTransferItemSerial::factory()->make()->name; + $testname = StockTransferItemSerial::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItemSerial::factory()->count($stockTransferItemSerialCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->stockTransferItemSerialActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_stock_transfer_item_serial_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_stock_transfer_item_serial_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_stock_transfer_item_serial_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(StockTransferItemSerial::factory()) + )->create(); + + $stockTransferItemSerial = $user->companies()->inRandomOrder()->first() + ->stockTransferItemSerials()->inRandomOrder()->first(); + + $result = $this->stockTransferItemSerialActions->read($stockTransferItemSerial); + + $this->assertInstanceOf(StockTransferItemSerial::class, $result); + } +} diff --git a/api/tests/Unit/Actions/SupplierActions/SupplierActionsCreateTest.php b/api/tests/Unit/Actions/SupplierActions/SupplierActionsCreateTest.php new file mode 100644 index 000000000..b9d022190 --- /dev/null +++ b/api/tests/Unit/Actions/SupplierActions/SupplierActionsCreateTest.php @@ -0,0 +1,72 @@ +supplierActions = new SupplierActions(); + } + + public function test_supplier_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Supplier::factory()->for($company)->for($user) + ->make()->toArray(); + + $dto = new \App\DTOs\SupplierCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + city: $payload['city'], + paymentTermType: $payload['payment_term_type'], + paymentTerm: $payload['payment_term'], + taxableEnterprise: $payload['taxable_enterprise'], + taxId: $payload['tax_id'], + remarks: $payload['remarks'], + status: $payload['status'] + ); + + $result = $this->supplierActions->create($dto); + $this->assertDatabaseHas('suppliers', [ + 'id' => $result->id, + 'user_id' => $payload['user_id'], + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + 'address' => $payload['address'], + 'city' => $payload['city'], + 'payment_term_type' => $payload['payment_term_type'], + 'payment_term' => $payload['payment_term'], + 'taxable_enterprise' => $payload['taxable_enterprise'], + 'tax_id' => $payload['tax_id'], + 'status' => $payload['status'], + 'remarks' => $payload['remarks'], + ]); + } + + public function test_supplier_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\SupplierCreateDTO(); + + $this->supplierActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/SupplierActions/SupplierActionsDeleteTest.php b/api/tests/Unit/Actions/SupplierActions/SupplierActionsDeleteTest.php new file mode 100644 index 000000000..351c8a3aa --- /dev/null +++ b/api/tests/Unit/Actions/SupplierActions/SupplierActionsDeleteTest.php @@ -0,0 +1,39 @@ +supplierActions = new SupplierActions(); + } + + public function test_supplier_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Supplier::factory()) + )->create(); + + $supplier = $user->companies()->inRandomOrder()->first() + ->suppliers()->inRandomOrder()->first(); + $result = $this->supplierActions->delete($supplier); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('suppliers', [ + 'id' => $supplier->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/SupplierActions/SupplierActionsEditTest.php b/api/tests/Unit/Actions/SupplierActions/SupplierActionsEditTest.php new file mode 100644 index 000000000..e01e9e954 --- /dev/null +++ b/api/tests/Unit/Actions/SupplierActions/SupplierActionsEditTest.php @@ -0,0 +1,84 @@ +supplierActions = new SupplierActions(); + } + + public function test_supplier_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Supplier::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $supplier = $company->suppliers()->inRandomOrder()->first(); + + $payload = Supplier::factory()->make()->toArray(); + + $dto = new \App\DTOs\SupplierUpdateDTO( + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + city: $payload['city'], + paymentTermType: $payload['payment_term_type'], + paymentTerm: $payload['payment_term'], + taxableEnterprise: $payload['taxable_enterprise'], + taxId: $payload['tax_id'], + remarks: $payload['remarks'], + status: $payload['status'] + ); + + $result = $this->supplierActions->update($supplier, $dto); + $this->assertInstanceOf(Supplier::class, $result); + $this->assertDatabaseHas('suppliers', [ + 'id' => $supplier->id, + 'company_id' => $supplier->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'address' => $payload['address'], + 'city' => $payload['city'], + 'payment_term_type' => $payload['payment_term_type'], + 'payment_term' => $payload['payment_term'], + 'taxable_enterprise' => $payload['taxable_enterprise'], + 'tax_id' => $payload['tax_id'], + 'status' => $payload['status'], + 'remarks' => $payload['remarks'], + ]); + } + + public function test_supplier_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Supplier::factory()) + )->create(); + + $supplier = $user->companies()->inRandomOrder()->first() + ->suppliers()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\SupplierUpdateDTO(); + + $this->supplierActions->update($supplier, $dto); + } +} diff --git a/api/tests/Unit/Actions/SupplierActions/SupplierActionsReadTest.php b/api/tests/Unit/Actions/SupplierActions/SupplierActionsReadTest.php new file mode 100644 index 000000000..1bd3fd3cb --- /dev/null +++ b/api/tests/Unit/Actions/SupplierActions/SupplierActionsReadTest.php @@ -0,0 +1,164 @@ +supplierActions = new SupplierActions(); + } + + public function test_supplier_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + Supplier::factory()->for($company)->for($user) + ->create(); + + $result = $this->supplierActions->readAny( + user: $user, + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_supplier_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Supplier::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->supplierActions->readAny( + user: $user, + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_supplier_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->supplierActions->readAny( + user: User::factory()->create(), + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_supplier_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $supplierCount = 4; + $idxTest = random_int(0, $supplierCount - 1); + $defaultName = Supplier::factory()->make()->name; + $testname = Supplier::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Supplier::factory()->count($supplierCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->supplierActions->readAny( + user: $user, + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_supplier_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_supplier_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_supplier_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Supplier::factory()) + )->create(); + + $supplier = $user->companies()->inRandomOrder()->first() + ->suppliers()->inRandomOrder()->first(); + + $result = $this->supplierActions->read($supplier); + + $this->assertInstanceOf(Supplier::class, $result); + } +} diff --git a/api/tests/Unit/Actions/UnitActions/UnitActionsCreateTest.php b/api/tests/Unit/Actions/UnitActions/UnitActionsCreateTest.php new file mode 100644 index 000000000..5894985df --- /dev/null +++ b/api/tests/Unit/Actions/UnitActions/UnitActionsCreateTest.php @@ -0,0 +1,59 @@ +unitActions = new UnitActions(); + } + + public function test_unit_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault()) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $payload = Unit::factory()->for($company) + ->make()->toArray(); + + $dto = new \App\DTOs\UnitCreateDTO( + companyId: $payload['company_id'], + code: $payload['code'], + name: $payload['name'], + description: $payload['description'], + type: $payload['type'] + ); + + $result = $this->unitActions->create($dto); + $this->assertDatabaseHas('units', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + 'description' => $payload['description'], + 'type' => $payload['type'], + ]); + } + + public function test_unit_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + $dto = new \App\DTOs\UnitCreateDTO(); + + $this->unitActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/UnitActions/UnitActionsDeleteTest.php b/api/tests/Unit/Actions/UnitActions/UnitActionsDeleteTest.php new file mode 100644 index 000000000..c58bd1ced --- /dev/null +++ b/api/tests/Unit/Actions/UnitActions/UnitActionsDeleteTest.php @@ -0,0 +1,39 @@ +unitActions = new UnitActions(); + } + + public function test_unit_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Unit::factory()) + )->create(); + + $unit = $user->companies()->inRandomOrder()->first() + ->units()->inRandomOrder()->first(); + $result = $this->unitActions->delete($unit); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('units', [ + 'id' => $unit->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/UnitActions/UnitActionsEditTest.php b/api/tests/Unit/Actions/UnitActions/UnitActionsEditTest.php new file mode 100644 index 000000000..1bbddc8d2 --- /dev/null +++ b/api/tests/Unit/Actions/UnitActions/UnitActionsEditTest.php @@ -0,0 +1,72 @@ +unitActions = new UnitActions(); + } + + public function test_unit_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Unit::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + $unit = $company->units()->inRandomOrder()->first(); + + $payload = Unit::factory()->make()->toArray(); + + $dto = new \App\DTOs\UnitUpdateDTO( + code: $payload['code'], + name: $payload['name'], + description: $payload['description'], + type: $payload['type'] + ); + + $result = $this->unitActions->update($unit, $dto); + $this->assertInstanceOf(Unit::class, $result); + $this->assertDatabaseHas('units', [ + 'id' => $unit->id, + 'company_id' => $unit->company_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + 'description' => $payload['description'], + 'type' => $payload['type'], + ]); + } + + public function test_unit_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(Exception::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Unit::factory()) + )->create(); + + $unit = $user->companies()->inRandomOrder()->first() + ->units()->inRandomOrder()->first(); + + $payload = []; + + $dto = new \App\DTOs\UnitUpdateDTO(); + + $this->unitActions->update($unit, $dto); + } +} diff --git a/api/tests/Unit/Actions/UnitActions/UnitActionsReadTest.php b/api/tests/Unit/Actions/UnitActions/UnitActionsReadTest.php new file mode 100644 index 000000000..73feafb3d --- /dev/null +++ b/api/tests/Unit/Actions/UnitActions/UnitActionsReadTest.php @@ -0,0 +1,158 @@ +unitActions = new UnitActions(); + } + + public function test_unit_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Unit::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->unitActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_unit_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Unit::factory()) + )->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->unitActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_unit_actions_call_read_any_with_nonexistance_companyId_expect_empty_collection() + { + $maxId = Company::max('id') + 1; + + $result = $this->unitActions->readAny( + companyId: $maxId, + useCache: true, + withTrashed: false, + + search: '', + + paginate: false, + page: null, + perPage: null, + limit: 10 + ); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertEmpty($result); + } + + public function test_unit_actions_call_read_any_with_search_parameter_expect_filtered_results() + { + $unitCount = 4; + $idxTest = random_int(0, $unitCount - 1); + $defaultName = Unit::factory()->make()->name; + $testname = Unit::factory()->insertStringInName('testing')->make()->name; + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Unit::factory()->count($unitCount) + ->state(new Sequence( + fn (Sequence $sequence) => [ + 'name' => $sequence->index == $idxTest ? $testname : $defaultName, + ] + )) + ) + ) + ->create(); + + $company = $user->companies()->inRandomOrder()->first(); + + $result = $this->unitActions->readAny( + companyId: $company->id, + useCache: true, + withTrashed: false, + + search: 'testing', + + paginate: true, + page: 1, + perPage: 10, + limit: null + ); + + $this->assertInstanceOf(Paginator::class, $result); + $this->assertTrue($result->total() == 1); + } + + public function test_unit_actions_call_read_any_with_page_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_unit_actions_call_read_any_with_perpage_parameter_negative_expect_results() + { + $this->markTestIncomplete('Need to implement test'); + } + + public function test_unit_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Unit::factory()) + )->create(); + + $unit = $user->companies()->inRandomOrder()->first() + ->units()->inRandomOrder()->first(); + + $result = $this->unitActions->read($unit); + + $this->assertInstanceOf(Unit::class, $result); + } +} diff --git a/api/tests/Unit/Actions/UserActions/UserActionsCreateTest.php b/api/tests/Unit/Actions/UserActions/UserActionsCreateTest.php index e136fd763..0e6630b27 100644 --- a/api/tests/Unit/Actions/UserActions/UserActionsCreateTest.php +++ b/api/tests/Unit/Actions/UserActions/UserActionsCreateTest.php @@ -3,7 +3,7 @@ namespace Tests\Unit\Actions\UserActions; use App\Actions\User\UserActions; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Profile; use App\Models\Role; use App\Models\User; @@ -31,7 +31,7 @@ public function test_user_actions_call_create_expect_db_has_record() $userArr['password'] = 'test123'; $rolesArr = []; - array_push($rolesArr, Role::where('name', '=', UserRoles::DEVELOPER->value)->first()->id); + array_push($rolesArr, Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()->id); $result = $this->userActions->create( $userArr, @@ -69,5 +69,9 @@ public function test_user_actions_call_create_with_empty_array_parameters_expect $rolesArr, $profileArr ); + + $userArr = []; + $rolesArr = []; + $profileArr = []; } } diff --git a/api/tests/Unit/Actions/UserActions/UserActionsEditTest.php b/api/tests/Unit/Actions/UserActions/UserActionsEditTest.php index 908bac235..6eada7aee 100644 --- a/api/tests/Unit/Actions/UserActions/UserActionsEditTest.php +++ b/api/tests/Unit/Actions/UserActions/UserActionsEditTest.php @@ -3,7 +3,7 @@ namespace Tests\Unit\Actions\UserActions; use App\Actions\User\UserActions; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Profile; use App\Models\Role; use App\Models\User; @@ -31,7 +31,7 @@ public function test_user_actions_call_update_expect_db_updated() $userArr['password'] = 'test123'; $rolesArr = []; - array_push($rolesArr, Role::where('name', '=', UserRoles::DEVELOPER->value)->first()->id); + array_push($rolesArr, Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()->id); $user = $this->userActions->create( $userArr, @@ -47,7 +47,7 @@ public function test_user_actions_call_update_expect_db_updated() $newUserArr['password'] = 'test123'; $newRolesArr = []; - array_push($newRolesArr, Role::where('name', '=', UserRoles::DEVELOPER->value)->first()->id); + array_push($newRolesArr, Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()->id); $result = $this->userActions->update( $user, @@ -86,7 +86,7 @@ public function test_user_actions_call_update_with_empty_array_parameters_expect $userArr['password'] = 'test123'; $rolesArr = []; - array_push($rolesArr, Role::where('name', '=', UserRoles::DEVELOPER->value)->first()->id); + array_push($rolesArr, Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()->id); $user = $this->userActions->create( $userArr, diff --git a/api/tests/Unit/Actions/UserActions/UserActionsReadTest.php b/api/tests/Unit/Actions/UserActions/UserActionsReadTest.php index 88034cbc0..49b98ee52 100644 --- a/api/tests/Unit/Actions/UserActions/UserActionsReadTest.php +++ b/api/tests/Unit/Actions/UserActions/UserActionsReadTest.php @@ -3,7 +3,7 @@ namespace Tests\Unit\Actions\UserActions; use App\Actions\User\UserActions; -use App\Enums\UserRoles; +use App\Enums\UserRolesEnum; use App\Models\Profile; use App\Models\Role; use App\Models\User; @@ -69,7 +69,7 @@ public function test_user_actions_call_read_any_with_search_parameter_expect_fil $userArr['password'] = 'test123'; $rolesArr = []; - array_push($rolesArr, Role::where('name', '=', UserRoles::DEVELOPER->value)->first()->id); + array_push($rolesArr, Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()->id); $this->userActions->create( $userArr, @@ -109,7 +109,7 @@ public function test_user_actions_call_read_any_with_page_parameter_negative_exp $userArr['password'] = 'test123'; $rolesArr = []; - array_push($rolesArr, Role::where('name', '=', UserRoles::DEVELOPER->value)->first()->id); + array_push($rolesArr, Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()->id); $this->userActions->create( $userArr, @@ -148,7 +148,7 @@ public function test_user_actions_call_read_any_with_perpage_parameter_negative_ $userArr['password'] = 'test123'; $rolesArr = []; - array_push($rolesArr, Role::where('name', '=', UserRoles::DEVELOPER->value)->first()->id); + array_push($rolesArr, Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()->id); $this->userActions->create( $userArr, @@ -178,7 +178,7 @@ public function test_user_actions_call_read_expect_object() $userArr['password'] = 'test123'; $rolesArr = []; - array_push($rolesArr, Role::where('name', '=', UserRoles::DEVELOPER->value)->first()->id); + array_push($rolesArr, Role::where('name', '=', UserRolesEnum::DEVELOPER->value)->first()->id); $result = $this->userActions->create( $userArr, diff --git a/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsCreateTest.php b/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsCreateTest.php new file mode 100644 index 000000000..766d2cdb9 --- /dev/null +++ b/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsCreateTest.php @@ -0,0 +1,66 @@ +warehouseActions = new WarehouseActions(); + } + + public function test_warehouse_actions_call_create_expect_db_has_record() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + ) + ->create(); + + $company = $user->companies()->first(); + $branch = $company->branches()->first(); + $payload = Warehouse::factory()->for($company)->for($branch)->make()->toArray(); + + $dto = new WarehouseCreateDTO( + companyId: $payload['company_id'], + branchId: $payload['branch_id'], + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + city: $payload['city'], + contact: $payload['contact'], + remarks: $payload['remarks'], + status: $payload['status'], + ); + + $result = $this->warehouseActions->create($dto); + $this->assertDatabaseHas('warehouses', [ + 'id' => $result->id, + 'company_id' => $payload['company_id'], + 'branch_id' => $payload['branch_id'], + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_warehouse_actions_call_create_with_empty_array_parameters_expect_exception() + { + $this->expectException(ArgumentCountError::class); + $dto = new WarehouseCreateDTO(...[]); + + $this->warehouseActions->create($dto); + } +} diff --git a/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsDeleteTest.php b/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsDeleteTest.php new file mode 100644 index 000000000..277cb224b --- /dev/null +++ b/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsDeleteTest.php @@ -0,0 +1,43 @@ +warehouseActions = new WarehouseActions(); + } + + public function test_warehouse_actions_call_delete_expect_bool() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + ) + ->create(); + + $company = $user->companies()->first(); + $branch = $company->branches()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $result = $this->warehouseActions->delete($warehouse); + + $this->assertIsBool($result); + $this->assertTrue($result); + $this->assertSoftDeleted('warehouses', [ + 'id' => $warehouse->id, + ]); + } +} diff --git a/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsEditTest.php b/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsEditTest.php new file mode 100644 index 000000000..3fa7775bd --- /dev/null +++ b/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsEditTest.php @@ -0,0 +1,78 @@ +warehouseActions = new WarehouseActions(); + } + + public function test_warehouse_actions_call_update_expect_db_updated() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + ) + ->create(); + + $company = $user->companies()->first(); + $branch = $company->branches()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + $payload = Warehouse::factory()->make()->toArray(); + + $dto = new WarehouseUpdateDTO( + code: $payload['code'], + name: $payload['name'], + address: $payload['address'], + city: $payload['city'], + contact: $payload['contact'], + remarks: $payload['remarks'], + status: $payload['status'], + ); + + $result = $this->warehouseActions->update($warehouse, $dto); + $this->assertInstanceOf(Warehouse::class, $result); + $this->assertDatabaseHas('warehouses', [ + 'id' => $warehouse->id, + 'company_id' => $warehouse->company_id, + 'branch_id' => $warehouse->branch_id, + 'code' => $payload['code'], + 'name' => $payload['name'], + ]); + } + + public function test_warehouse_actions_call_update_with_empty_array_parameters_expect_exception() + { + $this->expectException(ArgumentCountError::class); + + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + ) + ->create(); + + $warehouse = Warehouse::factory() + ->for($user->companies()->first()) + ->for($user->companies()->first()->branches()->first()) + ->create(); + + $dto = new WarehouseUpdateDTO(...[]); + + $this->warehouseActions->update($warehouse, $dto); + } +} diff --git a/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsReadTest.php b/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsReadTest.php new file mode 100644 index 000000000..4c869fda7 --- /dev/null +++ b/api/tests/Unit/Actions/WarehouseActions/WarehouseActionsReadTest.php @@ -0,0 +1,104 @@ +warehouseActions = new WarehouseActions(); + } + + public function test_warehouse_actions_call_read_any_with_paginate_true_expect_paginator_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + ) + ->create(); + + $company = $user->companies()->first(); + $branch = $company->branches()->first(); + Warehouse::factory()->count(2)->for($company)->for($branch)->create(); + + $result = $this->warehouseActions->readAny( + withTrashed: false, + companyId: $company->id, + branchId: null, + search: '', + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: new ExecutePaginationDTO( + page: 1, + perPage: 10, + ), + get: null, + ), + ); + + $this->assertInstanceOf(Paginator::class, $result); + } + + public function test_warehouse_actions_call_read_any_with_paginate_false_expect_collection_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + ) + ->create(); + + $company = $user->companies()->first(); + $branch = $company->branches()->first(); + Warehouse::factory()->count(2)->for($company)->for($branch)->create(); + + $result = $this->warehouseActions->readAny( + withTrashed: false, + companyId: $company->id, + branchId: null, + search: '', + status: null, + includeId: null, + execute: new ExecuteDTO( + useCache: true, + pagination: null, + get: null, + ), + ); + + $this->assertInstanceOf(Collection::class, $result); + } + + public function test_warehouse_actions_call_read_expect_object() + { + $user = User::factory() + ->has(Company::factory()->setStatusActive()->setIsDefault() + ->has(Branch::factory()->setStatusActive()->setIsMainBranch()) + ) + ->create(); + + $company = $user->companies()->first(); + $branch = $company->branches()->first(); + $warehouse = Warehouse::factory()->for($company)->for($branch)->create(); + + $result = $this->warehouseActions->read($warehouse); + + $this->assertInstanceOf(Warehouse::class, $result); + } +} diff --git a/erd.txt b/erd.txt new file mode 100644 index 000000000..6423f0ca4 --- /dev/null +++ b/erd.txt @@ -0,0 +1,35 @@ +- purchase_orders +- purchase_order_items +- purchase_order_payments +- purchase_order_payment_refunds +- purchase_order_receipts +- purchase_order_receipt_items +- purchase_order_receipt_item_serials +- purchase_order_receipt_costs + +- purchase_invoices +- purchase_invoice_items +- purchase_invoice_payments + +- purchase_returns +- purchase_return_items +- purchase_return_item_serials +- purchase_return_refunds + +- sales_orders +- sales_order_items +- sales_order_payments +- sales_order_payment_refunds +- sales_order_deliveries +- sales_order_delivery_items +- sales_order_delivery_item_serials +- sales_order_delivery_costs + +- sales_invoices +- sales_invoice_items +- sales_invoice_payments + +- sales_returns +- sales_return_items +- sales_return_item_serials +- sales_return_refunds diff --git a/promp-visualization.html b/promp-visualization.html new file mode 100644 index 000000000..d1519340b --- /dev/null +++ b/promp-visualization.html @@ -0,0 +1,392 @@ + + + + + + Visualisasi Jurnal + + + +
+
+

Kenapa Jurnal Biasanya Pakai 2 Tabel?

+

+ Buat programmer baru, ini sering bikin bingung. Di layar, kita merasa sedang bikin + 1 jurnal. Tapi di database, 1 jurnal itu biasanya punya + 1 header dan banyak baris debit/kredit. +

+
+
1 jurnal di UI
+
1 header di database
+
bisa punya banyak lines
+
lebih rapi dan fleksibel
+
+
+ +
+
+
Yang sering terasa
+

"Kayaknya cukup 1 tabel aja"

+

+ Perasaan ini wajar, karena user memang input 1 dokumen jurnal. + Masalahnya, isi jurnal hampir selalu punya lebih dari 1 baris akun. +

+
    +
  • Kas debit
  • +
  • Pendapatan kredit
  • +
  • PPN kredit
  • +
  • Piutang debit
  • +
+
+ +
+
Yang lebih aman
+

1 header + banyak line

+

+ Header menyimpan data umum jurnal. Line menyimpan tiap akun dan nominalnya. + Jadi data tidak diulang-ulang. +

+
    +
  • Header: kode, tanggal, sumber, memo
  • +
  • Line: akun, debit, kredit, urutan
  • +
+
+
+ +
+
+

`journal_entries`

+
company_id 1
+
code JRN-0001
+
date 2026-05-10 10:15
+
source_type Sale
+
source_id 15
+
remarks Jurnal dari penjualan
+
+ +
+ 1:N + 1 header punya banyak line +
+ +
+

`journal_entry_lines`

+
line 1 Kas, debit 150.000
+
line 2 Penjualan, kredit 135.000
+
line 3 PPN Keluaran, kredit 15.000
+
+
+ +
+

Contoh Nyata

+

+ Misalnya ada penjualan tunai Rp150.000. User merasa input 1 transaksi, + tapi jurnalnya punya beberapa baris. +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Header Jurnal
KodeJRN-0001
Tanggal10 Mei 2026
SumberPenjualan #SALE-0015
MemoPosting otomatis dari penjualan
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
AkunDebitKredit
Kas150.000-
Pendapatan Penjualan-135.000
PPN Keluaran-15.000
+
+
+
+ +
+

Kenapa 2 Tabel Lebih Enak?

+
    +
  • Tidak duplikat data header: kode, tanggal, sumber tidak perlu diulang di setiap baris.
  • +
  • Lebih fleksibel: 1 jurnal bisa 2 line, 3 line, 10 line, bebas.
  • +
  • Lebih gampang validasi: total debit dan total kredit tinggal dicek dari line.
  • +
  • Lebih nyambung ke transaksi lain: penjualan, pembelian, expense, semua bisa jadi sumber 1 header jurnal.
  • +
  • Lebih aman untuk laporan: buku besar dan trial balance biasanya memang baca dari detail line.
  • +
+
+
+ + diff --git a/temp.txt b/temp.txt new file mode 100644 index 000000000..3d691e883 --- /dev/null +++ b/temp.txt @@ -0,0 +1,62 @@ +purchase_requisitions +- id +- ulid +- company_id +- branch_id +- code +- date +- required_date +- priority +- requestor_user_id +- purpose +- remarks +- is_closed +- closed_at +- created_by +- updated_by +- deleted_by +- created_at +- updated_at +- deleted_at + +purchase_requisition_product_units +- id +- ulid +- company_id +- branch_id +- purchase_requisition_id +- product_unit_id +- qty +- product_unit_conversion_value +- product_unit_qty_base +- needed_date +- remarks +- created_by +- updated_by +- deleted_by +- created_at +- updated_at +- deleted_at + +purchase_requisition_approvals +- id +- ulid +- company_id +- branch_id +- purchase_requisition_id +- approval_code +- approval_level +- approver_user_id +- requested_at +- is_mandatory +- is_approved +- approved_at +- is_rejected +- rejected_at +- remarks +- created_by +- updated_by +- deleted_by +- created_at +- updated_at +- deleted_at diff --git a/web/.gitignore b/web/.gitignore index 4f7ad094a..55f829e8c 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -9,7 +9,6 @@ lerna-debug.log* node_modules .DS_Store -dist dist-ssr coverage *.local @@ -30,4 +29,5 @@ coverage *.tsbuildinfo /.vscode -.env \ No newline at end of file +.env +/public/config.js \ No newline at end of file diff --git a/web/.prettierrc b/web/.prettierrc new file mode 100644 index 000000000..278a3c3f1 --- /dev/null +++ b/web/.prettierrc @@ -0,0 +1,13 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "trailingComma": "all", + "jsxBracketSameLine": false, + "htmlWhitespaceSensitivity": "ignore", + "vueIndentScriptAndStyle": true, + "arrowParens": "always", + "bracketSpacing": true, + "jsxSingleQuote": true +} diff --git a/web/README.md b/web/README.md index af432704b..0f511d110 100644 --- a/web/README.md +++ b/web/README.md @@ -6,10 +6,10 @@ DCSLab - Vue Web Run the installation scripts ->`$ npm install` +> `$ npm install` ## Run Dev Server Use vite for dev Server ->`$ npm run dev` +> `$ npm run dev` diff --git a/web/dist/.htaccess b/web/dist/.htaccess new file mode 100644 index 000000000..b0e00a120 --- /dev/null +++ b/web/dist/.htaccess @@ -0,0 +1,8 @@ + + RewriteEngine On + RewriteBase / + RewriteRule ^index\.html$ - [L] + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule . /index.html [L] + \ No newline at end of file diff --git a/web/dist/assets/accounting_system-DS1yDazM.jpg b/web/dist/assets/accounting_system-DS1yDazM.jpg new file mode 100644 index 000000000..59d0c3575 Binary files /dev/null and b/web/dist/assets/accounting_system-DS1yDazM.jpg differ diff --git a/web/dist/assets/def-user-CUyK0U-V.png b/web/dist/assets/def-user-CUyK0U-V.png new file mode 100644 index 000000000..fcc6d82ec Binary files /dev/null and b/web/dist/assets/def-user-CUyK0U-V.png differ diff --git a/web/dist/assets/enigma-VF8rWhPh.png b/web/dist/assets/enigma-VF8rWhPh.png new file mode 100644 index 000000000..8e0df73f2 Binary files /dev/null and b/web/dist/assets/enigma-VF8rWhPh.png differ diff --git a/web/dist/assets/google-play-badge-BAXiFmDF.png b/web/dist/assets/google-play-badge-BAXiFmDF.png new file mode 100644 index 000000000..131f3acaa Binary files /dev/null and b/web/dist/assets/google-play-badge-BAXiFmDF.png differ diff --git a/web/dist/assets/icewall-C6bJAm8N.png b/web/dist/assets/icewall-C6bJAm8N.png new file mode 100644 index 000000000..fecc0e3d1 Binary files /dev/null and b/web/dist/assets/icewall-C6bJAm8N.png differ diff --git a/web/dist/assets/illustration-DoVs3XZq.svg b/web/dist/assets/illustration-DoVs3XZq.svg new file mode 100644 index 000000000..a0ae933b9 --- /dev/null +++ b/web/dist/assets/illustration-DoVs3XZq.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/dist/assets/index-CaCNov6M.css b/web/dist/assets/index-CaCNov6M.css new file mode 100644 index 000000000..1e52801a8 --- /dev/null +++ b/web/dist/assets/index-CaCNov6M.css @@ -0,0 +1,7 @@ +.rubick .side-nav{width:230px;padding-right:1.25rem;padding-bottom:4rem;overflow-x:hidden}@media (max-width: 1279px){.rubick .side-nav{width:85px}}@media (max-width: 767px){.rubick .side-nav{display:none}}.rubick .side-nav.side-nav--simple{width:85px}.rubick .side-nav.side-nav--simple .side-menu .side-menu__title,.rubick .side-nav.side-nav--simple .side-menu .side-menu__title .side-menu__sub-icon{display:none}.rubick .side-nav.side-nav--simple .side-menu:not(.side-menu--active) .side-menu__icon:before{display:none}.rubick .side-nav .side-nav__divider{width:100%;height:1px;background:#ffffff14;z-index:10;position:relative}.rubick .side-nav .side-menu{height:50px;display:flex;align-items:center;padding-left:1.25rem;color:#fff;margin-bottom:.25rem;position:relative;border-radius:9999px}.rubick .side-nav .side-menu .side-menu__title{width:100%;margin-left:.75rem;display:flex;align-items:center}.rubick .side-nav .side-menu .side-menu__title .side-menu__sub-icon{margin-left:auto;margin-right:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s}.rubick .side-nav .side-menu .side-menu__title .side-menu__sub-icon svg{width:1rem;height:1rem}@media (max-width: 1279px){.rubick .side-nav .side-menu .side-menu__title .side-menu__sub-icon,.rubick .side-nav .side-menu .side-menu__title{display:none}}.rubick .side-nav>ul>li:nth-child(1).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.rubick .side-nav>ul>li:nth-child(1)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.rubick .side-nav>ul>li:nth-child(1)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(2).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.rubick .side-nav>ul>li:nth-child(2)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.rubick .side-nav>ul>li:nth-child(2)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(3).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.rubick .side-nav>ul>li:nth-child(3)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.rubick .side-nav>ul>li:nth-child(3)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(4).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.rubick .side-nav>ul>li:nth-child(4)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.rubick .side-nav>ul>li:nth-child(4)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(5).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.rubick .side-nav>ul>li:nth-child(5)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.rubick .side-nav>ul>li:nth-child(5)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(6).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.rubick .side-nav>ul>li:nth-child(6)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.rubick .side-nav>ul>li:nth-child(6)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(7).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.rubick .side-nav>ul>li:nth-child(7)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.rubick .side-nav>ul>li:nth-child(7)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(8).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.rubick .side-nav>ul>li:nth-child(8)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.rubick .side-nav>ul>li:nth-child(8)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(9).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.rubick .side-nav>ul>li:nth-child(9)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.rubick .side-nav>ul>li:nth-child(9)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(10).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.rubick .side-nav>ul>li:nth-child(10)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.rubick .side-nav>ul>li:nth-child(10)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(11).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.rubick .side-nav>ul>li:nth-child(11)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.rubick .side-nav>ul>li:nth-child(11)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(12).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.rubick .side-nav>ul>li:nth-child(12)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.rubick .side-nav>ul>li:nth-child(12)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(13).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.rubick .side-nav>ul>li:nth-child(13)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.rubick .side-nav>ul>li:nth-child(13)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(14).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.rubick .side-nav>ul>li:nth-child(14)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.rubick .side-nav>ul>li:nth-child(14)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(15).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.rubick .side-nav>ul>li:nth-child(15)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.rubick .side-nav>ul>li:nth-child(15)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(16).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.rubick .side-nav>ul>li:nth-child(16)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.rubick .side-nav>ul>li:nth-child(16)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(17).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.rubick .side-nav>ul>li:nth-child(17)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.rubick .side-nav>ul>li:nth-child(17)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(18).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.rubick .side-nav>ul>li:nth-child(18)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.rubick .side-nav>ul>li:nth-child(18)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(19).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.rubick .side-nav>ul>li:nth-child(19)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.rubick .side-nav>ul>li:nth-child(19)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(20).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.rubick .side-nav>ul>li:nth-child(20)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.rubick .side-nav>ul>li:nth-child(20)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(21).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.rubick .side-nav>ul>li:nth-child(21)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.rubick .side-nav>ul>li:nth-child(21)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(22).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.rubick .side-nav>ul>li:nth-child(22)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.rubick .side-nav>ul>li:nth-child(22)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(23).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.rubick .side-nav>ul>li:nth-child(23)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.rubick .side-nav>ul>li:nth-child(23)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(24).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.rubick .side-nav>ul>li:nth-child(24)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.rubick .side-nav>ul>li:nth-child(24)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(25).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.rubick .side-nav>ul>li:nth-child(25)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.rubick .side-nav>ul>li:nth-child(25)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(26).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.rubick .side-nav>ul>li:nth-child(26)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.rubick .side-nav>ul>li:nth-child(26)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(27).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.rubick .side-nav>ul>li:nth-child(27)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.rubick .side-nav>ul>li:nth-child(27)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(28).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.rubick .side-nav>ul>li:nth-child(28)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.rubick .side-nav>ul>li:nth-child(28)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(29).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.rubick .side-nav>ul>li:nth-child(29)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.rubick .side-nav>ul>li:nth-child(29)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(30).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.rubick .side-nav>ul>li:nth-child(30)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.rubick .side-nav>ul>li:nth-child(30)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(31).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.rubick .side-nav>ul>li:nth-child(31)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.rubick .side-nav>ul>li:nth-child(31)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(32).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.rubick .side-nav>ul>li:nth-child(32)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.rubick .side-nav>ul>li:nth-child(32)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(33).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.rubick .side-nav>ul>li:nth-child(33)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.rubick .side-nav>ul>li:nth-child(33)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(34).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.rubick .side-nav>ul>li:nth-child(34)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.rubick .side-nav>ul>li:nth-child(34)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(35).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.rubick .side-nav>ul>li:nth-child(35)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.rubick .side-nav>ul>li:nth-child(35)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(36).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.rubick .side-nav>ul>li:nth-child(36)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.rubick .side-nav>ul>li:nth-child(36)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(37).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.rubick .side-nav>ul>li:nth-child(37)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.rubick .side-nav>ul>li:nth-child(37)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(38).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.rubick .side-nav>ul>li:nth-child(38)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.rubick .side-nav>ul>li:nth-child(38)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(39).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.rubick .side-nav>ul>li:nth-child(39)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.rubick .side-nav>ul>li:nth-child(39)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(40).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.rubick .side-nav>ul>li:nth-child(40)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.rubick .side-nav>ul>li:nth-child(40)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(41).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.rubick .side-nav>ul>li:nth-child(41)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.rubick .side-nav>ul>li:nth-child(41)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(42).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.rubick .side-nav>ul>li:nth-child(42)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.rubick .side-nav>ul>li:nth-child(42)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(43).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.rubick .side-nav>ul>li:nth-child(43)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.rubick .side-nav>ul>li:nth-child(43)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(44).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.rubick .side-nav>ul>li:nth-child(44)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.rubick .side-nav>ul>li:nth-child(44)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(45).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.rubick .side-nav>ul>li:nth-child(45)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.rubick .side-nav>ul>li:nth-child(45)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(46).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.rubick .side-nav>ul>li:nth-child(46)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.rubick .side-nav>ul>li:nth-child(46)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(47).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.rubick .side-nav>ul>li:nth-child(47)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.rubick .side-nav>ul>li:nth-child(47)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(48).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.rubick .side-nav>ul>li:nth-child(48)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.rubick .side-nav>ul>li:nth-child(48)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(49).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.rubick .side-nav>ul>li:nth-child(49)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.rubick .side-nav>ul>li:nth-child(49)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul>li:nth-child(50).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.rubick .side-nav>ul>li:nth-child(50)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.rubick .side-nav>ul>li:nth-child(50)>a.side-menu--active{animation:.4s intro-active-menu-animation ease-in-out .33333s;animation-fill-mode:forwards}.rubick .side-nav>ul ul li:nth-child(1)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.rubick .side-nav>ul ul li:nth-child(2)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.rubick .side-nav>ul ul li:nth-child(3)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.rubick .side-nav>ul ul li:nth-child(4)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.rubick .side-nav>ul ul li:nth-child(5)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.rubick .side-nav>ul ul li:nth-child(6)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.rubick .side-nav>ul ul li:nth-child(7)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.rubick .side-nav>ul ul li:nth-child(8)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.rubick .side-nav>ul ul li:nth-child(9)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.rubick .side-nav>ul ul li:nth-child(10)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.rubick .side-nav>ul ul li:nth-child(11)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.rubick .side-nav>ul ul li:nth-child(12)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.rubick .side-nav>ul ul li:nth-child(13)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.rubick .side-nav>ul ul li:nth-child(14)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.rubick .side-nav>ul ul li:nth-child(15)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.rubick .side-nav>ul ul li:nth-child(16)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.rubick .side-nav>ul ul li:nth-child(17)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.rubick .side-nav>ul ul li:nth-child(18)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.rubick .side-nav>ul ul li:nth-child(19)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.rubick .side-nav>ul ul li:nth-child(20)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.rubick .side-nav>ul ul li:nth-child(21)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.rubick .side-nav>ul ul li:nth-child(22)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.rubick .side-nav>ul ul li:nth-child(23)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.rubick .side-nav>ul ul li:nth-child(24)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.rubick .side-nav>ul ul li:nth-child(25)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.rubick .side-nav>ul ul li:nth-child(26)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.rubick .side-nav>ul ul li:nth-child(27)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.rubick .side-nav>ul ul li:nth-child(28)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.rubick .side-nav>ul ul li:nth-child(29)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.rubick .side-nav>ul ul li:nth-child(30)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.rubick .side-nav>ul ul li:nth-child(31)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.rubick .side-nav>ul ul li:nth-child(32)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.rubick .side-nav>ul ul li:nth-child(33)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.rubick .side-nav>ul ul li:nth-child(34)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.rubick .side-nav>ul ul li:nth-child(35)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.rubick .side-nav>ul ul li:nth-child(36)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.rubick .side-nav>ul ul li:nth-child(37)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.rubick .side-nav>ul ul li:nth-child(38)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.rubick .side-nav>ul ul li:nth-child(39)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.rubick .side-nav>ul ul li:nth-child(40)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.rubick .side-nav>ul ul li:nth-child(41)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.rubick .side-nav>ul ul li:nth-child(42)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.rubick .side-nav>ul ul li:nth-child(43)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.rubick .side-nav>ul ul li:nth-child(44)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.rubick .side-nav>ul ul li:nth-child(45)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.rubick .side-nav>ul ul li:nth-child(46)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.rubick .side-nav>ul ul li:nth-child(47)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.rubick .side-nav>ul ul li:nth-child(48)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.rubick .side-nav>ul ul li:nth-child(49)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.rubick .side-nav>ul ul li:nth-child(50)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.rubick .side-nav>ul ul{display:none;background-color:#0000001a;border-radius:.5rem}.rubick .side-nav>ul ul.side-menu__sub-open{display:block}.rubick .side-nav>ul ul .side-menu__icon:before{display:none}.rubick .side-nav>ul ul li a:not(.side-menu--active){color:#ffffffb3}.rubick .side-nav>ul ul li a.side-menu--active .side-menu__title{font-weight:500}.rubick .side-nav>ul ul ul{display:none;background:#0000001a;border-radius:.5rem}.rubick .side-nav>ul>li>ul>li>ul>li>.side-menu{padding-left:2.5rem}.rubick .side-nav>ul>li>.side-menu.side-menu--active{background-color:#f1f5f9}.rubick .side-nav>ul>li>.side-menu.side-menu--active:before{content:"";width:30px;height:30px;margin-top:-30px;transform:rotate(90deg) scale(1.04);background-size:100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='259.51' height='259.52' viewBox='0 0 259.51 259.52'%3E%3Cpath id='Path_143' data-name='Path 143' d='M8659.507,423.965c-.167-2.608.05-5.319-.19-8.211-.084-1.012-.031-2.15-.118-3.12-.113-1.25-.1-2.682-.236-4.061-.172-1.722-.179-3.757-.365-5.394-.328-2.889-.478-5.857-.854-8.61-.509-3.714-.825-7.252-1.38-10.543-.934-5.535-2.009-11.312-3.189-16.692-.855-3.9-1.772-7.416-2.752-11.2-1.1-4.256-2.394-8.149-3.687-12.381-1.1-3.615-2.366-6.893-3.623-10.493-1.3-3.739-2.917-7.26-4.284-10.7-1.708-4.295-3.674-8.078-5.485-12.023-1.145-2.493-2.5-4.932-3.727-7.387-1.318-2.646-2.9-5.214-4.152-7.518-1.716-3.16-3.517-5.946-5.274-8.873-1.692-2.818-3.589-5.645-5.355-8.334-2.326-3.542-4.637-6.581-7.039-9.848-2.064-2.809-4.017-5.255-6.088-7.828-2.394-2.974-4.937-5.936-7.292-8.589-3.027-3.411-6.049-6.744-9.055-9.763-2.4-2.412-4.776-4.822-7.108-6.975-3-2.767-5.836-5.471-8.692-7.854-3.332-2.779-6.657-5.663-9.815-8.028-2.958-2.216-5.784-4.613-8.7-6.6-3.161-2.159-6.251-4.414-9.219-6.254-3.814-2.365-7.533-4.882-11.168-6.89-4.213-2.327-8.513-4.909-12.478-6.834-4.61-2.239-9.234-4.619-13.51-6.416-4.1-1.725-8.11-3.505-11.874-4.888-4.5-1.652-8.506-3.191-12.584-4.47-6.045-1.9-12.071-3.678-17.431-5-9.228-2.284-17.608-3.757-24.951-4.9-7.123-1.112-13.437-1.64-18.271-2.035l-2.405-.2c-1.638-.136-3.508-.237-4.633-.3a115.051,115.051,0,0,0-12.526-.227h259.51Z' transform='translate(-8399.997 -164.445)' fill='%23f1f5f8'/%3E%3C/svg%3E%0A");position:absolute;top:0;right:0;margin-right:-1.25rem}.rubick .side-nav>ul>li>.side-menu.side-menu--active:after{content:"";width:30px;height:30px;margin-top:50px;transform:scale(1.04);background-size:100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='259.51' height='259.52' viewBox='0 0 259.51 259.52'%3E%3Cpath id='Path_143' data-name='Path 143' d='M8659.507,423.965c-.167-2.608.05-5.319-.19-8.211-.084-1.012-.031-2.15-.118-3.12-.113-1.25-.1-2.682-.236-4.061-.172-1.722-.179-3.757-.365-5.394-.328-2.889-.478-5.857-.854-8.61-.509-3.714-.825-7.252-1.38-10.543-.934-5.535-2.009-11.312-3.189-16.692-.855-3.9-1.772-7.416-2.752-11.2-1.1-4.256-2.394-8.149-3.687-12.381-1.1-3.615-2.366-6.893-3.623-10.493-1.3-3.739-2.917-7.26-4.284-10.7-1.708-4.295-3.674-8.078-5.485-12.023-1.145-2.493-2.5-4.932-3.727-7.387-1.318-2.646-2.9-5.214-4.152-7.518-1.716-3.16-3.517-5.946-5.274-8.873-1.692-2.818-3.589-5.645-5.355-8.334-2.326-3.542-4.637-6.581-7.039-9.848-2.064-2.809-4.017-5.255-6.088-7.828-2.394-2.974-4.937-5.936-7.292-8.589-3.027-3.411-6.049-6.744-9.055-9.763-2.4-2.412-4.776-4.822-7.108-6.975-3-2.767-5.836-5.471-8.692-7.854-3.332-2.779-6.657-5.663-9.815-8.028-2.958-2.216-5.784-4.613-8.7-6.6-3.161-2.159-6.251-4.414-9.219-6.254-3.814-2.365-7.533-4.882-11.168-6.89-4.213-2.327-8.513-4.909-12.478-6.834-4.61-2.239-9.234-4.619-13.51-6.416-4.1-1.725-8.11-3.505-11.874-4.888-4.5-1.652-8.506-3.191-12.584-4.47-6.045-1.9-12.071-3.678-17.431-5-9.228-2.284-17.608-3.757-24.951-4.9-7.123-1.112-13.437-1.64-18.271-2.035l-2.405-.2c-1.638-.136-3.508-.237-4.633-.3a115.051,115.051,0,0,0-12.526-.227h259.51Z' transform='translate(-8399.997 -164.445)' fill='%23f1f5f8'/%3E%3C/svg%3E%0A");position:absolute;top:0;right:0;margin-right:-1.25rem}.rubick .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon{color:rgb(var(--color-theme-1) / 1)}.rubick .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon:before{content:"";z-index:-1;position:absolute;top:0;right:0;margin-right:-1.25rem;width:3rem;height:100%;background-color:#f1f5f9}.rubick .side-nav>ul>li>.side-menu.side-menu--active .side-menu__title{color:#1e293b;font-weight:500}.rubick .side-nav>ul>li>.side-menu:not(.side-menu--active) .side-menu__icon:before{content:"";z-index:-1;width:230px;position:absolute;top:0;left:0;height:100%;border-top-left-radius:9999px;border-bottom-left-radius:9999px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s}@media (max-width: 1279px){.rubick .side-nav>ul>li>.side-menu:not(.side-menu--active) .side-menu__icon:before{display:none}}.rubick .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open) .side-menu__icon:before{background-color:#ffffff0d}@keyframes intro-active-menu-animation{to{z-index:10}}.dark .rubick .side-nav .side-nav__divider{background-color:#ffffff12}.dark .rubick .side-nav .side-menu{color:#cbd5e1}.dark .rubick .side-nav>ul ul{background-color:rgb(var(--color-darkmode-900) / 30%)}.dark .rubick .side-nav>ul ul li a:not(.side-menu--active){color:#94a3b8}.dark .rubick .side-nav>ul ul ul{background:rgb(var(--color-darkmode-900) / 30%)}.dark .rubick .side-nav>ul>li>.side-menu.side-menu--active{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .rubick .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon{color:#cbd5e1}.dark .rubick .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon:before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .rubick .side-nav>ul>li>.side-menu.side-menu--active .side-menu__title{color:#cbd5e1}.dark .rubick .side-nav>ul>li>.side-menu .side-menu__icon{color:#94a3b8}.dark .rubick .side-nav>ul>li>.side-menu .side-menu__title{color:#94a3b8}.dark .rubick .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open) .side-menu__icon:before{background-color:rgb(var(--color-darkmode-500) / 70%)}.dark .rubick .side-nav>ul>li>.side-menu.side-menu--active:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='259.51' height='259.52' viewBox='0 0 259.51 259.52'%3E%3Cpath id='Path_143' data-name='Path 143' d='M8659.507,423.965c-.167-2.608.05-5.319-.19-8.211-.084-1.012-.031-2.15-.118-3.12-.113-1.25-.1-2.682-.236-4.061-.172-1.722-.179-3.757-.365-5.394-.328-2.889-.478-5.857-.854-8.61-.509-3.714-.825-7.252-1.38-10.543-.934-5.535-2.009-11.312-3.189-16.692-.855-3.9-1.772-7.416-2.752-11.2-1.1-4.256-2.394-8.149-3.687-12.381-1.1-3.615-2.366-6.893-3.623-10.493-1.3-3.739-2.917-7.26-4.284-10.7-1.708-4.295-3.674-8.078-5.485-12.023-1.145-2.493-2.5-4.932-3.727-7.387-1.318-2.646-2.9-5.214-4.152-7.518-1.716-3.16-3.517-5.946-5.274-8.873-1.692-2.818-3.589-5.645-5.355-8.334-2.326-3.542-4.637-6.581-7.039-9.848-2.064-2.809-4.017-5.255-6.088-7.828-2.394-2.974-4.937-5.936-7.292-8.589-3.027-3.411-6.049-6.744-9.055-9.763-2.4-2.412-4.776-4.822-7.108-6.975-3-2.767-5.836-5.471-8.692-7.854-3.332-2.779-6.657-5.663-9.815-8.028-2.958-2.216-5.784-4.613-8.7-6.6-3.161-2.159-6.251-4.414-9.219-6.254-3.814-2.365-7.533-4.882-11.168-6.89-4.213-2.327-8.513-4.909-12.478-6.834-4.61-2.239-9.234-4.619-13.51-6.416-4.1-1.725-8.11-3.505-11.874-4.888-4.5-1.652-8.506-3.191-12.584-4.47-6.045-1.9-12.071-3.678-17.431-5-9.228-2.284-17.608-3.757-24.951-4.9-7.123-1.112-13.437-1.64-18.271-2.035l-2.405-.2c-1.638-.136-3.508-.237-4.633-.3a115.051,115.051,0,0,0-12.526-.227h259.51Z' transform='translate(-8399.997 -164.445)' fill='%23232e45'/%3E%3C/svg%3E%0A")}.dark .rubick .side-nav>ul>li>.side-menu.side-menu--active:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='259.51' height='259.52' viewBox='0 0 259.51 259.52'%3E%3Cpath id='Path_143' data-name='Path 143' d='M8659.507,423.965c-.167-2.608.05-5.319-.19-8.211-.084-1.012-.031-2.15-.118-3.12-.113-1.25-.1-2.682-.236-4.061-.172-1.722-.179-3.757-.365-5.394-.328-2.889-.478-5.857-.854-8.61-.509-3.714-.825-7.252-1.38-10.543-.934-5.535-2.009-11.312-3.189-16.692-.855-3.9-1.772-7.416-2.752-11.2-1.1-4.256-2.394-8.149-3.687-12.381-1.1-3.615-2.366-6.893-3.623-10.493-1.3-3.739-2.917-7.26-4.284-10.7-1.708-4.295-3.674-8.078-5.485-12.023-1.145-2.493-2.5-4.932-3.727-7.387-1.318-2.646-2.9-5.214-4.152-7.518-1.716-3.16-3.517-5.946-5.274-8.873-1.692-2.818-3.589-5.645-5.355-8.334-2.326-3.542-4.637-6.581-7.039-9.848-2.064-2.809-4.017-5.255-6.088-7.828-2.394-2.974-4.937-5.936-7.292-8.589-3.027-3.411-6.049-6.744-9.055-9.763-2.4-2.412-4.776-4.822-7.108-6.975-3-2.767-5.836-5.471-8.692-7.854-3.332-2.779-6.657-5.663-9.815-8.028-2.958-2.216-5.784-4.613-8.7-6.6-3.161-2.159-6.251-4.414-9.219-6.254-3.814-2.365-7.533-4.882-11.168-6.89-4.213-2.327-8.513-4.909-12.478-6.834-4.61-2.239-9.234-4.619-13.51-6.416-4.1-1.725-8.11-3.505-11.874-4.888-4.5-1.652-8.506-3.191-12.584-4.47-6.045-1.9-12.071-3.678-17.431-5-9.228-2.284-17.608-3.757-24.951-4.9-7.123-1.112-13.437-1.64-18.271-2.035l-2.405-.2c-1.638-.136-3.508-.237-4.633-.3a115.051,115.051,0,0,0-12.526-.227h259.51Z' transform='translate(-8399.997 -164.445)' fill='%23232e45'/%3E%3C/svg%3E%0A")}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-placement^=top]>.tippy-svg-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-svg-arrow:after,.tippy-box[data-placement^=top]>.tippy-svg-arrow>svg{top:16px;transform:rotate(180deg)}.tippy-box[data-placement^=bottom]>.tippy-svg-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-placement^=left]>.tippy-svg-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-svg-arrow:after,.tippy-box[data-placement^=left]>.tippy-svg-arrow>svg{transform:rotate(90deg);top:calc(50% - 3px);left:11px}.tippy-box[data-placement^=right]>.tippy-svg-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-svg-arrow:after,.tippy-box[data-placement^=right]>.tippy-svg-arrow>svg{transform:rotate(-90deg);top:calc(50% - 3px);right:11px}.tippy-svg-arrow{width:16px;height:16px;fill:#333;text-align:initial}.tippy-svg-arrow,.tippy-svg-arrow>svg{position:absolute}.tippy-box[data-animation=shift-away][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=top]{transform:translateY(10px)}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=bottom]{transform:translateY(-10px)}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=left]{transform:translate(10px)}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=right]{transform:translate(-10px)}.tooltip-content{left:10000px;position:fixed}.tippy-box{border-radius:.375rem}.tippy-box .tippy-content{padding:.375rem .75rem}.tippy-popper[x-placement=left] .tippy-roundarrow,.tippy-popper[x-placement=left] .tippy-arrow,.tippy-popper[x-placement=right] .tippy-roundarrow,.tippy-popper[x-placement=right] .tippy-arrow,.tippy-popper[x-placement=left-start] .tippy-roundarrow,.tippy-popper[x-placement=left-start] .tippy-arrow,.tippy-popper[x-placement=left-end] .tippy-roundarrow,.tippy-popper[x-placement=left-end] .tippy-arrow,.tippy-popper[x-placement=right-start] .tippy-roundarrow,.tippy-popper[x-placement=right-start] .tippy-arrow,.tippy-popper[x-placement=right-end] .tippy-roundarrow,.tippy-popper[x-placement=right-end] .tippy-arrow{top:0;bottom:0;margin-top:auto;margin-bottom:auto}.tippy-popper[x-placement=top] .tippy-roundarrow,.tippy-popper[x-placement=top] .tippy-arrow,.tippy-popper[x-placement=bottom] .tippy-roundarrow,.tippy-popper[x-placement=bottom] .tippy-arrow,.tippy-popper[x-placement=top-start] .tippy-roundarrow,.tippy-popper[x-placement=top-start] .tippy-arrow,.tippy-popper[x-placement=top-end] .tippy-roundarrow,.tippy-popper[x-placement=top-end] .tippy-arrow,.tippy-popper[x-placement=bottom-start] .tippy-roundarrow,.tippy-popper[x-placement=bottom-start] .tippy-arrow,.tippy-popper[x-placement=bottom-end] .tippy-roundarrow,.tippy-popper[x-placement=bottom-end] .tippy-arrow{left:0;right:0;margin-left:auto;margin-right:auto}.dark .tippy-box{box-shadow:0 0 20px 4px #00000026,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;color:#cbd5e1;background-color:rgb(var(--color-darkmode-300) / 1)}.dark .tippy-box>.tippy-svg-arrow{fill:rgb(var(--color-darkmode-300) / 1)}.ts-control{border:1px solid #d0d0d0;padding:8px;width:100%;overflow:hidden;position:relative;z-index:1;box-sizing:border-box;box-shadow:none;border-radius:3px;display:flex;flex-wrap:wrap}.ts-wrapper.multi.has-items .ts-control{padding:calc(6px + -0) 8px calc(3px + -0)}.full .ts-control{background-color:#fff}.disabled .ts-control,.disabled .ts-control *{cursor:default!important}.focus .ts-control{box-shadow:none}.ts-control>*{vertical-align:baseline;display:inline-block}.ts-wrapper.multi .ts-control>div{cursor:pointer;margin:0 3px 3px 0;padding:2px 6px;background:#f2f2f2;color:#303030;border:0 solid #d0d0d0}.ts-wrapper.multi .ts-control>div.active{background:#e8e8e8;color:#303030;border:0 solid #cacaca}.ts-wrapper.multi.disabled .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div.active{color:#7d7d7d;background:#fff;border:0 solid white}.ts-control>input{flex:1 1 auto;min-width:7rem;display:inline-block!important;padding:0!important;min-height:0!important;max-height:none!important;max-width:100%!important;margin:0!important;text-indent:0!important;border:0 none!important;background:none!important;line-height:inherit!important;-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important;box-shadow:none!important}.ts-control>input::-ms-clear{display:none}.ts-control>input:focus{outline:none!important}.has-items .ts-control>input{margin:0 4px!important}.ts-control.rtl{text-align:right}.ts-control.rtl.single .ts-control:after{left:15px;right:auto}.ts-control.rtl .ts-control>input{margin:0 4px 0 -2px!important}.disabled .ts-control{opacity:.5;background-color:#fafafa}.input-hidden .ts-control>input{opacity:0;position:absolute;left:-10000px}.ts-dropdown{position:absolute;top:100%;left:0;width:100%;z-index:10;border:1px solid #d0d0d0;background:#fff;margin:.25rem 0 0;border-top:0 none;box-sizing:border-box;box-shadow:0 1px 3px #0000001a;border-radius:0 0 3px 3px}.ts-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.ts-dropdown [data-selectable] .highlight{background:#7da8d033;border-radius:1px}.ts-dropdown .option,.ts-dropdown .optgroup-header,.ts-dropdown .no-results,.ts-dropdown .create{padding:5px 8px}.ts-dropdown .option,.ts-dropdown [data-disabled],.ts-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.ts-dropdown [data-selectable].option{opacity:1;cursor:pointer}.ts-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.ts-dropdown .optgroup-header{color:#303030;background:#fff;cursor:default}.ts-dropdown .active{background-color:#f5fafd;color:#495c68}.ts-dropdown .active.create{color:#495c68}.ts-dropdown .create{color:#30303080}.ts-dropdown .spinner{display:inline-block;width:30px;height:30px;margin:5px 8px}.ts-dropdown .spinner:after{content:" ";display:block;width:24px;height:24px;margin:3px;border-radius:50%;border:5px solid #d0d0d0;border-color:#d0d0d0 transparent #d0d0d0 transparent;animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ts-dropdown-content{overflow:hidden auto;max-height:200px;scroll-behavior:smooth}.ts-wrapper.plugin-drag_drop .ts-dragging{color:transparent!important}.ts-wrapper.plugin-drag_drop .ts-dragging>*{visibility:hidden!important}.plugin-checkbox_options:not(.rtl) .option input{margin-right:.5rem}.plugin-checkbox_options.rtl .option input{margin-left:.5rem}.plugin-clear_button{--ts-pr-clear-button: 1em}.plugin-clear_button .clear-button{opacity:0;position:absolute;top:50%;transform:translateY(-50%);right:2px;margin-right:0!important;background:transparent!important;transition:opacity .5s;cursor:pointer}.plugin-clear_button.form-select .clear-button,.plugin-clear_button.single .clear-button{right:max(var(--ts-pr-caret),8px)}.plugin-clear_button.focus.has-items .clear-button,.plugin-clear_button:not(.disabled):hover.has-items .clear-button{opacity:1}.ts-wrapper .dropdown-header{position:relative;padding:10px 8px;border-bottom:1px solid #d0d0d0;background:color-mix(#fff,#d0d0d0,85%);border-radius:3px 3px 0 0}.ts-wrapper .dropdown-header-close{position:absolute;right:8px;top:50%;color:#303030;opacity:.4;margin-top:-12px;line-height:20px;font-size:20px!important}.ts-wrapper .dropdown-header-close:hover{color:#000}.plugin-dropdown_input.focus.dropdown-active .ts-control{box-shadow:none;border:1px solid #d0d0d0}.plugin-dropdown_input .dropdown-input{border:1px solid #d0d0d0;border-width:0 0 1px;display:block;padding:8px;box-shadow:none;width:100%;background:transparent}.plugin-dropdown_input .items-placeholder{border:0 none!important;box-shadow:none!important;width:100%}.plugin-dropdown_input.has-items .items-placeholder,.plugin-dropdown_input.dropdown-active .items-placeholder{display:none!important}.ts-wrapper.plugin-input_autogrow.has-items .ts-control>input{min-width:0}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input{flex:none;min-width:4px}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::-moz-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::placeholder{color:transparent}.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content{display:flex}.ts-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;flex-grow:1;flex-basis:0;min-width:0}.ts-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.ts-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.ts-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.ts-wrapper.plugin-remove_button .item{display:inline-flex;align-items:center}.ts-wrapper.plugin-remove_button .item .remove{color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:0 6px;border-radius:0 2px 2px 0;box-sizing:border-box}.ts-wrapper.plugin-remove_button .item .remove:hover{background:#0000000d}.ts-wrapper.plugin-remove_button.disabled .item .remove:hover{background:none}.ts-wrapper.plugin-remove_button .remove-single{position:absolute;right:0;top:0;font-size:23px}.ts-wrapper.plugin-remove_button:not(.rtl) .item{padding-right:0!important}.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{border-left:1px solid #d0d0d0;margin-left:6px}.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove{border-left-color:#cacaca}.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove{border-left-color:#fff}.ts-wrapper.plugin-remove_button.rtl .item{padding-left:0!important}.ts-wrapper.plugin-remove_button.rtl .item .remove{border-right:1px solid #d0d0d0;margin-right:6px}.ts-wrapper.plugin-remove_button.rtl .item.active .remove{border-right-color:#cacaca}.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove{border-right-color:#fff}:root{--ts-pr-clear-button: 0;--ts-pr-caret: 0;--ts-pr-min: .75rem}.ts-wrapper.single .ts-control,.ts-wrapper.single .ts-control input{cursor:pointer}.ts-control:not(.rtl){padding-right:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-control.rtl{padding-left:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-wrapper{position:relative}.ts-dropdown,.ts-control,.ts-control input{color:#303030;font-family:inherit;font-size:13px;line-height:18px}.ts-control,.ts-wrapper.single.input-active .ts-control{background:#fff;cursor:text}.ts-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.tom-select.ts-wrapper,.tom-select.plugin-dropdown_input.focus.dropdown-active{border-width:1px;border-style:solid;box-shadow:0 1px 2px #0000000d;border-radius:.25rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74 85 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-size:18px;background-position:center right .6rem;background-repeat:no-repeat}.tom-select.ts-wrapper .ts-control,.tom-select.plugin-dropdown_input.focus.dropdown-active .ts-control{border:0;display:flex;outline:none;min-height:36px;align-items:center;background-color:transparent;font-size:inherit;padding:.5rem .75rem}.tom-select.ts-wrapper .ts-control input,.tom-select.plugin-dropdown_input.focus.dropdown-active .ts-control input{font-size:inherit}.tom-select.ts-wrapper.disabled{background-color:#f1f5f9}.tom-select.ts-wrapper.single.input-active .ts-control{background-color:transparent}.tom-select.ts-wrapper.multi.has-items .ts-control{-moz-column-gap:.625rem;column-gap:.625rem;row-gap:.25rem;padding:.25rem .625rem}.tom-select.ts-wrapper.multi .ts-control>div{padding:0 .5rem;margin:0 0 0 -.375rem;border-radius:.25rem;background-color:#e2e8f0}.tom-select.ts-wrapper.plugin-remove_button .item .remove{display:flex;align-items:center;justify-content:center;border-color:#cbd5e1;padding:.25rem .5rem}.tom-select.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{margin-left:.5rem}.tom-select.ts-wrapper .dropdown-header{border-color:#e2e8f0;background-color:#f1f5f9;padding:.625rem;font-weight:500}.tom-select.plugin-dropdown_input.focus.dropdown-active{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' transform='rotate(180)' fill='none' stroke='rgb(74 85 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")}.tom-select.plugin-dropdown_input .dropdown-input-wrap .dropdown-input{outline:none}.tom-select .ts-dropdown{left:-1px;right:-1px;width:auto;z-index:50;margin-top:1px;font-size:inherit;box-shadow:0 1px 2px #0000000d;border-radius:.25rem;border:1px solid #e2e8f0}.tom-select .ts-dropdown .dropdown-input-wrap{padding:.5rem}.tom-select .ts-dropdown .dropdown-input-wrap .dropdown-input{border-radius:.25rem;border:1px solid #e2e8f0}.tom-select .ts-dropdown .optgroup-header{padding:.625rem .75rem;font-weight:500;background-color:#f1f5f9}.tom-select .ts-dropdown .option{padding:.625rem .75rem}.tom-select .ts-dropdown .option[data-selectable].active:not(.selected){color:inherit;background-color:transparent;background-color:#f1f5f9}.tom-select .ts-dropdown .option[data-selectable]:hover:not(.selected){color:inherit;background-color:#f1f5f9}.tom-select .ts-dropdown .selected{color:#fff;background-color:rgb(var(--color-primary) / 1)}.tom-select .ts-dropdown [data-selectable] .highlight{color:#fff;background-color:rgb(var(--color-danger) / 1)}.dark .tom-select.ts-wrapper,.dark .tom-select.plugin-dropdown_input.focus.dropdown-active{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(255 255 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")}.dark .tom-select.ts-wrapper .ts-control,.dark .tom-select.plugin-dropdown_input.focus.dropdown-active .ts-control{color:#cbd5e1}.dark .tom-select.ts-wrapper.disabled{border-color:transparent;background-color:rgb(var(--color-darkmode-800) / 50%)}.dark .tom-select.ts-wrapper.multi .ts-control>div{color:#cbd5e1;background-color:rgb(var(--color-darkmode-600) / 1)}.dark .tom-select.ts-wrapper.plugin-remove_button .item .remove{border-color:rgb(var(--color-darkmode-400) / 1)}.dark .tom-select.ts-wrapper .dropdown-header{border-color:rgb(var(--color-darkmode-800) / 1);background-color:rgb(var(--color-darkmode-800) / 1)}.dark .tom-select.plugin-dropdown_input.focus.dropdown-active{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' transform='rotate(180)' fill='none' stroke='rgb(255 255 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")}.dark .tom-select .ts-dropdown{color:#cbd5e1;border-color:rgb(var(--color-darkmode-800) / 1);background-color:rgb(var(--color-darkmode-700) / 1)}.dark .tom-select .ts-dropdown .dropdown-input-wrap .dropdown-input{border-color:rgb(var(--color-darkmode-800) / 1);background-color:rgb(var(--color-darkmode-600) / 1)}.dark .tom-select .ts-dropdown .optgroup-header{color:#cbd5e1;background-color:rgb(var(--color-darkmode-800) / 1)}.dark .tom-select .ts-dropdown .option[data-selectable].active:not(.selected){background-color:rgb(var(--color-darkmode-600) / 1)}.dark .tom-select .ts-dropdown .option[data-selectable]:hover:not(.selected){background-color:rgb(var(--color-darkmode-600) / 1)}.dark .ts-wrapper{border-color:rgb(var(--color-darkmode-800) / 1);background-color:rgb(var(--color-darkmode-800) / 1)}[data-simplebar]{position:relative;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;max-width:100%;max-height:100%;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{display:none;width:0;height:0}.simplebar-content:before,.simplebar-content:after{content:" ";display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging,[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:"";background:#000;border-radius:7px;left:2px;right:2px;opacity:0;transition:opacity .2s .5s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition-delay:0s;transition-duration:0s}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-scrollbar:before{top:2px;bottom:2px;left:2px;right:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:0;bottom:0;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.simplebar-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:scrollbar!important}.simplebar-dummy-scrollbar-size>div{width:200%;height:200%;margin:10px 0}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}.mobile-menu .menu__divider{width:100%;height:1px;background-color:#ffffff14;position:relative}.mobile-menu .menu{height:50px;display:flex;align-items:center;color:#fff}.mobile-menu .menu .menu__title{display:flex;align-items:center;width:100%;margin-left:.75rem}.mobile-menu .menu .menu__title .menu__sub-icon{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s;margin-left:auto}.mobile-menu .menu .menu__title .menu__sub-icon svg{width:1.25rem;height:1.25rem}.mobile-menu ul>li>.menu{padding-left:1.5rem;padding-right:1.5rem}.mobile-menu ul>li>ul{background:#0000001a;border-radius:.5rem;margin:.25rem 1rem}.mobile-menu ul>li>ul:not(.menu__sub-open){display:none}.mobile-menu ul>li>ul>li>.menu{padding-left:1rem;padding-right:1rem}.mobile-menu ul>li>ul>li>ul{background:#0000001a;border-radius:.5rem;margin:.25rem auto}.mobile-menu ul>li>ul>li>ul:not(.menu__sub-open){display:none}.mobile-menu ul>li>ul>li>ul>li>.menu{padding-left:1rem;padding-right:1rem}.dark .mobile-menu ul>li>ul{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .mobile-menu ul>li>ul>li>ul{background-color:rgb(var(--color-darkmode-600) / 1)}.rubick .top-nav .top-menu{min-height:55px;height:auto;border-radius:9999px;display:flex;align-items:center;padding-top:.75rem;padding-bottom:.75rem;color:#fff;position:relative}@media (min-width: 1280px){.rubick .top-nav .top-menu{border-top-left-radius:1rem;border-top-right-radius:1rem;border-bottom-left-radius:0;border-bottom-right-radius:0}}.rubick .top-nav .top-menu:not(.top-menu--active) .top-menu__icon:before{content:"";z-index:-1;position:absolute;width:100%;height:100%;top:0;left:0;border-radius:9999px}@media (min-width: 1280px){.rubick .top-nav .top-menu:not(.top-menu--active) .top-menu__icon:before{border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:1rem;border-top-right-radius:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s}}.rubick .top-nav .top-menu .top-menu__title{min-width:0;margin-left:.75rem;display:flex;align-items:flex-start}.rubick .top-nav .top-menu .top-menu__title .top-menu__title-text{flex:1 1 auto;min-width:0;white-space:normal;line-height:1.25rem;word-break:break-word;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.rubick .top-nav .top-menu .top-menu__title .top-menu__sub-icon{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s;flex-shrink:0;width:1rem;height:1rem;display:none}@media (min-width: 1280px){.rubick .top-nav .top-menu .top-menu__title .top-menu__sub-icon{display:block}}.rubick .top-nav>ul>li:nth-child(1)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.rubick .top-nav>ul>li:nth-child(2)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.rubick .top-nav>ul>li:nth-child(3)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.rubick .top-nav>ul>li:nth-child(4)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.rubick .top-nav>ul>li:nth-child(5)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.rubick .top-nav>ul>li:nth-child(6)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.rubick .top-nav>ul>li:nth-child(7)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.rubick .top-nav>ul>li:nth-child(8)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.rubick .top-nav>ul>li:nth-child(9)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.rubick .top-nav>ul>li:nth-child(10)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.rubick .top-nav>ul>li:nth-child(11)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.rubick .top-nav>ul>li:nth-child(12)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.rubick .top-nav>ul>li:nth-child(13)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.rubick .top-nav>ul>li:nth-child(14)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.rubick .top-nav>ul>li:nth-child(15)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.rubick .top-nav>ul>li:nth-child(16)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.rubick .top-nav>ul>li:nth-child(17)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.rubick .top-nav>ul>li:nth-child(18)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.rubick .top-nav>ul>li:nth-child(19)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.rubick .top-nav>ul>li:nth-child(20)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.rubick .top-nav>ul>li:nth-child(21)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.rubick .top-nav>ul>li:nth-child(22)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.rubick .top-nav>ul>li:nth-child(23)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.rubick .top-nav>ul>li:nth-child(24)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.rubick .top-nav>ul>li:nth-child(25)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.rubick .top-nav>ul>li:nth-child(26)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.rubick .top-nav>ul>li:nth-child(27)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.rubick .top-nav>ul>li:nth-child(28)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.rubick .top-nav>ul>li:nth-child(29)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.rubick .top-nav>ul>li:nth-child(30)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.rubick .top-nav>ul>li:nth-child(31)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.rubick .top-nav>ul>li:nth-child(32)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.rubick .top-nav>ul>li:nth-child(33)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.rubick .top-nav>ul>li:nth-child(34)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.rubick .top-nav>ul>li:nth-child(35)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.rubick .top-nav>ul>li:nth-child(36)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.rubick .top-nav>ul>li:nth-child(37)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.rubick .top-nav>ul>li:nth-child(38)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.rubick .top-nav>ul>li:nth-child(39)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.rubick .top-nav>ul>li:nth-child(40)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.rubick .top-nav>ul>li:nth-child(41)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.rubick .top-nav>ul>li:nth-child(42)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.rubick .top-nav>ul>li:nth-child(43)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.rubick .top-nav>ul>li:nth-child(44)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.rubick .top-nav>ul>li:nth-child(45)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.rubick .top-nav>ul>li:nth-child(46)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.rubick .top-nav>ul>li:nth-child(47)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.rubick .top-nav>ul>li:nth-child(48)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.rubick .top-nav>ul>li:nth-child(49)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.rubick .top-nav>ul>li:nth-child(50)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.rubick .top-nav>ul>li:hover{position:relative}.rubick .top-nav>ul>li:hover>.top-menu .top-menu__title .top-menu__sub-icon{transform:rotate(-90deg)}.rubick .top-nav>ul>li:hover>.top-menu:not(.top-menu--active) .top-menu__icon:before{background:#ffffff0d}.rubick .top-nav>ul>li:hover>ul{display:block}.rubick .top-nav>ul>li>.top-menu{padding-left:1.25rem;padding-right:1.25rem;margin-right:.25rem;max-width:12rem}.rubick .top-nav>ul>li>.top-menu.top-menu--active{z-index:10;background-color:#f1f5f9}.rubick .top-nav>ul>li>.top-menu.top-menu--active:before{content:"";width:20px;height:20px;margin-left:-20px;transform:rotate(90deg) scale(1.04);background-size:100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='259.51' height='259.52' viewBox='0 0 259.51 259.52'%3E%3Cpath id='Path_143' data-name='Path 143' d='M8659.507,423.965c-.167-2.608.05-5.319-.19-8.211-.084-1.012-.031-2.15-.118-3.12-.113-1.25-.1-2.682-.236-4.061-.172-1.722-.179-3.757-.365-5.394-.328-2.889-.478-5.857-.854-8.61-.509-3.714-.825-7.252-1.38-10.543-.934-5.535-2.009-11.312-3.189-16.692-.855-3.9-1.772-7.416-2.752-11.2-1.1-4.256-2.394-8.149-3.687-12.381-1.1-3.615-2.366-6.893-3.623-10.493-1.3-3.739-2.917-7.26-4.284-10.7-1.708-4.295-3.674-8.078-5.485-12.023-1.145-2.493-2.5-4.932-3.727-7.387-1.318-2.646-2.9-5.214-4.152-7.518-1.716-3.16-3.517-5.946-5.274-8.873-1.692-2.818-3.589-5.645-5.355-8.334-2.326-3.542-4.637-6.581-7.039-9.848-2.064-2.809-4.017-5.255-6.088-7.828-2.394-2.974-4.937-5.936-7.292-8.589-3.027-3.411-6.049-6.744-9.055-9.763-2.4-2.412-4.776-4.822-7.108-6.975-3-2.767-5.836-5.471-8.692-7.854-3.332-2.779-6.657-5.663-9.815-8.028-2.958-2.216-5.784-4.613-8.7-6.6-3.161-2.159-6.251-4.414-9.219-6.254-3.814-2.365-7.533-4.882-11.168-6.89-4.213-2.327-8.513-4.909-12.478-6.834-4.61-2.239-9.234-4.619-13.51-6.416-4.1-1.725-8.11-3.505-11.874-4.888-4.5-1.652-8.506-3.191-12.584-4.47-6.045-1.9-12.071-3.678-17.431-5-9.228-2.284-17.608-3.757-24.951-4.9-7.123-1.112-13.437-1.64-18.271-2.035l-2.405-.2c-1.638-.136-3.508-.237-4.633-.3a115.051,115.051,0,0,0-12.526-.227h259.51Z' transform='translate(-8399.997 -164.445)' fill='%23f1f5f8'/%3E%3C/svg%3E%0A");position:absolute;bottom:0;left:0;display:none}@media (min-width: 1280px){.rubick .top-nav>ul>li>.top-menu.top-menu--active:before{display:block}}.rubick .top-nav>ul>li>.top-menu.top-menu--active:after{content:"";width:20px;height:20px;margin-right:-20px;transform:rotate(180deg) scale(1.04);background-size:100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='259.51' height='259.52' viewBox='0 0 259.51 259.52'%3E%3Cpath id='Path_143' data-name='Path 143' d='M8659.507,423.965c-.167-2.608.05-5.319-.19-8.211-.084-1.012-.031-2.15-.118-3.12-.113-1.25-.1-2.682-.236-4.061-.172-1.722-.179-3.757-.365-5.394-.328-2.889-.478-5.857-.854-8.61-.509-3.714-.825-7.252-1.38-10.543-.934-5.535-2.009-11.312-3.189-16.692-.855-3.9-1.772-7.416-2.752-11.2-1.1-4.256-2.394-8.149-3.687-12.381-1.1-3.615-2.366-6.893-3.623-10.493-1.3-3.739-2.917-7.26-4.284-10.7-1.708-4.295-3.674-8.078-5.485-12.023-1.145-2.493-2.5-4.932-3.727-7.387-1.318-2.646-2.9-5.214-4.152-7.518-1.716-3.16-3.517-5.946-5.274-8.873-1.692-2.818-3.589-5.645-5.355-8.334-2.326-3.542-4.637-6.581-7.039-9.848-2.064-2.809-4.017-5.255-6.088-7.828-2.394-2.974-4.937-5.936-7.292-8.589-3.027-3.411-6.049-6.744-9.055-9.763-2.4-2.412-4.776-4.822-7.108-6.975-3-2.767-5.836-5.471-8.692-7.854-3.332-2.779-6.657-5.663-9.815-8.028-2.958-2.216-5.784-4.613-8.7-6.6-3.161-2.159-6.251-4.414-9.219-6.254-3.814-2.365-7.533-4.882-11.168-6.89-4.213-2.327-8.513-4.909-12.478-6.834-4.61-2.239-9.234-4.619-13.51-6.416-4.1-1.725-8.11-3.505-11.874-4.888-4.5-1.652-8.506-3.191-12.584-4.47-6.045-1.9-12.071-3.678-17.431-5-9.228-2.284-17.608-3.757-24.951-4.9-7.123-1.112-13.437-1.64-18.271-2.035l-2.405-.2c-1.638-.136-3.508-.237-4.633-.3a115.051,115.051,0,0,0-12.526-.227h259.51Z' transform='translate(-8399.997 -164.445)' fill='%23f1f5f8'/%3E%3C/svg%3E%0A");position:absolute;bottom:0;right:0;display:none}@media (min-width: 1280px){.rubick .top-nav>ul>li>.top-menu.top-menu--active:after{display:block}}.rubick .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:rgb(var(--color-theme-1) / 1)}.rubick .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{color:#000;font-weight:500}.rubick .top-nav>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:.75rem}.rubick .top-nav>ul>li>ul{box-shadow:0 3px 20px #0000000b;background-color:rgb(var(--color-theme-1) / 1);display:none;width:-moz-max-content;width:max-content;min-width:14rem;max-width:min(24rem,calc(100vw - 2rem));position:absolute;border-radius:.375rem;z-index:20;padding-left:0;padding-right:0;top:0;margin-top:3.5rem}.rubick .top-nav>ul>li>ul:before{content:"";display:block;position:absolute;width:100%;height:100%;background-color:#0000001a;top:0;left:0;right:0;bottom:0;border-radius:.375rem;z-index:-1}@media (min-width: 1280px){.rubick .top-nav>ul>li>ul{left:100%;margin-left:-4px;margin-top:-1.25rem}}.rubick .top-nav>ul>li>ul>li{padding-left:1.25rem;padding-right:1.25rem;position:relative}.rubick .top-nav>ul>li>ul>li:hover{position:relative}.rubick .top-nav>ul>li>ul>li:hover>.top-menu .top-menu__title .top-menu__sub-icon{transform:rotate(-90deg)}.rubick .top-nav>ul>li>ul>li:hover>ul{display:block}.rubick .top-nav>ul>li>ul>li>.top-menu .top-menu__title{width:100%;min-width:0;white-space:normal;line-height:1.25rem}.rubick .top-nav>ul>li>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:auto;flex-shrink:0}.rubick .top-nav>ul>li>ul>li>ul{left:100%;margin-left:0;box-shadow:0 3px 20px #0000000b;background-color:rgb(var(--color-theme-1) / 1);display:none;width:-moz-max-content;width:max-content;min-width:14rem;max-width:min(24rem,calc(100vw - 2rem));position:absolute;border-radius:.375rem;z-index:20;padding-left:0;padding-right:0;top:0;margin-top:0}.rubick .top-nav>ul>li>ul>li>ul:before{content:"";display:block;position:absolute;width:100%;height:100%;background-color:#0000001a;top:0;left:0;right:0;bottom:0;border-radius:.375rem;z-index:-1}.rubick .top-nav>ul>li>ul>li>ul>li{padding-left:1.25rem;padding-right:1.25rem}.rubick .top-nav>ul>li>ul>li>ul>li>.top-menu .top-menu__title{width:100%;min-width:0;white-space:normal;line-height:1.25rem}.rubick .top-nav>ul>li>ul>li>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:auto;flex-shrink:0}.dark .rubick .top-nav .top-menu .top-menu__title,.dark .rubick .top-nav .top-menu .top-menu__icon{color:#94a3b8}.dark .rubick .top-nav>ul>li:hover>.top-menu:not(.top-menu--active) .top-menu__icon:before{background:rgb(var(--color-darkmode-500) / 70%)}.dark .rubick .top-nav>ul>li>.top-menu.top-menu--active{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .rubick .top-nav>ul>li>.top-menu.top-menu--active:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='259.51' height='259.52' viewBox='0 0 259.51 259.52'%3E%3Cpath id='Path_143' data-name='Path 143' d='M8659.507,423.965c-.167-2.608.05-5.319-.19-8.211-.084-1.012-.031-2.15-.118-3.12-.113-1.25-.1-2.682-.236-4.061-.172-1.722-.179-3.757-.365-5.394-.328-2.889-.478-5.857-.854-8.61-.509-3.714-.825-7.252-1.38-10.543-.934-5.535-2.009-11.312-3.189-16.692-.855-3.9-1.772-7.416-2.752-11.2-1.1-4.256-2.394-8.149-3.687-12.381-1.1-3.615-2.366-6.893-3.623-10.493-1.3-3.739-2.917-7.26-4.284-10.7-1.708-4.295-3.674-8.078-5.485-12.023-1.145-2.493-2.5-4.932-3.727-7.387-1.318-2.646-2.9-5.214-4.152-7.518-1.716-3.16-3.517-5.946-5.274-8.873-1.692-2.818-3.589-5.645-5.355-8.334-2.326-3.542-4.637-6.581-7.039-9.848-2.064-2.809-4.017-5.255-6.088-7.828-2.394-2.974-4.937-5.936-7.292-8.589-3.027-3.411-6.049-6.744-9.055-9.763-2.4-2.412-4.776-4.822-7.108-6.975-3-2.767-5.836-5.471-8.692-7.854-3.332-2.779-6.657-5.663-9.815-8.028-2.958-2.216-5.784-4.613-8.7-6.6-3.161-2.159-6.251-4.414-9.219-6.254-3.814-2.365-7.533-4.882-11.168-6.89-4.213-2.327-8.513-4.909-12.478-6.834-4.61-2.239-9.234-4.619-13.51-6.416-4.1-1.725-8.11-3.505-11.874-4.888-4.5-1.652-8.506-3.191-12.584-4.47-6.045-1.9-12.071-3.678-17.431-5-9.228-2.284-17.608-3.757-24.951-4.9-7.123-1.112-13.437-1.64-18.271-2.035l-2.405-.2c-1.638-.136-3.508-.237-4.633-.3a115.051,115.051,0,0,0-12.526-.227h259.51Z' transform='translate(-8399.997 -164.445)' fill='%23232e45'/%3E%3C/svg%3E%0A")}.dark .rubick .top-nav>ul>li>.top-menu.top-menu--active:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='259.51' height='259.52' viewBox='0 0 259.51 259.52'%3E%3Cpath id='Path_143' data-name='Path 143' d='M8659.507,423.965c-.167-2.608.05-5.319-.19-8.211-.084-1.012-.031-2.15-.118-3.12-.113-1.25-.1-2.682-.236-4.061-.172-1.722-.179-3.757-.365-5.394-.328-2.889-.478-5.857-.854-8.61-.509-3.714-.825-7.252-1.38-10.543-.934-5.535-2.009-11.312-3.189-16.692-.855-3.9-1.772-7.416-2.752-11.2-1.1-4.256-2.394-8.149-3.687-12.381-1.1-3.615-2.366-6.893-3.623-10.493-1.3-3.739-2.917-7.26-4.284-10.7-1.708-4.295-3.674-8.078-5.485-12.023-1.145-2.493-2.5-4.932-3.727-7.387-1.318-2.646-2.9-5.214-4.152-7.518-1.716-3.16-3.517-5.946-5.274-8.873-1.692-2.818-3.589-5.645-5.355-8.334-2.326-3.542-4.637-6.581-7.039-9.848-2.064-2.809-4.017-5.255-6.088-7.828-2.394-2.974-4.937-5.936-7.292-8.589-3.027-3.411-6.049-6.744-9.055-9.763-2.4-2.412-4.776-4.822-7.108-6.975-3-2.767-5.836-5.471-8.692-7.854-3.332-2.779-6.657-5.663-9.815-8.028-2.958-2.216-5.784-4.613-8.7-6.6-3.161-2.159-6.251-4.414-9.219-6.254-3.814-2.365-7.533-4.882-11.168-6.89-4.213-2.327-8.513-4.909-12.478-6.834-4.61-2.239-9.234-4.619-13.51-6.416-4.1-1.725-8.11-3.505-11.874-4.888-4.5-1.652-8.506-3.191-12.584-4.47-6.045-1.9-12.071-3.678-17.431-5-9.228-2.284-17.608-3.757-24.951-4.9-7.123-1.112-13.437-1.64-18.271-2.035l-2.405-.2c-1.638-.136-3.508-.237-4.633-.3a115.051,115.051,0,0,0-12.526-.227h259.51Z' transform='translate(-8399.997 -164.445)' fill='%23232e45'/%3E%3C/svg%3E%0A")}.dark .rubick .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:#fff}.dark .rubick .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{color:#fff}.dark .rubick .top-nav>ul>li>ul{background-color:rgb(var(--color-darkmode-600) / 1);box-shadow:0 3px 7px #0000001c}.dark .rubick .top-nav>ul>li>ul>li>ul{background-color:rgb(var(--color-darkmode-600) / 1);box-shadow:0 3px 7px #0000001c}.icewall:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-attachment:fixed;background-repeat:no-repeat;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1920.004' height='1193.001' viewBox='0 0 1920.004 1193.001'%3E%3Cpath id='Intersection_13' data-name='Intersection 13' d='M1183.231,1554.011,2050,361.011h346.311V1440.1l-82.762,113.912Zm-706.924-1193H918.725L476.308,969.945Z' transform='translate(-476.307 -361.011)' fill='rgba(255,255,255,0.02)'/%3E%3C/svg%3E%0A")}.icewall .side-nav.side-nav--simple .side-menu .side-menu__title,.icewall .side-nav.side-nav--simple .side-menu .side-menu__title .side-menu__sub-icon{display:none}.icewall .side-nav .side-nav__divider{width:100%;height:1px;background-color:#ffffff14;z-index:10;position:relative}.icewall .side-nav .side-menu{height:50px;display:flex;align-items:center;padding-left:1.25rem;color:#fff;margin-bottom:.25rem;position:relative;border-radius:.5rem}.icewall .side-nav .side-menu .side-menu__title{display:none;align-items:center;width:100%;margin-left:.75rem}@media (min-width: 1280px){.icewall .side-nav .side-menu .side-menu__title{display:flex}}.icewall .side-nav .side-menu .side-menu__title .side-menu__sub-icon{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s;margin-left:auto;margin-right:1.25rem;display:none}@media (min-width: 1280px){.icewall .side-nav .side-menu .side-menu__title .side-menu__sub-icon{display:block}}.icewall .side-nav .side-menu .side-menu__title .side-menu__sub-icon svg{width:1rem;height:1rem}.icewall .side-nav>ul>li:nth-child(1).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.icewall .side-nav>ul>li:nth-child(1)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.icewall .side-nav>ul>li:nth-child(2).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.icewall .side-nav>ul>li:nth-child(2)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.icewall .side-nav>ul>li:nth-child(3).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.icewall .side-nav>ul>li:nth-child(3)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.icewall .side-nav>ul>li:nth-child(4).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.icewall .side-nav>ul>li:nth-child(4)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.icewall .side-nav>ul>li:nth-child(5).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.icewall .side-nav>ul>li:nth-child(5)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.icewall .side-nav>ul>li:nth-child(6).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.icewall .side-nav>ul>li:nth-child(6)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.icewall .side-nav>ul>li:nth-child(7).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.icewall .side-nav>ul>li:nth-child(7)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.icewall .side-nav>ul>li:nth-child(8).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.icewall .side-nav>ul>li:nth-child(8)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.icewall .side-nav>ul>li:nth-child(9).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.icewall .side-nav>ul>li:nth-child(9)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.icewall .side-nav>ul>li:nth-child(10).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.icewall .side-nav>ul>li:nth-child(10)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.icewall .side-nav>ul>li:nth-child(11).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.icewall .side-nav>ul>li:nth-child(11)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.icewall .side-nav>ul>li:nth-child(12).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.icewall .side-nav>ul>li:nth-child(12)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.icewall .side-nav>ul>li:nth-child(13).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.icewall .side-nav>ul>li:nth-child(13)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.icewall .side-nav>ul>li:nth-child(14).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.icewall .side-nav>ul>li:nth-child(14)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.icewall .side-nav>ul>li:nth-child(15).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.icewall .side-nav>ul>li:nth-child(15)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.icewall .side-nav>ul>li:nth-child(16).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.icewall .side-nav>ul>li:nth-child(16)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.icewall .side-nav>ul>li:nth-child(17).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.icewall .side-nav>ul>li:nth-child(17)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.icewall .side-nav>ul>li:nth-child(18).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.icewall .side-nav>ul>li:nth-child(18)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.icewall .side-nav>ul>li:nth-child(19).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.icewall .side-nav>ul>li:nth-child(19)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.icewall .side-nav>ul>li:nth-child(20).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.icewall .side-nav>ul>li:nth-child(20)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.icewall .side-nav>ul>li:nth-child(21).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.icewall .side-nav>ul>li:nth-child(21)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.icewall .side-nav>ul>li:nth-child(22).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.icewall .side-nav>ul>li:nth-child(22)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.icewall .side-nav>ul>li:nth-child(23).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.icewall .side-nav>ul>li:nth-child(23)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.icewall .side-nav>ul>li:nth-child(24).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.icewall .side-nav>ul>li:nth-child(24)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.icewall .side-nav>ul>li:nth-child(25).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.icewall .side-nav>ul>li:nth-child(25)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.icewall .side-nav>ul>li:nth-child(26).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.icewall .side-nav>ul>li:nth-child(26)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.icewall .side-nav>ul>li:nth-child(27).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.icewall .side-nav>ul>li:nth-child(27)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.icewall .side-nav>ul>li:nth-child(28).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.icewall .side-nav>ul>li:nth-child(28)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.icewall .side-nav>ul>li:nth-child(29).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.icewall .side-nav>ul>li:nth-child(29)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.icewall .side-nav>ul>li:nth-child(30).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.icewall .side-nav>ul>li:nth-child(30)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.icewall .side-nav>ul>li:nth-child(31).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.icewall .side-nav>ul>li:nth-child(31)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.icewall .side-nav>ul>li:nth-child(32).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.icewall .side-nav>ul>li:nth-child(32)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.icewall .side-nav>ul>li:nth-child(33).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.icewall .side-nav>ul>li:nth-child(33)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.icewall .side-nav>ul>li:nth-child(34).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.icewall .side-nav>ul>li:nth-child(34)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.icewall .side-nav>ul>li:nth-child(35).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.icewall .side-nav>ul>li:nth-child(35)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.icewall .side-nav>ul>li:nth-child(36).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.icewall .side-nav>ul>li:nth-child(36)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.icewall .side-nav>ul>li:nth-child(37).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.icewall .side-nav>ul>li:nth-child(37)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.icewall .side-nav>ul>li:nth-child(38).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.icewall .side-nav>ul>li:nth-child(38)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.icewall .side-nav>ul>li:nth-child(39).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.icewall .side-nav>ul>li:nth-child(39)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.icewall .side-nav>ul>li:nth-child(40).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.icewall .side-nav>ul>li:nth-child(40)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.icewall .side-nav>ul>li:nth-child(41).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.icewall .side-nav>ul>li:nth-child(41)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.icewall .side-nav>ul>li:nth-child(42).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.icewall .side-nav>ul>li:nth-child(42)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.icewall .side-nav>ul>li:nth-child(43).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.icewall .side-nav>ul>li:nth-child(43)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.icewall .side-nav>ul>li:nth-child(44).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.icewall .side-nav>ul>li:nth-child(44)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.icewall .side-nav>ul>li:nth-child(45).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.icewall .side-nav>ul>li:nth-child(45)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.icewall .side-nav>ul>li:nth-child(46).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.icewall .side-nav>ul>li:nth-child(46)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.icewall .side-nav>ul>li:nth-child(47).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.icewall .side-nav>ul>li:nth-child(47)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.icewall .side-nav>ul>li:nth-child(48).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.icewall .side-nav>ul>li:nth-child(48)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.icewall .side-nav>ul>li:nth-child(49).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.icewall .side-nav>ul>li:nth-child(49)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.icewall .side-nav>ul>li:nth-child(50).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.icewall .side-nav>ul>li:nth-child(50)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.icewall .side-nav>ul ul li:nth-child(1)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.icewall .side-nav>ul ul li:nth-child(2)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.icewall .side-nav>ul ul li:nth-child(3)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.icewall .side-nav>ul ul li:nth-child(4)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.icewall .side-nav>ul ul li:nth-child(5)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.icewall .side-nav>ul ul li:nth-child(6)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.icewall .side-nav>ul ul li:nth-child(7)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.icewall .side-nav>ul ul li:nth-child(8)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.icewall .side-nav>ul ul li:nth-child(9)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.icewall .side-nav>ul ul li:nth-child(10)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.icewall .side-nav>ul ul li:nth-child(11)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.icewall .side-nav>ul ul li:nth-child(12)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.icewall .side-nav>ul ul li:nth-child(13)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.icewall .side-nav>ul ul li:nth-child(14)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.icewall .side-nav>ul ul li:nth-child(15)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.icewall .side-nav>ul ul li:nth-child(16)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.icewall .side-nav>ul ul li:nth-child(17)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.icewall .side-nav>ul ul li:nth-child(18)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.icewall .side-nav>ul ul li:nth-child(19)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.icewall .side-nav>ul ul li:nth-child(20)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.icewall .side-nav>ul ul li:nth-child(21)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.icewall .side-nav>ul ul li:nth-child(22)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.icewall .side-nav>ul ul li:nth-child(23)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.icewall .side-nav>ul ul li:nth-child(24)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.icewall .side-nav>ul ul li:nth-child(25)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.icewall .side-nav>ul ul li:nth-child(26)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.icewall .side-nav>ul ul li:nth-child(27)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.icewall .side-nav>ul ul li:nth-child(28)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.icewall .side-nav>ul ul li:nth-child(29)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.icewall .side-nav>ul ul li:nth-child(30)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.icewall .side-nav>ul ul li:nth-child(31)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.icewall .side-nav>ul ul li:nth-child(32)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.icewall .side-nav>ul ul li:nth-child(33)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.icewall .side-nav>ul ul li:nth-child(34)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.icewall .side-nav>ul ul li:nth-child(35)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.icewall .side-nav>ul ul li:nth-child(36)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.icewall .side-nav>ul ul li:nth-child(37)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.icewall .side-nav>ul ul li:nth-child(38)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.icewall .side-nav>ul ul li:nth-child(39)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.icewall .side-nav>ul ul li:nth-child(40)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.icewall .side-nav>ul ul li:nth-child(41)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.icewall .side-nav>ul ul li:nth-child(42)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.icewall .side-nav>ul ul li:nth-child(43)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.icewall .side-nav>ul ul li:nth-child(44)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.icewall .side-nav>ul ul li:nth-child(45)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.icewall .side-nav>ul ul li:nth-child(46)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.icewall .side-nav>ul ul li:nth-child(47)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.icewall .side-nav>ul ul li:nth-child(48)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.icewall .side-nav>ul ul li:nth-child(49)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.icewall .side-nav>ul ul li:nth-child(50)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.icewall .side-nav>ul>li>.side-menu.side-menu--active{background-color:rgb(var(--color-theme-1) / 1);z-index:10}.icewall .side-nav>ul>li>.side-menu.side-menu--active:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:#ffffff14;border-radius:.5rem;position:absolute;border-bottom:3px solid rgb(0 0 0 / 10%)}.icewall .side-nav>ul>li>.side-menu.side-menu--active:after{content:"";width:20px;height:80px;background-repeat:no-repeat;background-size:cover;position:absolute;top:0;bottom:0;right:0;margin-top:auto;margin-bottom:auto;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23f1f5f8'/%3E%3C/svg%3E");margin-right:-47px;opacity:0;animation:.3s ease-in-out 1s active-side-menu-chevron;animation-fill-mode:forwards}.icewall .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon{z-index:10}.icewall .side-nav>ul>li>.side-menu.side-menu--active .side-menu__title{font-weight:500;z-index:10}.icewall .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open){background-color:rgb(var(--color-theme-1) / 60%)}.icewall .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open):before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:#ffffff0a;border-radius:.5rem;position:absolute;z-index:-1}.icewall .side-nav>ul>li>ul{background-color:#ffffff0a;border-radius:.5rem;position:relative}.icewall .side-nav>ul>li>ul:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:rgb(var(--color-theme-1) / 60%);border-radius:.5rem;position:absolute;z-index:-1}.icewall .side-nav>ul>li>ul:not(.side-menu__sub-open){display:none}.icewall .side-nav>ul>li>ul>li>.side-menu.side-menu--active .side-menu__title{font-weight:500}.icewall .side-nav>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#ffffffb3}.icewall .side-nav>ul>li>ul>li>ul{background-color:#ffffff0a;border-radius:.5rem;position:relative}.icewall .side-nav>ul>li>ul>li>ul:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:rgb(var(--color-theme-1) / 60%);border-radius:.5rem;position:absolute;z-index:-1}.icewall .side-nav>ul>li>ul>li>ul:not(.side-menu__sub-open){display:none}.icewall .side-nav>ul>li>ul>li>ul>li>.side-menu{padding-left:2.5rem}.icewall .side-nav>ul>li>ul>li>ul>li>.side-menu.side-menu--active .side-menu__title{font-weight:500}.icewall .side-nav>ul>li>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#ffffffb3}.dark .icewall:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1920.004' height='1193.001' viewBox='0 0 1920.004 1193.001'%3E%3Cpath id='Intersection_13' data-name='Intersection 13' d='M1183.231,1554.011,2050,361.011h346.311V1440.1l-82.762,113.912Zm-706.924-1193H918.725L476.308,969.945Z' transform='translate(-476.307 -361.011)' fill='rgba(0,0,0,0.06)'/%3E%3C/svg%3E%0A")}.dark .icewall .side-nav .side-nav__divider{background-color:#ffffff12}.dark .icewall .side-nav>ul>li>.side-menu.side-menu--active{background-color:transparent}.dark .icewall .side-nav>ul>li>.side-menu.side-menu--active:before{border-color:#0000001a;background-color:rgb(var(--color-darkmode-700) / 1)}.dark .icewall .side-nav>ul>li>.side-menu.side-menu--active:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23232e45'/%3E%3C/svg%3E")}.dark .icewall .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon{color:#cbd5e1}.dark .icewall .side-nav>ul>li>.side-menu.side-menu--active .side-menu__title{color:#cbd5e1}.dark .icewall .side-nav>ul>li>.side-menu:not(.side-menu--active) .side-menu__icon{color:#94a3b8}.dark .icewall .side-nav>ul>li>.side-menu:not(.side-menu--active) .side-menu__title{color:#94a3b8}.dark .icewall .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open):before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .icewall .side-nav>ul>li>ul{background-color:transparent}.dark .icewall .side-nav>ul>li>ul:before{background-color:rgb(var(--color-darkmode-900) / 30%)}.dark .icewall .side-nav>ul>li>ul>li>.side-menu.side-menu--active{color:#cbd5e1}.dark .icewall .side-nav>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#94a3b8}.dark .icewall .side-nav>ul>li>ul>li>ul{background-color:transparent}.dark .icewall .side-nav>ul>li>ul>li>ul:before{background-color:rgb(var(--color-darkmode-900) / 30%)}.dark .icewall .side-nav>ul>li>ul>li>ul>li>.side-menu.side-menu--active{color:#cbd5e1}.dark .icewall .side-nav>ul>li>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#94a3b8}.icewall:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-attachment:fixed;background-repeat:no-repeat;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1920.004' height='1193.001' viewBox='0 0 1920.004 1193.001'%3E%3Cpath id='Intersection_13' data-name='Intersection 13' d='M1183.231,1554.011,2050,361.011h346.311V1440.1l-82.762,113.912Zm-706.924-1193H918.725L476.308,969.945Z' transform='translate(-476.307 -361.011)' fill='rgba(255,255,255,0.02)'/%3E%3C/svg%3E%0A")}.icewall .wrapper:before{animation:.4s intro-wrapper ease-in-out .1s;animation-fill-mode:forwards}.icewall .wrapper .wrapper-box{animation:.4s intro-wrapper ease-in-out .2s;animation-fill-mode:forwards}.icewall .top-nav{animation:.4s intro-top-menu ease-in-out .3s;animation-fill-mode:forwards}.icewall .top-nav .top-menu{min-height:55px;height:auto;display:flex;align-items:center;padding:.75rem 1.25rem;margin-right:.25rem;color:#fff;position:relative;border-radius:9999px}@media (min-width: 1280px){.icewall .top-nav .top-menu{height:47px;border-radius:.5rem}}.icewall .top-nav .top-menu .top-menu__icon{z-index:10}.icewall .top-nav .top-menu .top-menu__title{width:100%;min-width:0;margin-left:.75rem;display:flex;align-items:flex-start;z-index:10}.icewall .top-nav .top-menu .top-menu__title .top-menu__title-text{flex:1 1 auto;min-width:0;white-space:normal;line-height:1.25rem;word-break:break-word;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.icewall .top-nav .top-menu .top-menu__title .top-menu__sub-icon{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s;flex-shrink:0;width:1rem;height:1rem;display:none}@media (min-width: 1280px){.icewall .top-nav .top-menu .top-menu__title .top-menu__sub-icon{display:block}}.icewall .top-nav>ul>li:nth-child(1)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.icewall .top-nav>ul>li:nth-child(2)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.icewall .top-nav>ul>li:nth-child(3)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.icewall .top-nav>ul>li:nth-child(4)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.icewall .top-nav>ul>li:nth-child(5)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.icewall .top-nav>ul>li:nth-child(6)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.icewall .top-nav>ul>li:nth-child(7)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.icewall .top-nav>ul>li:nth-child(8)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.icewall .top-nav>ul>li:nth-child(9)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.icewall .top-nav>ul>li:nth-child(10)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.icewall .top-nav>ul>li:nth-child(11)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.icewall .top-nav>ul>li:nth-child(12)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.icewall .top-nav>ul>li:nth-child(13)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.icewall .top-nav>ul>li:nth-child(14)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.icewall .top-nav>ul>li:nth-child(15)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.icewall .top-nav>ul>li:nth-child(16)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.icewall .top-nav>ul>li:nth-child(17)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.icewall .top-nav>ul>li:nth-child(18)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.icewall .top-nav>ul>li:nth-child(19)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.icewall .top-nav>ul>li:nth-child(20)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.icewall .top-nav>ul>li:nth-child(21)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.icewall .top-nav>ul>li:nth-child(22)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.icewall .top-nav>ul>li:nth-child(23)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.icewall .top-nav>ul>li:nth-child(24)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.icewall .top-nav>ul>li:nth-child(25)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.icewall .top-nav>ul>li:nth-child(26)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.icewall .top-nav>ul>li:nth-child(27)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.icewall .top-nav>ul>li:nth-child(28)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.icewall .top-nav>ul>li:nth-child(29)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.icewall .top-nav>ul>li:nth-child(30)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.icewall .top-nav>ul>li:nth-child(31)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.icewall .top-nav>ul>li:nth-child(32)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.icewall .top-nav>ul>li:nth-child(33)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.icewall .top-nav>ul>li:nth-child(34)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.icewall .top-nav>ul>li:nth-child(35)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.icewall .top-nav>ul>li:nth-child(36)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.icewall .top-nav>ul>li:nth-child(37)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.icewall .top-nav>ul>li:nth-child(38)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.icewall .top-nav>ul>li:nth-child(39)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.icewall .top-nav>ul>li:nth-child(40)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.icewall .top-nav>ul>li:nth-child(41)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.icewall .top-nav>ul>li:nth-child(42)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.icewall .top-nav>ul>li:nth-child(43)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.icewall .top-nav>ul>li:nth-child(44)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.icewall .top-nav>ul>li:nth-child(45)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.icewall .top-nav>ul>li:nth-child(46)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.icewall .top-nav>ul>li:nth-child(47)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.icewall .top-nav>ul>li:nth-child(48)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.icewall .top-nav>ul>li:nth-child(49)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.icewall .top-nav>ul>li:nth-child(50)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.icewall .top-nav>ul>li:hover{position:relative}.icewall .top-nav>ul>li:hover>.top-menu{background:rgb(var(--color-theme-1) / 60%)}.icewall .top-nav>ul>li:hover>.top-menu:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:#ffffff0a;border-radius:9999px;position:absolute;z-index:-1}@media (min-width: 1280px){.icewall .top-nav>ul>li:hover>.top-menu:before{background-color:#ffffff1a;border-radius:.5rem}}.icewall .top-nav>ul>li:hover>.top-menu .top-menu__title .top-menu__sub-icon{transform:rotate(180deg)}.icewall .top-nav>ul>li:hover>ul{display:block}.icewall .top-nav>ul>li>.top-menu{margin-top:3px;max-width:12rem}.icewall .top-nav>ul>li>.top-menu.top-menu--active{background-color:#f1f5f9}@media (min-width: 1280px){.icewall .top-nav>ul>li>.top-menu.top-menu--active{background-color:rgb(var(--color-theme-1) / 1)}}.icewall .top-nav>ul>li>.top-menu.top-menu--active:before{content:"";display:none;top:0;left:0;right:0;bottom:0;background-color:#ffffff14;border-radius:.5rem;position:absolute;border-bottom:3px solid rgb(0 0 0 / 10%)}@media (min-width: 1280px){.icewall .top-nav>ul>li>.top-menu.top-menu--active:before{display:block}}.icewall .top-nav>ul>li>.top-menu.top-menu--active:after{content:"";animation:.3s ease-in-out 1s active-top-menu-chevron;animation-fill-mode:forwards;display:none;width:20px;height:80px;margin-bottom:-74px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23f1f5f8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:cover;position:absolute;left:0;right:0;bottom:0;margin-left:auto;margin-right:auto;transform:rotate(90deg);opacity:0}@media (min-width: 1280px){.icewall .top-nav>ul>li>.top-menu.top-menu--active:after{display:block}}.icewall .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:rgb(var(--color-theme-1) / 1)}@media (min-width: 1280px){.icewall .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:#fff}}.icewall .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{font-weight:500;color:#1e293b}@media (min-width: 1280px){.icewall .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{color:#fff}}.icewall .top-nav>ul>li>.top-menu .top-menu__icon{margin-top:-3px}.icewall .top-nav>ul>li>.top-menu .top-menu__title{margin-top:-3px}.icewall .top-nav>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:.75rem}.icewall .top-nav>ul>li>ul{box-shadow:0 3px 20px #0000000b;background-color:rgb(var(--color-theme-1) / 1);display:none;width:14rem;position:absolute;border-radius:.375rem;z-index:20;padding-left:0;padding-right:0;margin-top:.25rem}.icewall .top-nav>ul>li>ul:before{content:"";display:block;position:absolute;width:100%;height:100%;background-color:#ffffff0a;top:0;left:0;right:0;bottom:0;border-radius:.375rem;z-index:-1}.icewall .top-nav>ul>li>ul:after{content:"";width:100%;height:.25rem;position:absolute;top:0;left:0;margin-top:-.25rem;cursor:pointer}.icewall .top-nav>ul>li>ul>li{padding-left:1.25rem;padding-right:1.25rem;position:relative}.icewall .top-nav>ul>li>ul>li:hover{position:relative}.icewall .top-nav>ul>li>ul>li:hover>.top-menu .top-menu__title .top-menu__sub-icon{transform:rotate(-90deg)}.icewall .top-nav>ul>li>ul>li:hover>ul{display:block}.icewall .top-nav>ul>li>ul>li>.top-menu{padding-left:0;padding-right:0;margin-right:0}.icewall .top-nav>ul>li>ul>li>.top-menu .top-menu__title{width:100%}.icewall .top-nav>ul>li>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:auto}.icewall .top-nav>ul>li>ul>li>ul{box-shadow:0 3px 20px #0000000b;left:100%;background-color:rgb(var(--color-theme-1) / 1);display:none;border-radius:.375rem;margin-top:0;margin-left:0;top:0;width:14rem;position:absolute;z-index:20;padding-left:0;padding-right:0}.icewall .top-nav>ul>li>ul>li>ul:before{content:"";display:block;position:absolute;width:100%;height:100%;background-color:#ffffff0a;top:0;left:0;right:0;bottom:0;border-radius:.375rem;z-index:-1}.icewall .top-nav>ul>li>ul>li>ul>li{padding-left:1.25rem;padding-right:1.25rem}.icewall .top-nav>ul>li>ul>li>ul>li>.top-menu{padding-left:0;padding-right:0;margin-right:0}.icewall .top-nav>ul>li>ul>li>ul>li>.top-menu .top-menu__title{width:100%}.icewall .top-nav>ul>li>ul>li>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:auto}@keyframes active-top-menu-chevron{to{opacity:1;margin-bottom:-54px}}@keyframes intro-wrapper{to{opacity:1;transform:translate(0)}}.dark .icewall:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1920.004' height='1193.001' viewBox='0 0 1920.004 1193.001'%3E%3Cpath id='Intersection_13' data-name='Intersection 13' d='M1183.231,1554.011,2050,361.011h346.311V1440.1l-82.762,113.912Zm-706.924-1193H918.725L476.308,969.945Z' transform='translate(-476.307 -361.011)' fill='rgba(0,0,0,0.06)'/%3E%3C/svg%3E%0A")}.dark .icewall .top-nav .top-menu .top-menu__icon,.dark .icewall .top-nav .top-menu .top-menu__title{color:#94a3b8}.dark .icewall .top-nav>ul>li:hover>.top-menu:not(.top-menu--active){background-color:transparent}.dark .icewall .top-nav>ul>li:hover>.top-menu:not(.top-menu--active):before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .icewall .top-nav>ul>li>.top-menu.top-menu--active{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .icewall .top-nav>ul>li>.top-menu.top-menu--active:before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .icewall .top-nav>ul>li>.top-menu.top-menu--active:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23232e45'/%3E%3C/svg%3E")}.dark .icewall .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:#fff}.dark .icewall .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{color:#fff}.dark .icewall .top-nav>ul>li>ul{background-color:rgb(var(--color-darkmode-600) / 1);box-shadow:0 3px 7px #0000001c}.dark .icewall .top-nav>ul>li>ul:before{background-color:#0000001a}.dark .icewall .top-nav>ul>li>ul>li>ul{background-color:rgb(var(--color-darkmode-600) / 1);box-shadow:0 3px 7px #0000001c}.dark .icewall .top-nav>ul>li>ul>li>ul:before{background-color:#0000001a}.tinker .side-nav.side-nav--simple .side-menu .side-menu__title,.tinker .side-nav.side-nav--simple .side-menu .side-menu__title .side-menu__sub-icon{display:none}.tinker .side-nav .side-nav__divider{width:100%;height:1px;background-color:#ffffff14;z-index:10;position:relative}.tinker .side-nav .side-menu{height:50px;display:flex;align-items:center;padding-left:1.25rem;color:#fff;margin-bottom:.25rem;position:relative;border-radius:.5rem}.tinker .side-nav .side-menu .side-menu__title{display:none;align-items:center;width:100%;margin-left:.75rem}@media (min-width: 1280px){.tinker .side-nav .side-menu .side-menu__title{display:flex}}.tinker .side-nav .side-menu .side-menu__title .side-menu__sub-icon{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s;margin-left:auto;margin-right:1.25rem;display:none}@media (min-width: 1280px){.tinker .side-nav .side-menu .side-menu__title .side-menu__sub-icon{display:block}}.tinker .side-nav .side-menu .side-menu__title .side-menu__sub-icon svg{width:1rem;height:1rem}.tinker .side-nav>ul>li:nth-child(1).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.tinker .side-nav>ul>li:nth-child(1)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.tinker .side-nav>ul>li:nth-child(2).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.tinker .side-nav>ul>li:nth-child(2)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.tinker .side-nav>ul>li:nth-child(3).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.tinker .side-nav>ul>li:nth-child(3)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.tinker .side-nav>ul>li:nth-child(4).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.tinker .side-nav>ul>li:nth-child(4)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.tinker .side-nav>ul>li:nth-child(5).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.tinker .side-nav>ul>li:nth-child(5)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.tinker .side-nav>ul>li:nth-child(6).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.tinker .side-nav>ul>li:nth-child(6)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.tinker .side-nav>ul>li:nth-child(7).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.tinker .side-nav>ul>li:nth-child(7)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.tinker .side-nav>ul>li:nth-child(8).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.tinker .side-nav>ul>li:nth-child(8)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.tinker .side-nav>ul>li:nth-child(9).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.tinker .side-nav>ul>li:nth-child(9)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.tinker .side-nav>ul>li:nth-child(10).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.tinker .side-nav>ul>li:nth-child(10)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.tinker .side-nav>ul>li:nth-child(11).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.tinker .side-nav>ul>li:nth-child(11)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.tinker .side-nav>ul>li:nth-child(12).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.tinker .side-nav>ul>li:nth-child(12)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.tinker .side-nav>ul>li:nth-child(13).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.tinker .side-nav>ul>li:nth-child(13)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.tinker .side-nav>ul>li:nth-child(14).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.tinker .side-nav>ul>li:nth-child(14)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.tinker .side-nav>ul>li:nth-child(15).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.tinker .side-nav>ul>li:nth-child(15)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.tinker .side-nav>ul>li:nth-child(16).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.tinker .side-nav>ul>li:nth-child(16)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.tinker .side-nav>ul>li:nth-child(17).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.tinker .side-nav>ul>li:nth-child(17)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.tinker .side-nav>ul>li:nth-child(18).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.tinker .side-nav>ul>li:nth-child(18)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.tinker .side-nav>ul>li:nth-child(19).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.tinker .side-nav>ul>li:nth-child(19)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.tinker .side-nav>ul>li:nth-child(20).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.tinker .side-nav>ul>li:nth-child(20)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.tinker .side-nav>ul>li:nth-child(21).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.tinker .side-nav>ul>li:nth-child(21)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.tinker .side-nav>ul>li:nth-child(22).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.tinker .side-nav>ul>li:nth-child(22)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.tinker .side-nav>ul>li:nth-child(23).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.tinker .side-nav>ul>li:nth-child(23)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.tinker .side-nav>ul>li:nth-child(24).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.tinker .side-nav>ul>li:nth-child(24)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.tinker .side-nav>ul>li:nth-child(25).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.tinker .side-nav>ul>li:nth-child(25)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.tinker .side-nav>ul>li:nth-child(26).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.tinker .side-nav>ul>li:nth-child(26)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.tinker .side-nav>ul>li:nth-child(27).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.tinker .side-nav>ul>li:nth-child(27)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.tinker .side-nav>ul>li:nth-child(28).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.tinker .side-nav>ul>li:nth-child(28)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.tinker .side-nav>ul>li:nth-child(29).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.tinker .side-nav>ul>li:nth-child(29)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.tinker .side-nav>ul>li:nth-child(30).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.tinker .side-nav>ul>li:nth-child(30)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.tinker .side-nav>ul>li:nth-child(31).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.tinker .side-nav>ul>li:nth-child(31)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.tinker .side-nav>ul>li:nth-child(32).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.tinker .side-nav>ul>li:nth-child(32)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.tinker .side-nav>ul>li:nth-child(33).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.tinker .side-nav>ul>li:nth-child(33)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.tinker .side-nav>ul>li:nth-child(34).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.tinker .side-nav>ul>li:nth-child(34)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.tinker .side-nav>ul>li:nth-child(35).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.tinker .side-nav>ul>li:nth-child(35)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.tinker .side-nav>ul>li:nth-child(36).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.tinker .side-nav>ul>li:nth-child(36)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.tinker .side-nav>ul>li:nth-child(37).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.tinker .side-nav>ul>li:nth-child(37)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.tinker .side-nav>ul>li:nth-child(38).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.tinker .side-nav>ul>li:nth-child(38)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.tinker .side-nav>ul>li:nth-child(39).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.tinker .side-nav>ul>li:nth-child(39)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.tinker .side-nav>ul>li:nth-child(40).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.tinker .side-nav>ul>li:nth-child(40)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.tinker .side-nav>ul>li:nth-child(41).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.tinker .side-nav>ul>li:nth-child(41)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.tinker .side-nav>ul>li:nth-child(42).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.tinker .side-nav>ul>li:nth-child(42)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.tinker .side-nav>ul>li:nth-child(43).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.tinker .side-nav>ul>li:nth-child(43)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.tinker .side-nav>ul>li:nth-child(44).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.tinker .side-nav>ul>li:nth-child(44)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.tinker .side-nav>ul>li:nth-child(45).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.tinker .side-nav>ul>li:nth-child(45)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.tinker .side-nav>ul>li:nth-child(46).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.tinker .side-nav>ul>li:nth-child(46)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.tinker .side-nav>ul>li:nth-child(47).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.tinker .side-nav>ul>li:nth-child(47)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.tinker .side-nav>ul>li:nth-child(48).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.tinker .side-nav>ul>li:nth-child(48)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.tinker .side-nav>ul>li:nth-child(49).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.tinker .side-nav>ul>li:nth-child(49)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.tinker .side-nav>ul>li:nth-child(50).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.tinker .side-nav>ul>li:nth-child(50)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.tinker .side-nav>ul ul li:nth-child(1)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.tinker .side-nav>ul ul li:nth-child(2)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.tinker .side-nav>ul ul li:nth-child(3)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.tinker .side-nav>ul ul li:nth-child(4)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.tinker .side-nav>ul ul li:nth-child(5)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.tinker .side-nav>ul ul li:nth-child(6)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.tinker .side-nav>ul ul li:nth-child(7)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.tinker .side-nav>ul ul li:nth-child(8)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.tinker .side-nav>ul ul li:nth-child(9)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.tinker .side-nav>ul ul li:nth-child(10)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.tinker .side-nav>ul ul li:nth-child(11)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.tinker .side-nav>ul ul li:nth-child(12)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.tinker .side-nav>ul ul li:nth-child(13)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.tinker .side-nav>ul ul li:nth-child(14)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.tinker .side-nav>ul ul li:nth-child(15)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.tinker .side-nav>ul ul li:nth-child(16)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.tinker .side-nav>ul ul li:nth-child(17)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.tinker .side-nav>ul ul li:nth-child(18)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.tinker .side-nav>ul ul li:nth-child(19)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.tinker .side-nav>ul ul li:nth-child(20)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.tinker .side-nav>ul ul li:nth-child(21)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.tinker .side-nav>ul ul li:nth-child(22)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.tinker .side-nav>ul ul li:nth-child(23)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.tinker .side-nav>ul ul li:nth-child(24)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.tinker .side-nav>ul ul li:nth-child(25)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.tinker .side-nav>ul ul li:nth-child(26)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.tinker .side-nav>ul ul li:nth-child(27)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.tinker .side-nav>ul ul li:nth-child(28)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.tinker .side-nav>ul ul li:nth-child(29)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.tinker .side-nav>ul ul li:nth-child(30)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.tinker .side-nav>ul ul li:nth-child(31)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.tinker .side-nav>ul ul li:nth-child(32)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.tinker .side-nav>ul ul li:nth-child(33)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.tinker .side-nav>ul ul li:nth-child(34)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.tinker .side-nav>ul ul li:nth-child(35)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.tinker .side-nav>ul ul li:nth-child(36)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.tinker .side-nav>ul ul li:nth-child(37)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.tinker .side-nav>ul ul li:nth-child(38)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.tinker .side-nav>ul ul li:nth-child(39)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.tinker .side-nav>ul ul li:nth-child(40)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.tinker .side-nav>ul ul li:nth-child(41)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.tinker .side-nav>ul ul li:nth-child(42)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.tinker .side-nav>ul ul li:nth-child(43)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.tinker .side-nav>ul ul li:nth-child(44)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.tinker .side-nav>ul ul li:nth-child(45)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.tinker .side-nav>ul ul li:nth-child(46)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.tinker .side-nav>ul ul li:nth-child(47)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.tinker .side-nav>ul ul li:nth-child(48)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.tinker .side-nav>ul ul li:nth-child(49)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.tinker .side-nav>ul ul li:nth-child(50)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.tinker .side-nav>ul>li>.side-menu.side-menu--active{background-color:rgb(var(--color-theme-1) / 1);z-index:10}.tinker .side-nav>ul>li>.side-menu.side-menu--active:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:#ffffff14;border-radius:.5rem;position:absolute;border-bottom:3px solid rgb(0 0 0 / 10%)}.tinker .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon{z-index:10}.tinker .side-nav>ul>li>.side-menu.side-menu--active .side-menu__title{font-weight:500;z-index:10}.tinker .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open){background-color:rgb(var(--color-theme-1) / 60%)}.tinker .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open):before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:#ffffff0a;border-radius:.75rem;position:absolute;z-index:-1}.tinker .side-nav>ul>li>ul{background-color:#ffffff0a;border-radius:.75rem;position:relative}.tinker .side-nav>ul>li>ul:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:rgb(var(--color-theme-1) / 60%);border-radius:.75rem;position:absolute;z-index:-1}.tinker .side-nav>ul>li>ul:not(.side-menu__sub-open){display:none}.tinker .side-nav>ul>li>ul>li>.side-menu.side-menu--active .side-menu__title{font-weight:500}.tinker .side-nav>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#ffffffb3}.tinker .side-nav>ul>li>ul>li>ul{background-color:#ffffff0a;border-radius:.75rem;position:relative}.tinker .side-nav>ul>li>ul>li>ul:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:rgb(var(--color-theme-1) / 60%);border-radius:.75rem;position:absolute;z-index:-1}.tinker .side-nav>ul>li>ul>li>ul:not(.side-menu__sub-open){display:none}.tinker .side-nav>ul>li>ul>li>ul>li>.side-menu{padding-left:2.5rem}.tinker .side-nav>ul>li>ul>li>ul>li>.side-menu.side-menu--active .side-menu__title{font-weight:500}.tinker .side-nav>ul>li>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#ffffffb3}.dark .tinker .side-nav .side-nav__divider{background-color:#ffffff12}.dark .tinker .side-nav>ul>li>.side-menu.side-menu--active{background-color:transparent}.dark .tinker .side-nav>ul>li>.side-menu.side-menu--active:before{border-color:#0000001a;background-color:rgb(var(--color-darkmode-700) / 1)}.dark .tinker .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon{color:#cbd5e1}.dark .tinker .side-nav>ul>li>.side-menu.side-menu--active .side-menu__title{color:#cbd5e1}.dark .tinker .side-nav>ul>li>.side-menu:not(.side-menu--active) .side-menu__icon{color:#94a3b8}.dark .tinker .side-nav>ul>li>.side-menu:not(.side-menu--active) .side-menu__title{color:#94a3b8}.dark .tinker .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open):before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .tinker .side-nav>ul>li>ul{background-color:transparent}.dark .tinker .side-nav>ul>li>ul:before{background-color:rgb(var(--color-darkmode-900) / 30%)}.dark .tinker .side-nav>ul>li>ul>li>.side-menu.side-menu--active{color:#cbd5e1}.dark .tinker .side-nav>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#94a3b8}.dark .tinker .side-nav>ul>li>ul>li>ul{background-color:transparent}.dark .tinker .side-nav>ul>li>ul>li>ul:before{background-color:rgb(var(--color-darkmode-900) / 30%)}.dark .tinker .side-nav>ul>li>ul>li>ul>li>.side-menu.side-menu--active{color:#cbd5e1}.dark .tinker .side-nav>ul>li>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#94a3b8}.tinker .top-nav{animation:.4s intro-top-menu ease-in-out .2s;animation-fill-mode:forwards}.tinker .top-nav .top-menu{min-height:55px;height:auto;display:flex;align-items:center;padding:.75rem 1.25rem;margin-right:.25rem;color:#fff;position:relative;border-radius:9999px}@media (min-width: 1280px){.tinker .top-nav .top-menu{border-radius:.75rem}}.tinker .top-nav .top-menu .top-menu__icon{z-index:10}.tinker .top-nav .top-menu .top-menu__title{width:100%;min-width:0;margin-left:.75rem;display:flex;align-items:flex-start;z-index:10}.tinker .top-nav .top-menu .top-menu__title .top-menu__title-text{flex:1 1 auto;min-width:0;white-space:normal;line-height:1.25rem;word-break:break-word;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.tinker .top-nav .top-menu .top-menu__title .top-menu__sub-icon{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s;flex-shrink:0;width:1rem;height:1rem;display:none}@media (min-width: 1280px){.tinker .top-nav .top-menu .top-menu__title .top-menu__sub-icon{display:block}}.tinker .top-nav>ul>li:nth-child(1)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.tinker .top-nav>ul>li:nth-child(2)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.tinker .top-nav>ul>li:nth-child(3)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.tinker .top-nav>ul>li:nth-child(4)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.tinker .top-nav>ul>li:nth-child(5)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.tinker .top-nav>ul>li:nth-child(6)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.tinker .top-nav>ul>li:nth-child(7)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.tinker .top-nav>ul>li:nth-child(8)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.tinker .top-nav>ul>li:nth-child(9)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.tinker .top-nav>ul>li:nth-child(10)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.tinker .top-nav>ul>li:nth-child(11)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.tinker .top-nav>ul>li:nth-child(12)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.tinker .top-nav>ul>li:nth-child(13)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.tinker .top-nav>ul>li:nth-child(14)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.tinker .top-nav>ul>li:nth-child(15)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.tinker .top-nav>ul>li:nth-child(16)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.tinker .top-nav>ul>li:nth-child(17)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.tinker .top-nav>ul>li:nth-child(18)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.tinker .top-nav>ul>li:nth-child(19)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.tinker .top-nav>ul>li:nth-child(20)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.tinker .top-nav>ul>li:nth-child(21)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.tinker .top-nav>ul>li:nth-child(22)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.tinker .top-nav>ul>li:nth-child(23)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.tinker .top-nav>ul>li:nth-child(24)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.tinker .top-nav>ul>li:nth-child(25)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.tinker .top-nav>ul>li:nth-child(26)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.tinker .top-nav>ul>li:nth-child(27)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.tinker .top-nav>ul>li:nth-child(28)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.tinker .top-nav>ul>li:nth-child(29)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.tinker .top-nav>ul>li:nth-child(30)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.tinker .top-nav>ul>li:nth-child(31)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.tinker .top-nav>ul>li:nth-child(32)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.tinker .top-nav>ul>li:nth-child(33)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.tinker .top-nav>ul>li:nth-child(34)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.tinker .top-nav>ul>li:nth-child(35)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.tinker .top-nav>ul>li:nth-child(36)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.tinker .top-nav>ul>li:nth-child(37)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.tinker .top-nav>ul>li:nth-child(38)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.tinker .top-nav>ul>li:nth-child(39)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.tinker .top-nav>ul>li:nth-child(40)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.tinker .top-nav>ul>li:nth-child(41)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.tinker .top-nav>ul>li:nth-child(42)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.tinker .top-nav>ul>li:nth-child(43)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.tinker .top-nav>ul>li:nth-child(44)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.tinker .top-nav>ul>li:nth-child(45)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.tinker .top-nav>ul>li:nth-child(46)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.tinker .top-nav>ul>li:nth-child(47)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.tinker .top-nav>ul>li:nth-child(48)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.tinker .top-nav>ul>li:nth-child(49)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.tinker .top-nav>ul>li:nth-child(50)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.tinker .top-nav>ul>li:hover{position:relative}.tinker .top-nav>ul>li:hover>.top-menu{background:rgb(var(--color-theme-1) / 60%)}.tinker .top-nav>ul>li:hover>.top-menu:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:#ffffff0a;border-radius:9999px;position:absolute;z-index:-1}@media (min-width: 1280px){.tinker .top-nav>ul>li:hover>.top-menu:before{background-color:#ffffff1a;border-radius:.75rem}}.tinker .top-nav>ul>li:hover>.top-menu .top-menu__title .top-menu__sub-icon{transform:rotate(180deg)}.tinker .top-nav>ul>li:hover>ul{display:block}.tinker .top-nav>ul>li>.top-menu{margin-top:3px;max-width:12rem}.tinker .top-nav>ul>li>.top-menu.top-menu--active{background-color:#f1f5f9}@media (min-width: 1280px){.tinker .top-nav>ul>li>.top-menu.top-menu--active{background-color:rgb(var(--color-theme-1) / 1)}}.tinker .top-nav>ul>li>.top-menu.top-menu--active:before{content:"";display:none;top:0;left:0;right:0;bottom:0;background-color:#ffffff14;border-radius:.75rem;position:absolute;border-bottom:3px solid rgb(0 0 0 / 10%)}@media (min-width: 1280px){.tinker .top-nav>ul>li>.top-menu.top-menu--active:before{display:block}}.tinker .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:rgb(var(--color-theme-1) / 1)}@media (min-width: 1280px){.tinker .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:#fff}}.tinker .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{font-weight:500;color:#1e293b}@media (min-width: 1280px){.tinker .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{color:#fff}}.tinker .top-nav>ul>li>.top-menu .top-menu__icon{margin-top:-3px}.tinker .top-nav>ul>li>.top-menu .top-menu__title{margin-top:-3px}.tinker .top-nav>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:.75rem}.tinker .top-nav>ul>li>ul{box-shadow:0 3px 20px #0000000b;background-color:rgb(var(--color-theme-1) / 1);display:none;width:14rem;position:absolute;border-radius:.375rem;z-index:20;padding-left:0;padding-right:0;margin-top:.25rem}.tinker .top-nav>ul>li>ul:before{content:"";display:block;position:absolute;width:100%;height:100%;background-color:#ffffff0a;top:0;left:0;right:0;bottom:0;border-radius:.375rem;z-index:-1}.tinker .top-nav>ul>li>ul:after{content:"";width:100%;height:.25rem;position:absolute;top:0;left:0;margin-top:-.25rem;cursor:pointer}.tinker .top-nav>ul>li>ul>li{padding-left:1.25rem;padding-right:1.25rem;position:relative}.tinker .top-nav>ul>li>ul>li:hover{position:relative}.tinker .top-nav>ul>li>ul>li:hover>.top-menu .top-menu__title .top-menu__sub-icon{transform:rotate(-90deg)}.tinker .top-nav>ul>li>ul>li:hover>ul{display:block}.tinker .top-nav>ul>li>ul>li>.top-menu{padding-left:0;padding-right:0;margin-right:0}.tinker .top-nav>ul>li>ul>li>.top-menu .top-menu__title{width:100%}.tinker .top-nav>ul>li>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:auto}.tinker .top-nav>ul>li>ul>li>ul{box-shadow:0 3px 20px #0000000b;left:100%;background-color:rgb(var(--color-theme-1) / 1);display:none;border-radius:.375rem;margin-top:0;margin-left:0;top:0;width:14rem;position:absolute;z-index:20;padding-left:0;padding-right:0}.tinker .top-nav>ul>li>ul>li>ul:before{content:"";display:block;position:absolute;width:100%;height:100%;background-color:#ffffff0a;top:0;left:0;right:0;bottom:0;border-radius:.375rem;z-index:-1}.tinker .top-nav>ul>li>ul>li>ul>li{padding-left:1.25rem;padding-right:1.25rem}.tinker .top-nav>ul>li>ul>li>ul>li>.top-menu{padding-left:0;padding-right:0;margin-right:0}.tinker .top-nav>ul>li>ul>li>ul>li>.top-menu .top-menu__title{width:100%}.tinker .top-nav>ul>li>ul>li>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:auto}.dark .tinker .top-nav .top-menu .top-menu__icon,.dark .tinker .top-nav .top-menu .top-menu__title{color:#94a3b8}.dark .tinker .top-nav>ul>li:hover>.top-menu:not(.top-menu--active){background-color:transparent}.dark .tinker .top-nav>ul>li:hover>.top-menu:not(.top-menu--active):before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .tinker .top-nav>ul>li>.top-menu.top-menu--active{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .tinker .top-nav>ul>li>.top-menu.top-menu--active:before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .tinker .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:#fff}.dark .tinker .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{color:#fff}.dark .tinker .top-nav>ul>li>ul{background-color:rgb(var(--color-darkmode-600) / 1);box-shadow:0 3px 7px #0000001c}.dark .tinker .top-nav>ul>li>ul:before{background-color:#0000001a}.dark .tinker .top-nav>ul>li>ul>li>ul{background-color:rgb(var(--color-darkmode-600) / 1);box-shadow:0 3px 7px #0000001c}.dark .tinker .top-nav>ul>li>ul>li>ul:before{background-color:#0000001a}.enigma .side-nav.side-nav--simple .side-menu .side-menu__title,.enigma .side-nav.side-nav--simple .side-menu .side-menu__title .side-menu__sub-icon{display:none}.enigma .side-nav .side-nav__divider{width:100%;height:1px;background-color:#0000000f;z-index:10;position:relative}.enigma .side-nav .side-menu{height:50px;display:flex;align-items:center;padding-left:1.25rem;color:#475569;margin-bottom:.25rem;position:relative;border-radius:.75rem}.enigma .side-nav .side-menu .side-menu__title{display:none;align-items:center;width:100%;margin-left:.75rem}@media (min-width: 1280px){.enigma .side-nav .side-menu .side-menu__title{display:flex}}.enigma .side-nav .side-menu .side-menu__title .side-menu__sub-icon{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s;margin-left:auto;margin-right:1.25rem;display:none}@media (min-width: 1280px){.enigma .side-nav .side-menu .side-menu__title .side-menu__sub-icon{display:block}}.enigma .side-nav .side-menu .side-menu__title .side-menu__sub-icon svg{width:1rem;height:1rem}.enigma .side-nav>ul>li:nth-child(1).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.enigma .side-nav>ul>li:nth-child(1)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.enigma .side-nav>ul>li:nth-child(2).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.enigma .side-nav>ul>li:nth-child(2)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.enigma .side-nav>ul>li:nth-child(3).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.enigma .side-nav>ul>li:nth-child(3)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.enigma .side-nav>ul>li:nth-child(4).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.enigma .side-nav>ul>li:nth-child(4)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.enigma .side-nav>ul>li:nth-child(5).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.enigma .side-nav>ul>li:nth-child(5)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.enigma .side-nav>ul>li:nth-child(6).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.enigma .side-nav>ul>li:nth-child(6)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.enigma .side-nav>ul>li:nth-child(7).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.enigma .side-nav>ul>li:nth-child(7)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.enigma .side-nav>ul>li:nth-child(8).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.enigma .side-nav>ul>li:nth-child(8)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.enigma .side-nav>ul>li:nth-child(9).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.enigma .side-nav>ul>li:nth-child(9)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.enigma .side-nav>ul>li:nth-child(10).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.enigma .side-nav>ul>li:nth-child(10)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.enigma .side-nav>ul>li:nth-child(11).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.enigma .side-nav>ul>li:nth-child(11)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.enigma .side-nav>ul>li:nth-child(12).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.enigma .side-nav>ul>li:nth-child(12)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.enigma .side-nav>ul>li:nth-child(13).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.enigma .side-nav>ul>li:nth-child(13)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.enigma .side-nav>ul>li:nth-child(14).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.enigma .side-nav>ul>li:nth-child(14)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.enigma .side-nav>ul>li:nth-child(15).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.enigma .side-nav>ul>li:nth-child(15)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.enigma .side-nav>ul>li:nth-child(16).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.enigma .side-nav>ul>li:nth-child(16)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.enigma .side-nav>ul>li:nth-child(17).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.enigma .side-nav>ul>li:nth-child(17)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.enigma .side-nav>ul>li:nth-child(18).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.enigma .side-nav>ul>li:nth-child(18)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.enigma .side-nav>ul>li:nth-child(19).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.enigma .side-nav>ul>li:nth-child(19)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.enigma .side-nav>ul>li:nth-child(20).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.enigma .side-nav>ul>li:nth-child(20)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.enigma .side-nav>ul>li:nth-child(21).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.enigma .side-nav>ul>li:nth-child(21)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.enigma .side-nav>ul>li:nth-child(22).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.enigma .side-nav>ul>li:nth-child(22)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.enigma .side-nav>ul>li:nth-child(23).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.enigma .side-nav>ul>li:nth-child(23)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.enigma .side-nav>ul>li:nth-child(24).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.enigma .side-nav>ul>li:nth-child(24)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.enigma .side-nav>ul>li:nth-child(25).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.enigma .side-nav>ul>li:nth-child(25)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.enigma .side-nav>ul>li:nth-child(26).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.enigma .side-nav>ul>li:nth-child(26)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.enigma .side-nav>ul>li:nth-child(27).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.enigma .side-nav>ul>li:nth-child(27)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.enigma .side-nav>ul>li:nth-child(28).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.enigma .side-nav>ul>li:nth-child(28)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.enigma .side-nav>ul>li:nth-child(29).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.enigma .side-nav>ul>li:nth-child(29)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.enigma .side-nav>ul>li:nth-child(30).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.enigma .side-nav>ul>li:nth-child(30)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.enigma .side-nav>ul>li:nth-child(31).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.enigma .side-nav>ul>li:nth-child(31)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.enigma .side-nav>ul>li:nth-child(32).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.enigma .side-nav>ul>li:nth-child(32)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.enigma .side-nav>ul>li:nth-child(33).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.enigma .side-nav>ul>li:nth-child(33)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.enigma .side-nav>ul>li:nth-child(34).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.enigma .side-nav>ul>li:nth-child(34)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.enigma .side-nav>ul>li:nth-child(35).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.enigma .side-nav>ul>li:nth-child(35)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.enigma .side-nav>ul>li:nth-child(36).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.enigma .side-nav>ul>li:nth-child(36)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.enigma .side-nav>ul>li:nth-child(37).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.enigma .side-nav>ul>li:nth-child(37)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.enigma .side-nav>ul>li:nth-child(38).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.enigma .side-nav>ul>li:nth-child(38)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.enigma .side-nav>ul>li:nth-child(39).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.enigma .side-nav>ul>li:nth-child(39)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.enigma .side-nav>ul>li:nth-child(40).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.enigma .side-nav>ul>li:nth-child(40)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.enigma .side-nav>ul>li:nth-child(41).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.enigma .side-nav>ul>li:nth-child(41)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.enigma .side-nav>ul>li:nth-child(42).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.enigma .side-nav>ul>li:nth-child(42)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.enigma .side-nav>ul>li:nth-child(43).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.enigma .side-nav>ul>li:nth-child(43)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.enigma .side-nav>ul>li:nth-child(44).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.enigma .side-nav>ul>li:nth-child(44)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.enigma .side-nav>ul>li:nth-child(45).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.enigma .side-nav>ul>li:nth-child(45)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.enigma .side-nav>ul>li:nth-child(46).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.enigma .side-nav>ul>li:nth-child(46)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.enigma .side-nav>ul>li:nth-child(47).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.enigma .side-nav>ul>li:nth-child(47)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.enigma .side-nav>ul>li:nth-child(48).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.enigma .side-nav>ul>li:nth-child(48)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.enigma .side-nav>ul>li:nth-child(49).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.enigma .side-nav>ul>li:nth-child(49)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.enigma .side-nav>ul>li:nth-child(50).side-nav__divider{opacity:0;animation:.4s intro-divider-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.enigma .side-nav>ul>li:nth-child(50)>a:not(.side-menu--active){opacity:0;transform:translate(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.enigma .side-nav>ul ul li:nth-child(1)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.enigma .side-nav>ul ul li:nth-child(2)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.enigma .side-nav>ul ul li:nth-child(3)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.enigma .side-nav>ul ul li:nth-child(4)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.enigma .side-nav>ul ul li:nth-child(5)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.enigma .side-nav>ul ul li:nth-child(6)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.enigma .side-nav>ul ul li:nth-child(7)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.enigma .side-nav>ul ul li:nth-child(8)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.enigma .side-nav>ul ul li:nth-child(9)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.enigma .side-nav>ul ul li:nth-child(10)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.enigma .side-nav>ul ul li:nth-child(11)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.enigma .side-nav>ul ul li:nth-child(12)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.enigma .side-nav>ul ul li:nth-child(13)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.enigma .side-nav>ul ul li:nth-child(14)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.enigma .side-nav>ul ul li:nth-child(15)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.enigma .side-nav>ul ul li:nth-child(16)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.enigma .side-nav>ul ul li:nth-child(17)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.enigma .side-nav>ul ul li:nth-child(18)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.enigma .side-nav>ul ul li:nth-child(19)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.enigma .side-nav>ul ul li:nth-child(20)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.enigma .side-nav>ul ul li:nth-child(21)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.enigma .side-nav>ul ul li:nth-child(22)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.enigma .side-nav>ul ul li:nth-child(23)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.enigma .side-nav>ul ul li:nth-child(24)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.enigma .side-nav>ul ul li:nth-child(25)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.enigma .side-nav>ul ul li:nth-child(26)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.enigma .side-nav>ul ul li:nth-child(27)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.enigma .side-nav>ul ul li:nth-child(28)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.enigma .side-nav>ul ul li:nth-child(29)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.enigma .side-nav>ul ul li:nth-child(30)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.enigma .side-nav>ul ul li:nth-child(31)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.enigma .side-nav>ul ul li:nth-child(32)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.enigma .side-nav>ul ul li:nth-child(33)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.enigma .side-nav>ul ul li:nth-child(34)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.enigma .side-nav>ul ul li:nth-child(35)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.enigma .side-nav>ul ul li:nth-child(36)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.enigma .side-nav>ul ul li:nth-child(37)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.enigma .side-nav>ul ul li:nth-child(38)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.enigma .side-nav>ul ul li:nth-child(39)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.enigma .side-nav>ul ul li:nth-child(40)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.enigma .side-nav>ul ul li:nth-child(41)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.enigma .side-nav>ul ul li:nth-child(42)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.enigma .side-nav>ul ul li:nth-child(43)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.enigma .side-nav>ul ul li:nth-child(44)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.enigma .side-nav>ul ul li:nth-child(45)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.enigma .side-nav>ul ul li:nth-child(46)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.enigma .side-nav>ul ul li:nth-child(47)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.enigma .side-nav>ul ul li:nth-child(48)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.enigma .side-nav>ul ul li:nth-child(49)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.enigma .side-nav>ul ul li:nth-child(50)>a{opacity:0;transform:translate(50px);animation:.2s intro-submenu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.enigma .side-nav>ul>li>.side-menu.side-menu--active{background-color:#f1f5f9;z-index:10}.enigma .side-nav>ul>li>.side-menu.side-menu--active:before{content:"";display:block;top:0;left:0;right:0;bottom:0;border-radius:.75rem;position:absolute;border-bottom:3px solid rgb(0 0 0 / 8%)}.enigma .side-nav>ul>li>.side-menu.side-menu--active:after{content:"";width:20px;height:80px;background-repeat:no-repeat;background-size:cover;position:absolute;top:0;bottom:0;right:0;margin-top:auto;margin-bottom:auto;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23f1f5f8'/%3E%3C/svg%3E");margin-right:-47px;opacity:0;animation:.3s ease-in-out 1s active-side-menu-chevron;animation-fill-mode:forwards}.enigma .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon{color:rgb(var(--color-theme-1) / 1);z-index:10}.enigma .side-nav>ul>li>.side-menu.side-menu--active .side-menu__title{color:rgb(var(--color-theme-1) / 1);font-weight:500;z-index:10}.enigma .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open){background-color:#f1f5f9}.enigma .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open):before{content:"";display:block;top:0;left:0;right:0;bottom:0;border-radius:.75rem;position:absolute;z-index:-1;border-bottom:3px solid rgb(0 0 0 / 8%)}.enigma .side-nav>ul>li>ul{background-color:#ffffff0a;border-radius:.75rem;position:relative}.enigma .side-nav>ul>li>ul:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:#ffffff4d;border-radius:.75rem;position:absolute;z-index:-1}.enigma .side-nav>ul>li>ul:not(.side-menu__sub-open){display:none}.enigma .side-nav>ul>li>ul>li>.side-menu.side-menu--active .side-menu__icon{color:#334155}.enigma .side-nav>ul>li>ul>li>.side-menu.side-menu--active .side-menu__title{color:#334155;font-weight:500}.enigma .side-nav>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#475569}.enigma .side-nav>ul>li>ul>li>ul{background-color:#ffffff0a;border-radius:.75rem;position:relative}.enigma .side-nav>ul>li>ul>li>ul:before{content:"";display:block;top:0;left:0;right:0;bottom:0;background-color:#ffffff4d;border-radius:.75rem;position:absolute;z-index:-1}.enigma .side-nav>ul>li>ul>li>ul:not(.side-menu__sub-open){display:none}.enigma .side-nav>ul>li>ul>li>ul>li>.side-menu{padding-left:2.5rem}.enigma .side-nav>ul>li>ul>li>ul>li>.side-menu.side-menu--active .side-menu__icon{color:#334155}.enigma .side-nav>ul>li>ul>li>ul>li>.side-menu.side-menu--active .side-menu__title{color:#334155;font-weight:500}.enigma .side-nav>ul>li>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#475569}@keyframes intro-divider-animation{to{opacity:1}}@keyframes intro-menu-animation{to{opacity:1;transform:translate(0)}}@keyframes intro-submenu-animation{to{opacity:1;transform:translate(0)}}@keyframes active-side-menu-chevron{to{opacity:1;margin-right:-27px}}.dark .enigma .side-nav .side-nav__divider{background-color:#ffffff12}.dark .enigma .side-nav .side-menu{color:#cbd5e1}.dark .enigma .side-nav>ul>li>.side-menu.side-menu--active{background-color:transparent}.dark .enigma .side-nav>ul>li>.side-menu.side-menu--active:before{border-color:#00000014;background-color:rgb(var(--color-darkmode-700) / 1)}.dark .enigma .side-nav>ul>li>.side-menu.side-menu--active:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23232e45'/%3E%3C/svg%3E")}.dark .enigma .side-nav>ul>li>.side-menu.side-menu--active .side-menu__icon{color:#cbd5e1}.dark .enigma .side-nav>ul>li>.side-menu.side-menu--active .side-menu__title{color:#cbd5e1}.dark .enigma .side-nav>ul>li>.side-menu:not(.side-menu--active) .side-menu__icon{color:#94a3b8}.dark .enigma .side-nav>ul>li>.side-menu:not(.side-menu--active) .side-menu__title{color:#94a3b8}.dark .enigma .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open){background-color:transparent}.dark .enigma .side-nav>ul>li>.side-menu:hover:not(.side-menu--active):not(.side-menu--open):before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .enigma .side-nav>ul>li>ul{background-color:transparent}.dark .enigma .side-nav>ul>li>ul:before{background-color:rgb(var(--color-darkmode-900) / 30%)}.dark .enigma .side-nav>ul>li>ul>li>.side-menu.side-menu--active .side-menu__icon{color:#cbd5e1}.dark .enigma .side-nav>ul>li>ul>li>.side-menu.side-menu--active .side-menu__title{color:#cbd5e1}.dark .enigma .side-nav>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#94a3b8}.dark .enigma .side-nav>ul>li>ul>li>.side-menu:not(.side-menu--active) .side-menu__icon{color:#94a3b8}.dark .enigma .side-nav>ul>li>ul>li>ul{background-color:transparent}.dark .enigma .side-nav>ul>li>ul>li>ul:before{background-color:rgb(var(--color-darkmode-900) / 30%)}.dark .enigma .side-nav>ul>li>ul>li>ul>li>.side-menu.side-menu--active .side-menu__icon{color:#cbd5e1}.dark .enigma .side-nav>ul>li>ul>li>ul>li>.side-menu.side-menu--active .side-menu__title{color:#cbd5e1}.dark .enigma .side-nav>ul>li>ul>li>ul>li>.side-menu:not(.side-menu--active){color:#94a3b8}.dark .enigma .side-nav>ul>li>ul>li>ul>li>.side-menu:not(.side-menu--active) .side-menu__icon{color:#94a3b8}.enigma .top-nav{animation:.4s intro-top-menu ease-in-out .2s;animation-fill-mode:forwards}.enigma .top-nav .top-menu{min-height:55px;height:auto;display:flex;align-items:center;padding:.75rem 1.25rem;margin-right:.25rem;color:#475569;position:relative;border-radius:9999px}@media (min-width: 1280px){.enigma .top-nav .top-menu{border-radius:.75rem}}.enigma .top-nav .top-menu .top-menu__icon{z-index:10}.enigma .top-nav .top-menu .top-menu__title{min-width:0;margin-left:.75rem;display:flex;align-items:flex-start;z-index:10}.enigma .top-nav .top-menu .top-menu__title .top-menu__title-text{flex:1 1 auto;min-width:0;white-space:normal;line-height:1.25rem;word-break:break-word;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.enigma .top-nav .top-menu .top-menu__title .top-menu__sub-icon{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:.1s;flex-shrink:0;width:1rem;height:1rem;display:none}@media (min-width: 1280px){.enigma .top-nav .top-menu .top-menu__title .top-menu__sub-icon{display:block}}.enigma .top-nav>ul>li:nth-child(1)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}.enigma .top-nav>ul>li:nth-child(2)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}.enigma .top-nav>ul>li:nth-child(3)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}.enigma .top-nav>ul>li:nth-child(4)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}.enigma .top-nav>ul>li:nth-child(5)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}.enigma .top-nav>ul>li:nth-child(6)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}.enigma .top-nav>ul>li:nth-child(7)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}.enigma .top-nav>ul>li:nth-child(8)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}.enigma .top-nav>ul>li:nth-child(9)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}.enigma .top-nav>ul>li:nth-child(10)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}.enigma .top-nav>ul>li:nth-child(11)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}.enigma .top-nav>ul>li:nth-child(12)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}.enigma .top-nav>ul>li:nth-child(13)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}.enigma .top-nav>ul>li:nth-child(14)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}.enigma .top-nav>ul>li:nth-child(15)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}.enigma .top-nav>ul>li:nth-child(16)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}.enigma .top-nav>ul>li:nth-child(17)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}.enigma .top-nav>ul>li:nth-child(18)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}.enigma .top-nav>ul>li:nth-child(19)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}.enigma .top-nav>ul>li:nth-child(20)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}.enigma .top-nav>ul>li:nth-child(21)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}.enigma .top-nav>ul>li:nth-child(22)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}.enigma .top-nav>ul>li:nth-child(23)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}.enigma .top-nav>ul>li:nth-child(24)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}.enigma .top-nav>ul>li:nth-child(25)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}.enigma .top-nav>ul>li:nth-child(26)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}.enigma .top-nav>ul>li:nth-child(27)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}.enigma .top-nav>ul>li:nth-child(28)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}.enigma .top-nav>ul>li:nth-child(29)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}.enigma .top-nav>ul>li:nth-child(30)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}.enigma .top-nav>ul>li:nth-child(31)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}.enigma .top-nav>ul>li:nth-child(32)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}.enigma .top-nav>ul>li:nth-child(33)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}.enigma .top-nav>ul>li:nth-child(34)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}.enigma .top-nav>ul>li:nth-child(35)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}.enigma .top-nav>ul>li:nth-child(36)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}.enigma .top-nav>ul>li:nth-child(37)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}.enigma .top-nav>ul>li:nth-child(38)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}.enigma .top-nav>ul>li:nth-child(39)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}.enigma .top-nav>ul>li:nth-child(40)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}.enigma .top-nav>ul>li:nth-child(41)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}.enigma .top-nav>ul>li:nth-child(42)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}.enigma .top-nav>ul>li:nth-child(43)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}.enigma .top-nav>ul>li:nth-child(44)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}.enigma .top-nav>ul>li:nth-child(45)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}.enigma .top-nav>ul>li:nth-child(46)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}.enigma .top-nav>ul>li:nth-child(47)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}.enigma .top-nav>ul>li:nth-child(48)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}.enigma .top-nav>ul>li:nth-child(49)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}.enigma .top-nav>ul>li:nth-child(50)>a:not(.top-menu--active){opacity:0;transform:translateY(50px);animation:.4s intro-menu-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}.enigma .top-nav>ul>li:hover>.top-menu:not(.top-menu--active){background-color:#f1f5f9}.enigma .top-nav>ul>li:hover>.top-menu:not(.top-menu--active):before{content:"";display:block;top:0;left:0;right:0;bottom:0;border-radius:9999px;position:absolute;z-index:-1;border-bottom:3px solid rgb(0 0 0 / 8%)}@media (min-width: 1280px){.enigma .top-nav>ul>li:hover>.top-menu:not(.top-menu--active):before{border-radius:.75rem}}.enigma .top-nav>ul>li:hover>.top-menu .top-menu__title .top-menu__sub-icon{transform:rotate(180deg)}.enigma .top-nav>ul>li:hover>ul{display:block}.enigma .top-nav>ul>li>.top-menu{margin-top:3px;max-width:12rem}.enigma .top-nav>ul>li>.top-menu.top-menu--active{color:rgb(var(--color-theme-1) / 1);background-color:#f1f5f9}.enigma .top-nav>ul>li>.top-menu.top-menu--active:before{content:"";display:none;top:0;left:0;right:0;bottom:0;border-radius:.75rem;position:absolute;border-bottom:3px solid rgb(0 0 0 / 8%)}@media (min-width: 1280px){.enigma .top-nav>ul>li>.top-menu.top-menu--active:before{display:block}}.enigma .top-nav>ul>li>.top-menu.top-menu--active:after{content:"";width:20px;height:80px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23f1f5f8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:cover;position:absolute;left:0;right:0;bottom:0;margin-left:auto;margin-right:auto;transform:rotate(90deg);display:none;animation:.3s ease-in-out 1s active-top-menu-chevron;animation-fill-mode:forwards;margin-bottom:-74px;opacity:0}@media (min-width: 1280px){.enigma .top-nav>ul>li>.top-menu.top-menu--active:after{display:block}}.enigma .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:rgb(var(--color-theme-1) / 1)}.enigma .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{font-weight:500;color:#1e293b}@media (min-width: 1280px){.enigma .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{color:rgb(var(--color-theme-1) / 1)}}.enigma .top-nav>ul>li>.top-menu .top-menu__icon{margin-top:-3px}.enigma .top-nav>ul>li>.top-menu .top-menu__title{margin-top:-3px}.enigma .top-nav>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:.75rem}.enigma .top-nav>ul>li>ul{box-shadow:0 3px 20px #00000014;background-color:#f1f5f9;display:none;width:14rem;position:absolute;border-radius:.375rem;z-index:20;padding-left:0;padding-right:0;margin-top:.25rem}.enigma .top-nav>ul>li>ul:before{content:"";display:block;position:absolute;width:100%;height:100%;background-color:#ffffff0a;top:0;left:0;right:0;bottom:0;border-radius:.375rem;z-index:-1}.enigma .top-nav>ul>li>ul:after{content:"";width:100%;height:.25rem;position:absolute;top:0;left:0;margin-top:-.25rem;cursor:pointer}.enigma .top-nav>ul>li>ul>li{padding-left:1.25rem;padding-right:1.25rem;position:relative}.enigma .top-nav>ul>li>ul>li:hover{position:relative}.enigma .top-nav>ul>li>ul>li:hover>.top-menu .top-menu__title .top-menu__sub-icon{transform:rotate(-90deg)}.enigma .top-nav>ul>li>ul>li:hover>ul{display:block}.enigma .top-nav>ul>li>ul>li>.top-menu{padding-left:0;padding-right:0;margin-right:0}.enigma .top-nav>ul>li>ul>li>.top-menu .top-menu__title{width:100%}.enigma .top-nav>ul>li>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:auto}.enigma .top-nav>ul>li>ul>li>ul{box-shadow:0 3px 20px #00000014;left:100%;background-color:#f1f5f9;display:none;width:14rem;position:absolute;border-radius:.375rem;margin-top:0;margin-left:0;top:0;z-index:20;padding-left:0;padding-right:0}.enigma .top-nav>ul>li>ul>li>ul:before{content:"";display:block;position:absolute;width:100%;height:100%;background-color:#ffffff0a;top:0;left:0;right:0;bottom:0;border-radius:.375rem;z-index:-1}.enigma .top-nav>ul>li>ul>li>ul:after{content:"";width:100%;height:.25rem;position:absolute;top:0;left:0;margin-top:-.25rem;cursor:pointer}.enigma .top-nav>ul>li>ul>li>ul>li{padding-left:1.25rem;padding-right:1.25rem}.enigma .top-nav>ul>li>ul>li>ul>li>.top-menu{padding-left:0;padding-right:0;margin-right:0}.enigma .top-nav>ul>li>ul>li>ul>li>.top-menu .top-menu__title{width:100%}.enigma .top-nav>ul>li>ul>li>ul>li>.top-menu .top-menu__title .top-menu__sub-icon{margin-left:auto}@keyframes active-top-menu-chevron{to{opacity:1;margin-bottom:-56px}}@keyframes intro-top-menu{to{opacity:1;transform:translateY(0)}}@keyframes intro-menu-animation{to{opacity:1;transform:translateY(0)}}.dark .enigma .top-nav .top-menu .top-menu__icon,.dark .enigma .top-nav .top-menu .top-menu__title{color:#94a3b8}.dark .enigma .top-nav>ul>li:hover>.top-menu:not(.top-menu--active){background-color:transparent}.dark .enigma .top-nav>ul>li:hover>.top-menu:not(.top-menu--active):before{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .enigma .top-nav>ul>li>.top-menu.top-menu--active{background-color:rgb(var(--color-darkmode-700) / 1)}.dark .enigma .top-nav>ul>li>.top-menu.top-menu--active:before{border-color:#00000014;background-color:rgb(var(--color-darkmode-700) / 1)}.dark .enigma .top-nav>ul>li>.top-menu.top-menu--active:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' viewBox='0 0 20 122.1'%3E%3Cpath data-name='Union 1' d='M16.038 122H16v-2.213a95.805 95.805 0 00-2.886-20.735 94.894 94.894 0 00-7.783-20.434A39.039 39.039 0 010 61.051a39.035 39.035 0 015.331-17.567 94.9 94.9 0 007.783-20.435A95.746 95.746 0 0016 2.314V0h4v122h-3.961v.1l-.001-.1z' fill='%23232e45'/%3E%3C/svg%3E")}.dark .enigma .top-nav>ul>li>.top-menu.top-menu--active .top-menu__icon{color:#fff}.dark .enigma .top-nav>ul>li>.top-menu.top-menu--active .top-menu__title{color:#fff}.dark .enigma .top-nav>ul>li>ul{box-shadow:0 3px 7px #0000001c;background-color:rgb(var(--color-darkmode-600) / 1)}.dark .enigma .top-nav>ul>li>ul:before{background-color:#0000001a}.dark .enigma .top-nav>ul>li>ul>li>ul{box-shadow:0 3px 7px #0000001c;background-color:rgb(var(--color-darkmode-600) / 1)}.dark .enigma .top-nav>ul>li>ul>li>ul:before{background-color:#0000001a}/*! + * Toastify js 1.12.0 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */.toastify{padding:12px 20px;color:#fff;display:inline-block;box-shadow:0 3px 6px -1px #0000001f,0 10px 36px -4px #4d60e84d;background:linear-gradient(135deg,#73a5ff,#5477f5);position:fixed;opacity:0;transition:all .4s cubic-bezier(.215,.61,.355,1);border-radius:2px;cursor:pointer;text-decoration:none;max-width:calc(50% - 20px);z-index:2147483647}.toastify.on{opacity:1}.toast-close{background:transparent;border:0;color:#fff;cursor:pointer;font-family:inherit;font-size:1em;opacity:.4;padding:0 5px}.toastify-right{right:15px}.toastify-left{left:15px}.toastify-top{top:-150px}.toastify-bottom{bottom:-150px}.toastify-rounded{border-radius:25px}.toastify-avatar{width:1.5em;height:1.5em;margin:-7px 5px;border-radius:2px}.toastify-center{margin-left:auto;margin-right:auto;left:0;right:0;max-width:fit-content;max-width:-moz-fit-content}@media only screen and (max-width: 360px){.toastify-right,.toastify-left{margin-left:auto;margin-right:auto;left:0;right:0;max-width:-moz-fit-content;max-width:fit-content}}.toastify{background:none;box-shadow:none;padding:0;color:#334155;max-width:calc(100% - 30px)}@media (min-width: 768px){.toastify{max-width:none}}.toastify .toast-close{color:transparent;position:absolute;opacity:1;top:0;bottom:0;right:0;padding-right:.75rem;display:flex;align-items:center}.toastify .toast-close:before{content:"×";display:block;color:#64748b;font-size:1.875rem;margin-top:-.375rem;font-weight:300}.tree-row-enter-active,.tree-row-leave-active{transition:opacity .18s ease,transform .18s ease}.tree-row-enter-from,.tree-row-leave-to{opacity:0;transform:translateY(-6px)}.tree-row-move{transition:transform .18s ease}@font-face{font-family:Roboto;font-style:italic;font-weight:100;font-display:swap;src:local("Roboto Thin Italic"),local("Roboto-ThinItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz0dL-vwnYh2eg.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:100;font-display:swap;src:local("Roboto Thin Italic"),local("Roboto-ThinItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzQdL-vwnYh2eg.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:100;font-display:swap;src:local("Roboto Thin Italic"),local("Roboto-ThinItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzwdL-vwnYh2eg.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:100;font-display:swap;src:local("Roboto Thin Italic"),local("Roboto-ThinItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzMdL-vwnYh2eg.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:100;font-display:swap;src:local("Roboto Thin Italic"),local("Roboto-ThinItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz8dL-vwnYh2eg.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:100;font-display:swap;src:local("Roboto Thin Italic"),local("Roboto-ThinItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz4dL-vwnYh2eg.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:100;font-display:swap;src:local("Roboto Thin Italic"),local("Roboto-ThinItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzAdL-vwnYg.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc3CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc-CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc2CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc5CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc1CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc0CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc6CsTYl4BO.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:local("Roboto Italic"),local("Roboto-Italic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xFIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:local("Roboto Italic"),local("Roboto-Italic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xMIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:local("Roboto Italic"),local("Roboto-Italic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xEIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:local("Roboto Italic"),local("Roboto-Italic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xLIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:local("Roboto Italic"),local("Roboto-Italic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xHIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:local("Roboto Italic"),local("Roboto-Italic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xGIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:local("Roboto Italic"),local("Roboto-Italic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xIIzIXKMny.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc3CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc-CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc2CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc5CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc1CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc0CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc6CsTYl4BO.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:italic;font-weight:700;font-display:swap;src:local("Roboto Bold Italic"),local("Roboto-BoldItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic3CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:700;font-display:swap;src:local("Roboto Bold Italic"),local("Roboto-BoldItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic-CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:700;font-display:swap;src:local("Roboto Bold Italic"),local("Roboto-BoldItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic2CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:700;font-display:swap;src:local("Roboto Bold Italic"),local("Roboto-BoldItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic5CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:700;font-display:swap;src:local("Roboto Bold Italic"),local("Roboto-BoldItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic1CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:700;font-display:swap;src:local("Roboto Bold Italic"),local("Roboto-BoldItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic0CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:700;font-display:swap;src:local("Roboto Bold Italic"),local("Roboto-BoldItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic6CsTYl4BO.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:italic;font-weight:900;font-display:swap;src:local("Roboto Black Italic"),local("Roboto-BlackItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc3CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:900;font-display:swap;src:local("Roboto Black Italic"),local("Roboto-BlackItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc-CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:900;font-display:swap;src:local("Roboto Black Italic"),local("Roboto-BlackItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc2CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:900;font-display:swap;src:local("Roboto Black Italic"),local("Roboto-BlackItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc5CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:900;font-display:swap;src:local("Roboto Black Italic"),local("Roboto-BlackItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc1CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:900;font-display:swap;src:local("Roboto Black Italic"),local("Roboto-BlackItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc0CsTYl4BOQ3o.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:900;font-display:swap;src:local("Roboto Black Italic"),local("Roboto-BlackItalic"),url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc6CsTYl4BO.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:100;font-display:swap;src:local("Roboto Thin"),local("Roboto-Thin"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxFIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:100;font-display:swap;src:local("Roboto Thin"),local("Roboto-Thin"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxMIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:100;font-display:swap;src:local("Roboto Thin"),local("Roboto-Thin"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxEIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:100;font-display:swap;src:local("Roboto Thin"),local("Roboto-Thin"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxLIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:100;font-display:swap;src:local("Roboto Thin"),local("Roboto-Thin"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxHIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:100;font-display:swap;src:local("Roboto Thin"),local("Roboto-Thin"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxGIzIXKMnyrYk.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:100;font-display:swap;src:local("Roboto Thin"),local("Roboto-Thin"),url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxIIzIXKMny.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:local("Roboto Light"),local("Roboto-Light"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:local("Roboto Light"),local("Roboto-Light"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:local("Roboto Light"),local("Roboto-Light"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:local("Roboto Light"),local("Roboto-Light"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:local("Roboto Light"),local("Roboto-Light"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:local("Roboto Light"),local("Roboto-Light"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:local("Roboto Light"),local("Roboto-Light"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:900;font-display:swap;src:local("Roboto Black"),local("Roboto-Black"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCRc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:900;font-display:swap;src:local("Roboto Black"),local("Roboto-Black"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfABc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:900;font-display:swap;src:local("Roboto Black"),local("Roboto-Black"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCBc4AMP6lbBP.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:900;font-display:swap;src:local("Roboto Black"),local("Roboto-Black"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBxc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:900;font-display:swap;src:local("Roboto Black"),local("Roboto-Black"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCxc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:900;font-display:swap;src:local("Roboto Black"),local("Roboto-Black"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfChc4AMP6lbBP.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:900;font-display:swap;src:local("Roboto Black"),local("Roboto-Black"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBBc4AMP6lQ.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html.dark body{color:#cbd5e1}html.dark body *,html.dark body :before,html.dark body :after{border-color:#ffffff0d}html body{letter-spacing:.025em;font-size:.875rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Roboto;color:#475569;line-height:1.25rem}input[type=number].no-spinner::-webkit-outer-spin-button,input[type=number].no-spinner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number].no-spinner{-moz-appearance:textfield}*>.intro-x:nth-child(1){z-index:49;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}*>.-intro-x:nth-child(1){z-index:49;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}*>.intro-y:nth-child(1){z-index:49;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}*>.-intro-y:nth-child(1){z-index:49;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.1s}*>.intro-x:nth-child(2){z-index:48;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}*>.-intro-x:nth-child(2){z-index:48;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}*>.intro-y:nth-child(2){z-index:48;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}*>.-intro-y:nth-child(2){z-index:48;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.2s}*>.intro-x:nth-child(3){z-index:47;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}*>.-intro-x:nth-child(3){z-index:47;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}*>.intro-y:nth-child(3){z-index:47;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}*>.-intro-y:nth-child(3){z-index:47;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(3 * .1s)}*>.intro-x:nth-child(4){z-index:46;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}*>.-intro-x:nth-child(4){z-index:46;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}*>.intro-y:nth-child(4){z-index:46;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}*>.-intro-y:nth-child(4){z-index:46;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.4s}*>.intro-x:nth-child(5){z-index:45;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}*>.-intro-x:nth-child(5){z-index:45;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}*>.intro-y:nth-child(5){z-index:45;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}*>.-intro-y:nth-child(5){z-index:45;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.5s}*>.intro-x:nth-child(6){z-index:44;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}*>.-intro-x:nth-child(6){z-index:44;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}*>.intro-y:nth-child(6){z-index:44;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}*>.-intro-y:nth-child(6){z-index:44;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(6 * .1s)}*>.intro-x:nth-child(7){z-index:43;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}*>.-intro-x:nth-child(7){z-index:43;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}*>.intro-y:nth-child(7){z-index:43;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}*>.-intro-y:nth-child(7){z-index:43;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(7 * .1s)}*>.intro-x:nth-child(8){z-index:42;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}*>.-intro-x:nth-child(8){z-index:42;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}*>.intro-y:nth-child(8){z-index:42;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}*>.-intro-y:nth-child(8){z-index:42;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.8s}*>.intro-x:nth-child(9){z-index:41;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}*>.-intro-x:nth-child(9){z-index:41;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}*>.intro-y:nth-child(9){z-index:41;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}*>.-intro-y:nth-child(9){z-index:41;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:.9s}*>.intro-x:nth-child(10){z-index:40;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}*>.-intro-x:nth-child(10){z-index:40;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}*>.intro-y:nth-child(10){z-index:40;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}*>.-intro-y:nth-child(10){z-index:40;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1s}*>.intro-x:nth-child(11){z-index:39;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}*>.-intro-x:nth-child(11){z-index:39;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}*>.intro-y:nth-child(11){z-index:39;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}*>.-intro-y:nth-child(11){z-index:39;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.1s}*>.intro-x:nth-child(12){z-index:38;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}*>.-intro-x:nth-child(12){z-index:38;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}*>.intro-y:nth-child(12){z-index:38;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}*>.-intro-y:nth-child(12){z-index:38;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(12 * .1s)}*>.intro-x:nth-child(13){z-index:37;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}*>.-intro-x:nth-child(13){z-index:37;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}*>.intro-y:nth-child(13){z-index:37;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}*>.-intro-y:nth-child(13){z-index:37;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.3s}*>.intro-x:nth-child(14){z-index:36;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}*>.-intro-x:nth-child(14){z-index:36;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}*>.intro-y:nth-child(14){z-index:36;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}*>.-intro-y:nth-child(14){z-index:36;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(14 * .1s)}*>.intro-x:nth-child(15){z-index:35;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}*>.-intro-x:nth-child(15){z-index:35;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}*>.intro-y:nth-child(15){z-index:35;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}*>.-intro-y:nth-child(15){z-index:35;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.5s}*>.intro-x:nth-child(16){z-index:34;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}*>.-intro-x:nth-child(16){z-index:34;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}*>.intro-y:nth-child(16){z-index:34;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}*>.-intro-y:nth-child(16){z-index:34;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.6s}*>.intro-x:nth-child(17){z-index:33;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}*>.-intro-x:nth-child(17){z-index:33;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}*>.intro-y:nth-child(17){z-index:33;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}*>.-intro-y:nth-child(17){z-index:33;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(17 * .1s)}*>.intro-x:nth-child(18){z-index:32;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}*>.-intro-x:nth-child(18){z-index:32;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}*>.intro-y:nth-child(18){z-index:32;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}*>.-intro-y:nth-child(18){z-index:32;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:1.8s}*>.intro-x:nth-child(19){z-index:31;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}*>.-intro-x:nth-child(19){z-index:31;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}*>.intro-y:nth-child(19){z-index:31;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}*>.-intro-y:nth-child(19){z-index:31;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(19 * .1s)}*>.intro-x:nth-child(20){z-index:30;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}*>.-intro-x:nth-child(20){z-index:30;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}*>.intro-y:nth-child(20){z-index:30;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}*>.-intro-y:nth-child(20){z-index:30;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2s}*>.intro-x:nth-child(21){z-index:29;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}*>.-intro-x:nth-child(21){z-index:29;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}*>.intro-y:nth-child(21){z-index:29;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}*>.-intro-y:nth-child(21){z-index:29;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.1s}*>.intro-x:nth-child(22){z-index:28;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}*>.-intro-x:nth-child(22){z-index:28;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}*>.intro-y:nth-child(22){z-index:28;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}*>.-intro-y:nth-child(22){z-index:28;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.2s}*>.intro-x:nth-child(23){z-index:27;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}*>.-intro-x:nth-child(23){z-index:27;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}*>.intro-y:nth-child(23){z-index:27;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}*>.-intro-y:nth-child(23){z-index:27;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(23 * .1s)}*>.intro-x:nth-child(24){z-index:26;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}*>.-intro-x:nth-child(24){z-index:26;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}*>.intro-y:nth-child(24){z-index:26;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}*>.-intro-y:nth-child(24){z-index:26;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(24 * .1s)}*>.intro-x:nth-child(25){z-index:25;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}*>.-intro-x:nth-child(25){z-index:25;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}*>.intro-y:nth-child(25){z-index:25;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}*>.-intro-y:nth-child(25){z-index:25;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.5s}*>.intro-x:nth-child(26){z-index:24;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}*>.-intro-x:nth-child(26){z-index:24;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}*>.intro-y:nth-child(26){z-index:24;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}*>.-intro-y:nth-child(26){z-index:24;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.6s}*>.intro-x:nth-child(27){z-index:23;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}*>.-intro-x:nth-child(27){z-index:23;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}*>.intro-y:nth-child(27){z-index:23;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}*>.-intro-y:nth-child(27){z-index:23;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:2.7s}*>.intro-x:nth-child(28){z-index:22;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}*>.-intro-x:nth-child(28){z-index:22;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}*>.intro-y:nth-child(28){z-index:22;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}*>.-intro-y:nth-child(28){z-index:22;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(28 * .1s)}*>.intro-x:nth-child(29){z-index:21;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}*>.-intro-x:nth-child(29){z-index:21;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}*>.intro-y:nth-child(29){z-index:21;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}*>.-intro-y:nth-child(29){z-index:21;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(29 * .1s)}*>.intro-x:nth-child(30){z-index:20;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}*>.-intro-x:nth-child(30){z-index:20;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}*>.intro-y:nth-child(30){z-index:20;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}*>.-intro-y:nth-child(30){z-index:20;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3s}*>.intro-x:nth-child(31){z-index:19;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}*>.-intro-x:nth-child(31){z-index:19;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}*>.intro-y:nth-child(31){z-index:19;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}*>.-intro-y:nth-child(31){z-index:19;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.1s}*>.intro-x:nth-child(32){z-index:18;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}*>.-intro-x:nth-child(32){z-index:18;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}*>.intro-y:nth-child(32){z-index:18;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}*>.-intro-y:nth-child(32){z-index:18;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.2s}*>.intro-x:nth-child(33){z-index:17;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}*>.-intro-x:nth-child(33){z-index:17;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}*>.intro-y:nth-child(33){z-index:17;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}*>.-intro-y:nth-child(33){z-index:17;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(33 * .1s)}*>.intro-x:nth-child(34){z-index:16;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}*>.-intro-x:nth-child(34){z-index:16;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}*>.intro-y:nth-child(34){z-index:16;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}*>.-intro-y:nth-child(34){z-index:16;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(34 * .1s)}*>.intro-x:nth-child(35){z-index:15;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}*>.-intro-x:nth-child(35){z-index:15;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}*>.intro-y:nth-child(35){z-index:15;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}*>.-intro-y:nth-child(35){z-index:15;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.5s}*>.intro-x:nth-child(36){z-index:14;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}*>.-intro-x:nth-child(36){z-index:14;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}*>.intro-y:nth-child(36){z-index:14;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}*>.-intro-y:nth-child(36){z-index:14;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.6s}*>.intro-x:nth-child(37){z-index:13;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}*>.-intro-x:nth-child(37){z-index:13;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}*>.intro-y:nth-child(37){z-index:13;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}*>.-intro-y:nth-child(37){z-index:13;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:3.7s}*>.intro-x:nth-child(38){z-index:12;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}*>.-intro-x:nth-child(38){z-index:12;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}*>.intro-y:nth-child(38){z-index:12;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}*>.-intro-y:nth-child(38){z-index:12;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(38 * .1s)}*>.intro-x:nth-child(39){z-index:11;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}*>.-intro-x:nth-child(39){z-index:11;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}*>.intro-y:nth-child(39){z-index:11;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}*>.-intro-y:nth-child(39){z-index:11;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(39 * .1s)}*>.intro-x:nth-child(40){z-index:10;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}*>.-intro-x:nth-child(40){z-index:10;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}*>.intro-y:nth-child(40){z-index:10;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}*>.-intro-y:nth-child(40){z-index:10;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4s}*>.intro-x:nth-child(41){z-index:9;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}*>.-intro-x:nth-child(41){z-index:9;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}*>.intro-y:nth-child(41){z-index:9;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}*>.-intro-y:nth-child(41){z-index:9;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(41 * .1s)}*>.intro-x:nth-child(42){z-index:8;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}*>.-intro-x:nth-child(42){z-index:8;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}*>.intro-y:nth-child(42){z-index:8;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}*>.-intro-y:nth-child(42){z-index:8;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.2s}*>.intro-x:nth-child(43){z-index:7;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}*>.-intro-x:nth-child(43){z-index:7;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}*>.intro-y:nth-child(43){z-index:7;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}*>.-intro-y:nth-child(43){z-index:7;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.3s}*>.intro-x:nth-child(44){z-index:6;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}*>.-intro-x:nth-child(44){z-index:6;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}*>.intro-y:nth-child(44){z-index:6;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}*>.-intro-y:nth-child(44){z-index:6;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.4s}*>.intro-x:nth-child(45){z-index:5;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}*>.-intro-x:nth-child(45){z-index:5;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}*>.intro-y:nth-child(45){z-index:5;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}*>.-intro-y:nth-child(45){z-index:5;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.5s}*>.intro-x:nth-child(46){z-index:4;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}*>.-intro-x:nth-child(46){z-index:4;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}*>.intro-y:nth-child(46){z-index:4;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}*>.-intro-y:nth-child(46){z-index:4;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(46 * .1s)}*>.intro-x:nth-child(47){z-index:3;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}*>.-intro-x:nth-child(47){z-index:3;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}*>.intro-y:nth-child(47){z-index:3;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}*>.-intro-y:nth-child(47){z-index:3;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.7s}*>.intro-x:nth-child(48){z-index:2;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}*>.-intro-x:nth-child(48){z-index:2;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}*>.intro-y:nth-child(48){z-index:2;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}*>.-intro-y:nth-child(48){z-index:2;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:calc(48 * .1s)}*>.intro-x:nth-child(49){z-index:1;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}*>.-intro-x:nth-child(49){z-index:1;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}*>.intro-y:nth-child(49){z-index:1;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}*>.-intro-y:nth-child(49){z-index:1;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:4.9s}*>.intro-x:nth-child(50){z-index:0;opacity:0;position:relative;transform:translate(50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}*>.-intro-x:nth-child(50){z-index:0;opacity:0;position:relative;transform:translate(-50px);animation:.4s intro-x-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}*>.intro-y:nth-child(50){z-index:0;opacity:0;position:relative;transform:translateY(50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}*>.-intro-y:nth-child(50){z-index:0;opacity:0;position:relative;transform:translateY(-50px);animation:.4s intro-y-animation ease-in-out .33333s;animation-fill-mode:forwards;animation-delay:5s}@keyframes intro-x-animation{to{opacity:1;transform:translate(0)}}@keyframes intro-y-animation{to{opacity:1;transform:translateY(0)}}.loading-container{position:relative;z-index:0;padding:.5rem;border-radius:.5rem}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:150;background-position:center;background-repeat:no-repeat;opacity:.5}.spinner{position:absolute;top:25%;left:50%;--tw-translate-x: -50%;--tw-translate-y: -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));z-index:151}.loading-overlay-gray{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.loading-line{width:100%;height:2px;background-color:#3498db;position:relative;overflow:hidden}.loading-line:after{content:"";display:block;position:absolute;width:100%;height:100%;background:linear-gradient(to right,#fff0,#fffc,#fff0);animation:loading-animation 1.5s linear infinite}@keyframes loading-animation{0%{left:-100%}to{left:100%}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}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-feature-settings:normal;font-variation-settings:normal;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-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([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}dialog{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}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[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}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[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}[multiple],[size]:where(select: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}[type=checkbox],[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}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[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)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[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){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[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){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[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){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root{--color-theme-1: 30 64 175;--color-theme-2: 30 58 138;--color-primary: 30 58 138;--color-secondary: 226 232 240;--color-success: 132 204 22;--color-info: 6 182 212;--color-warning: 250 204 21;--color-pending: 249 115 22;--color-danger: 220 38 38;--color-light: 241 245 249;--color-dark: 30 41 59}.dark{--color-primary: 29 78 216;--color-darkmode-50: 87 103 132;--color-darkmode-100: 74 90 121;--color-darkmode-200: 65 81 114;--color-darkmode-300: 53 69 103;--color-darkmode-400: 48 61 93;--color-darkmode-500: 41 53 82;--color-darkmode-600: 40 51 78;--color-darkmode-700: 35 45 69;--color-darkmode-800: 27 37 59;--color-darkmode-900: 15 23 42}.theme-1{--color-theme-1: 6 95 70;--color-theme-2: 6 78 59;--color-primary: 6 78 59;--color-secondary: 226 232 240;--color-success: 5 150 105;--color-info: 6 182 212;--color-warning: 250 204 21;--color-pending: 245 158 11;--color-danger: 225 29 72;--color-light: 241 245 249;--color-dark: 30 41 59}.theme-1.dark{--color-primary: 6 95 70}.theme-2{--color-theme-1: 30 58 138;--color-theme-2: 23 37 84;--color-primary: 23 37 84;--color-secondary: 226 232 240;--color-success: 13 148 136;--color-info: 6 182 212;--color-warning: 245 158 11;--color-pending: 249 115 22;--color-danger: 185 28 28;--color-light: 241 245 249;--color-dark: 30 41 59}.theme-2.dark{--color-primary: 30 64 175}.theme-3{--color-theme-1: 21 94 117;--color-theme-2: 22 78 99;--color-primary: 22 78 99;--color-secondary: 226 232 240;--color-success: 13 148 136;--color-info: 6 182 212;--color-warning: 245 158 11;--color-pending: 217 119 6;--color-danger: 185 28 28;--color-light: 241 245 249;--color-dark: 30 41 59}.theme-3.dark{--color-primary: 21 94 117}.theme-4{--color-theme-1: 55 48 163;--color-theme-2: 49 46 129;--color-primary: 49 46 129;--color-secondary: 226 232 240;--color-success: 5 150 105;--color-info: 6 182 212;--color-warning: 234 179 8;--color-pending: 234 88 12;--color-danger: 185 28 28;--color-light: 241 245 249;--color-dark: 30 41 59}.theme-4.dark{--color-primary: 67 56 202}*,: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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%;margin-right:auto;margin-left:auto}@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}}.\!box{box-shadow:0 3px 5px #0000000b!important;background-color:#fff!important;border:1px solid #e2e8f0!important;border-radius:.6rem!important;position:relative!important}.box{box-shadow:0 3px 5px #0000000b;background-color:#fff;border:1px solid #e2e8f0;border-radius:.6rem;position:relative}.dark .box{background-color:rgb(var(--color-darkmode-600) / 1);border-color:rgb(var(--color-darkmode-500) / 1)}.dark .\!box{background-color:rgb(var(--color-darkmode-600) / 1)!important;border-color:rgb(var(--color-darkmode-500) / 1)!important}.dark .box--stacked:before{background-color:rgb(var(--color-darkmode-600) / 70%);border-color:#64748b99}.image-fit{position:relative}.image-fit>img{position:absolute;-o-object-fit:cover;object-fit:cover;top:0;width:100%;height:100%}@keyframes type-animation{50%{opacity:1}}.zoom-in{transition-property:transform,box-shadow;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);cursor:pointer}.zoom-in:hover{transform:scale(1.05);box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-\[100\%\]{bottom:100%}.left-0{left:0}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[100\%\]{left:100%}.left-\[50\%\]{left:50%}.right-0{right:0}.right-\[100\%\]{right:100%}.right-auto{right:auto}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.5rem}.top-\[100\%\]{top:100%}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[51\]{z-index:51}.z-\[60\]{z-index:60}.z-\[9999\]{z-index:9999}.col-span-1{grid-column:span 1 / span 1}.col-span-11{grid-column:span 11 / span 11}.col-span-12{grid-column:span 12 / span 12}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-5{grid-column:span 5 / span 5}.col-span-6{grid-column:span 6 / span 6}.col-span-7{grid-column:span 7 / span 7}.col-span-8{grid-column:span 8 / span 8}.-m-3{margin:-.75rem}.m-auto{margin:auto}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-auto{margin-top:auto;margin-bottom:auto}.-mb-px{margin-bottom:-1px}.-ml-\[100\%\]{margin-left:-100%}.-ml-\[60px\]{margin-left:-60px}.-mr-\[100\%\]{margin-right:-100%}.-mt-16{margin-top:-4rem}.-mt-2{margin-top:-.5rem}.-mt-4{margin-top:-1rem}.-mt-\[3px\]{margin-top:-3px}.-mt-\[7px\]{margin-top:-7px}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.ml-0{margin-left:0}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-20{margin-right:5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-auto{margin-right:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-9{margin-top:2.25rem}.mt-\[2\.2rem\]{margin-top:2.2rem}.mt-\[3px\]{margin-top:3px}.mt-\[4\.7rem\]{margin-top:4.7rem}.mt-px{margin-top:1px}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-24{height:6rem}.h-28{height:7rem}.h-3{height:.75rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[200\%\]{height:200%}.h-\[24px\]{height:24px}.h-\[28px\]{height:28px}.h-\[38px\]{height:38px}.h-\[50px\]{height:50px}.h-\[58px\]{height:58px}.h-\[67px\]{height:67px}.h-\[70px\]{height:70px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:0px}.max-h-60{max-height:15rem}.max-h-80{max-height:20rem}.max-h-\[2000px\]{max-height:2000px}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.min-h-\[150px\]{min-height:150px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[72px\]{min-height:72px}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[100px\]{width:100px}.w-\[15\%\]{width:15%}.w-\[270px\]{width:270px}.w-\[28px\]{width:28px}.w-\[38px\]{width:38px}.w-\[450px\]{width:450px}.w-\[80px\]{width:80px}.w-\[90\%\]{width:90%}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[200px\]{min-width:200px}.min-w-full{min-width:100%}.max-w-5xl{max-width:64rem}.max-w-\[8rem\]{max-width:8rem}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.translate-x-\[-50\%\]{--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-\[50px\]{--tw-translate-x: 50px;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-0{--tw-translate-y: 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-y-1{--tw-translate-y: .25rem;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-\[-50\%\]{--tw-translate-y: -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-y-\[35px\]{--tw-translate-y: 35px;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-\[50px\]{--tw-translate-y: 50px;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-90{--tw-rotate: -90deg;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-12{--tw-rotate: 12deg;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))}.scale-105{--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))}.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))}.animate-\[0\.4s_ease-in-out_0\.1s_intro-divider\]{animation:.4s ease-in-out .1s intro-divider}.animate-\[0\.4s_ease-in-out_0\.1s_intro-menu\]{animation:.4s ease-in-out .1s intro-menu}.animate-\[0\.4s_ease-in-out_0\.2s_intro-top-menu\]{animation:.4s ease-in-out .2s intro-top-menu}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-zoom-in{cursor:zoom-in}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.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))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.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-end{justify-items:end}.gap-0{gap:0px}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.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-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-3\.5{row-gap:.875rem}.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-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-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-slate-200\/70>:not([hidden])~:not([hidden]){border-color:#e2e8f0b3}.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}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[1\.3rem\]{border-radius:1.3rem}.rounded-\[30px\]{border-radius:30px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-xl{border-radius:.75rem}.rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[\#0077b5\]{--tw-border-opacity: 1;border-color:rgb(0 119 181 / var(--tw-border-opacity))}.border-\[\#3b5998\]{--tw-border-opacity: 1;border-color:rgb(59 89 152 / var(--tw-border-opacity))}.border-\[\#4ab3f4\]{--tw-border-opacity: 1;border-color:rgb(74 179 244 / var(--tw-border-opacity))}.border-\[\#517fa4\]{--tw-border-opacity: 1;border-color:rgb(81 127 164 / var(--tw-border-opacity))}.border-danger{--tw-border-opacity: 1;border-color:rgb(var(--color-danger) / var(--tw-border-opacity))}.border-dark{--tw-border-opacity: 1;border-color:rgb(var(--color-dark) / var(--tw-border-opacity))}.border-pending{--tw-border-opacity: 1;border-color:rgb(var(--color-pending) / var(--tw-border-opacity))}.border-primary{--tw-border-opacity: 1;border-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.border-primary\/20{border-color:rgb(var(--color-primary) / .2)}.border-secondary{--tw-border-opacity: 1;border-color:rgb(var(--color-secondary) / var(--tw-border-opacity))}.border-secondary\/70{border-color:rgb(var(--color-secondary) / .7)}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity))}.border-slate-200\/60{border-color:#e2e8f099}.border-slate-200\/70{border-color:#e2e8f0b3}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity))}.border-slate-300\/80{border-color:#cbd5e1cc}.border-slate-500{--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity))}.border-success{--tw-border-opacity: 1;border-color:rgb(var(--color-success) / var(--tw-border-opacity))}.border-success\/30{border-color:rgb(var(--color-success) / .3)}.border-theme-1\/60{border-color:rgb(var(--color-theme-1) / .6)}.border-transparent{border-color:transparent}.border-warning{--tw-border-opacity: 1;border-color:rgb(var(--color-warning) / var(--tw-border-opacity))}.border-warning\/30{border-color:rgb(var(--color-warning) / .3)}.border-white\/90{border-color:#ffffffe6}.border-white\/\[0\.08\]{border-color:#ffffff14}.border-b-primary{--tw-border-opacity: 1;border-bottom-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.border-b-transparent{border-bottom-color:transparent}.border-opacity-5{--tw-border-opacity: .05}.bg-\[\#0077b5\]{--tw-bg-opacity: 1;background-color:rgb(0 119 181 / var(--tw-bg-opacity))}.bg-\[\#3b5998\]{--tw-bg-opacity: 1;background-color:rgb(59 89 152 / var(--tw-bg-opacity))}.bg-\[\#4ab3f4\]{--tw-bg-opacity: 1;background-color:rgb(74 179 244 / var(--tw-bg-opacity))}.bg-\[\#517fa4\]{--tw-bg-opacity: 1;background-color:rgb(81 127 164 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-danger{--tw-bg-opacity: 1;background-color:rgb(var(--color-danger) / var(--tw-bg-opacity))}.bg-dark{--tw-bg-opacity: 1;background-color:rgb(var(--color-dark) / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-pending{--tw-bg-opacity: 1;background-color:rgb(var(--color-pending) / var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(var(--color-primary) / var(--tw-bg-opacity))}.bg-primary\/10{background-color:rgb(var(--color-primary) / .1)}.bg-primary\/5{background-color:rgb(var(--color-primary) / .05)}.bg-primary\/80{background-color:rgb(var(--color-primary) / .8)}.bg-secondary\/70{background-color:rgb(var(--color-secondary) / .7)}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.bg-slate-100\/80{background-color:#f1f5f9cc}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.bg-slate-200\/60{background-color:#e2e8f099}.bg-slate-200\/80{background-color:#e2e8f0cc}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.bg-slate-50\/70{background-color:#f8fafcb3}.bg-slate-50\/80{background-color:#f8fafccc}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}.bg-success{--tw-bg-opacity: 1;background-color:rgb(var(--color-success) / var(--tw-bg-opacity))}.bg-success\/15{background-color:rgb(var(--color-success) / .15)}.bg-success\/20{background-color:rgb(var(--color-success) / .2)}.bg-success\/5{background-color:rgb(var(--color-success) / .05)}.bg-theme-1{--tw-bg-opacity: 1;background-color:rgb(var(--color-theme-1) / var(--tw-bg-opacity))}.bg-theme-1\/90{background-color:rgb(var(--color-theme-1) / .9)}.bg-theme-2{--tw-bg-opacity: 1;background-color:rgb(var(--color-theme-2) / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-warning{--tw-bg-opacity: 1;background-color:rgb(var(--color-warning) / var(--tw-bg-opacity))}.bg-warning\/10{background-color:rgb(var(--color-warning) / .1)}.bg-warning\/15{background-color:rgb(var(--color-warning) / .15)}.bg-warning\/20{background-color:rgb(var(--color-warning) / .2)}.bg-warning\/5{background-color:rgb(var(--color-warning) / .05)}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/5{background-color:#ffffff0d}.bg-white\/\[0\.08\]{background-color:#ffffff14}.bg-opacity-10{--tw-bg-opacity: .1}.bg-opacity-20{--tw-bg-opacity: .2}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.from-theme-1{--tw-gradient-from: rgb(var(--color-theme-1) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--color-theme-1) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-theme-2{--tw-gradient-to: rgb(var(--color-theme-2) / 1) var(--tw-gradient-to-position)}.bg-contain{background-size:contain}.bg-center{background-position:center}.bg-no-repeat{background-repeat:no-repeat}.stroke-1{stroke-width:1}.stroke-1\.5{stroke-width:1.5}.stroke-\[1\]{stroke-width:1}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-px{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.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-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.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-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-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[3px\]{padding-top:3px;padding-bottom:3px}.pb-1{padding-bottom:.25rem}.pb-10{padding-bottom:2.5rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-0{padding-left:0}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-14{padding-right:3.5rem}.pr-16{padding-right:4rem}.pr-3{padding-right:.75rem}.pr-5{padding-right:1.25rem}.pr-8{padding-right:2rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.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-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-8{line-height:2rem}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-danger{--tw-text-opacity: 1;color:rgb(var(--color-danger) / var(--tw-text-opacity))}.text-dark{--tw-text-opacity: 1;color:rgb(var(--color-dark) / var(--tw-text-opacity))}.text-pending{--tw-text-opacity: 1;color:rgb(var(--color-pending) / var(--tw-text-opacity))}.text-primary{--tw-text-opacity: 1;color:rgb(var(--color-primary) / var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity))}.text-success{--tw-text-opacity: 1;color:rgb(var(--color-success) / var(--tw-text-opacity))}.text-warning{--tw-text-opacity: 1;color:rgb(var(--color-warning) / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/70{color:#ffffffb3}.text-white\/90{color:#ffffffe6}.text-opacity-70{--tw-text-opacity: .7}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-70{opacity:.7}.shadow-\[0px_3px_10px_\#00000017\]{--tw-shadow: 0px 3px 10px #00000017;--tw-shadow-colored: 0px 3px 10px 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-\[0px_3px_20px_\#0000000b\]{--tw-shadow: 0px 3px 20px #0000000b;--tw-shadow-colored: 0px 3px 20px 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-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px 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-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;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)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px 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-none{outline:2px solid transparent;outline-offset:2px}.outline-danger{outline-color:rgb(var(--color-danger) / 1)}.outline-dark{outline-color:rgb(var(--color-dark) / 1)}.outline-pending{outline-color:rgb(var(--color-pending) / 1)}.outline-primary{outline-color:rgb(var(--color-primary) / 1)}.outline-secondary{outline-color:rgb(var(--color-secondary) / 1)}.outline-success{outline-color:rgb(var(--color-success) / 1)}.outline-warning{outline-color:rgb(var(--color-warning) / 1)}.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,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;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-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;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-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-\[400ms\]{transition-duration:.4s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.before\:box:before{content:var(--tw-content);box-shadow:0 3px 5px #0000000b;background-color:#fff;border:1px solid #e2e8f0;border-radius:.6rem;position:relative}.dark .before\:box:before{content:var(--tw-content);background-color:rgb(var(--color-darkmode-600) / 1);border-color:rgb(var(--color-darkmode-500) / 1)}.placeholder\:text-slate-400\/90::-moz-placeholder{color:#94a3b8e6}.placeholder\:text-slate-400\/90::placeholder{color:#94a3b8e6}.before\:invisible:before{content:var(--tw-content);visibility:hidden}.before\:fixed:before{content:var(--tw-content);position:fixed}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-0:before{content:var(--tw-content);top:0;right:0;bottom:0;left:0}.before\:inset-x-0:before{content:var(--tw-content);left:0;right:0}.before\:inset-x-3:before{content:var(--tw-content);left:.75rem;right:.75rem}.before\:inset-y-0:before{content:var(--tw-content);top:0;bottom:0}.before\:left-0:before{content:var(--tw-content);left:0}.before\:top-0:before{content:var(--tw-content);top:0}.before\:z-10:before{content:var(--tw-content);z-index:10}.before\:z-\[-1\]:before{content:var(--tw-content);z-index:-1}.before\:mx-7:before{content:var(--tw-content);margin-left:1.75rem;margin-right:1.75rem}.before\:mx-auto:before{content:var(--tw-content);margin-left:auto;margin-right:auto}.before\:my-auto:before{content:var(--tw-content);margin-top:auto;margin-bottom:auto}.before\:-mb-\[16\%\]:before{content:var(--tw-content);margin-bottom:-16%}.before\:-ml-\[1\.125rem\]:before{content:var(--tw-content);margin-left:-1.125rem}.before\:-ml-\[13\%\]:before{content:var(--tw-content);margin-left:-13%}.before\:-mt-4:before{content:var(--tw-content);margin-top:-1rem}.before\:-mt-\[28\%\]:before{content:var(--tw-content);margin-top:-28%}.before\:mt-3:before{content:var(--tw-content);margin-top:.75rem}.before\:block:before{content:var(--tw-content);display:block}.before\:hidden:before{content:var(--tw-content);display:none}.before\:h-\[14px\]:before{content:var(--tw-content);height:14px}.before\:h-\[20px\]:before{content:var(--tw-content);height:20px}.before\:h-\[65px\]:before{content:var(--tw-content);height:65px}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:h-px:before{content:var(--tw-content);height:1px}.before\:h-screen:before{content:var(--tw-content);height:100vh}.before\:w-\[14px\]:before{content:var(--tw-content);width:14px}.before\:w-\[20px\]:before{content:var(--tw-content);width:20px}.before\:w-\[57\%\]:before{content:var(--tw-content);width:57%}.before\:w-\[95\%\]:before{content:var(--tw-content);width:95%}.before\:w-full:before{content:var(--tw-content);width:100%}.before\:translate-y-\[35px\]:before{content:var(--tw-content);--tw-translate-y: 35px;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))}.before\:rotate-\[-4\.5deg\]:before{content:var(--tw-content);--tw-rotate: -4.5deg;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))}.before\:rotate-\[-90deg\]:before{content:var(--tw-content);--tw-rotate: -90deg;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))}.before\:transform:before{content:var(--tw-content);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))}.before\:rounded-\[1\.3rem\]:before{content:var(--tw-content);border-radius:1.3rem}.before\:rounded-\[100\%\]:before{content:var(--tw-content);border-radius:100%}.before\:rounded-full:before{content:var(--tw-content);border-radius:9999px}.before\:rounded-md:before{content:var(--tw-content);border-radius:.375rem}.before\:rounded-xl:before{content:var(--tw-content);border-radius:.75rem}.before\:bg-black:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.before\:bg-black\/90:before{content:var(--tw-content);background-color:#000000e6}.before\:bg-black\/\[0\.15\]:before{content:var(--tw-content);background-color:#00000026}.before\:bg-primary\/20:before{content:var(--tw-content);background-color:rgb(var(--color-primary) / .2)}.before\:bg-primary\/30:before{content:var(--tw-content);background-color:rgb(var(--color-primary) / .3)}.before\:bg-slate-50:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.before\:bg-transparent:before{content:var(--tw-content);background-color:transparent}.before\:bg-white\/10:before{content:var(--tw-content);background-color:#ffffff1a}.before\:bg-chevron-black:before{content:var(--tw-content);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2300000095' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")}.before\:bg-chevron-white:before{content:var(--tw-content);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff95' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")}.before\:bg-gradient-to-b:before{content:var(--tw-content);background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.before\:from-theme-1:before{content:var(--tw-content);--tw-gradient-from: rgb(var(--color-theme-1) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--color-theme-1) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.before\:to-theme-2:before{content:var(--tw-content);--tw-gradient-to: rgb(var(--color-theme-2) / 1) var(--tw-gradient-to-position)}.before\:bg-\[length\:100\%\]:before{content:var(--tw-content);background-size:100%}.before\:pt-\[100\%\]:before{content:var(--tw-content);padding-top:100%}.before\:opacity-0:before{content:var(--tw-content);opacity:0}.before\:shadow-\[1px_1px_3px_rgba\(0\,0\,0\,0\.25\)\]:before{content:var(--tw-content);--tw-shadow: 1px 1px 3px rgba(0,0,0,.25);--tw-shadow-colored: 1px 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.before\:transition-\[margin-left\]:before{content:var(--tw-content);transition-property:margin-left;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:transition-opacity:before{content:var(--tw-content);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:duration-200:before{content:var(--tw-content);transition-duration:.2s}.before\:ease-in-out:before{content:var(--tw-content);transition-timing-function:cubic-bezier(.4,0,.2,1)}.before\:content-\[\'\'\]:before{--tw-content: "";content:var(--tw-content)}.before\:content-\[\\\'\\\'\]:before{--tw-content: \'\';content:var(--tw-content)}.after\:fixed:after{content:var(--tw-content);position:fixed}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);top:0;right:0;bottom:0;left:0}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-0:after{content:var(--tw-content);left:0}.after\:right-0:after{content:var(--tw-content);right:0}.after\:z-\[-1\]:after{content:var(--tw-content);z-index:-1}.after\:z-\[-2\]:after{content:var(--tw-content);z-index:-2}.after\:mx-3:after{content:var(--tw-content);margin-left:.75rem;margin-right:.75rem}.after\:mx-auto:after{content:var(--tw-content);margin-left:auto;margin-right:auto}.after\:-mb-\[13\%\]:after{content:var(--tw-content);margin-bottom:-13%}.after\:-ml-4:after{content:var(--tw-content);margin-left:-1rem}.after\:-ml-\[13\%\]:after{content:var(--tw-content);margin-left:-13%}.after\:-mt-4:after{content:var(--tw-content);margin-top:-1rem}.after\:-mt-\[20\%\]:after{content:var(--tw-content);margin-top:-20%}.after\:mt-5:after{content:var(--tw-content);margin-top:1.25rem}.after\:mt-8:after{content:var(--tw-content);margin-top:2rem}.after\:hidden:after{content:var(--tw-content);display:none}.after\:h-\[65px\]:after{content:var(--tw-content);height:65px}.after\:w-\[57\%\]:after{content:var(--tw-content);width:57%}.after\:w-\[97\%\]:after{content:var(--tw-content);width:97%}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:rotate-\[-4\.5deg\]:after{content:var(--tw-content);--tw-rotate: -4.5deg;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))}.after\:transform:after{content:var(--tw-content);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))}.after\:rounded-\[100\%\]:after{content:var(--tw-content);border-radius:100%}.after\:rounded-\[40px_0px_0px_0px\]:after{content:var(--tw-content);border-radius:40px 0 0}.after\:rounded-\[40px_40px_0px_0px\]:after{content:var(--tw-content);border-radius:40px 40px 0 0}.after\:rounded-xl:after{content:var(--tw-content);border-radius:.75rem}.after\:bg-primary:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(var(--color-primary) / var(--tw-bg-opacity))}.after\:bg-white\/10:after{content:var(--tw-content);background-color:#ffffff1a}.after\:bg-gradient-to-b:after{content:var(--tw-content);background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.after\:from-theme-1:after{content:var(--tw-content);--tw-gradient-from: rgb(var(--color-theme-1) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--color-theme-1) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.after\:to-theme-2:after{content:var(--tw-content);--tw-gradient-to: rgb(var(--color-theme-2) / 1) var(--tw-gradient-to-position)}.after\:shadow-md:after{content:var(--tw-content);--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)}.after\:content-\[\\\'\\\'\]:after{--tw-content: \'\';content:var(--tw-content)}.first\:-mt-4:first-child{margin-top:-1rem}.first\:mt-0:first-child{margin-top:0}.first\:rounded-l:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.first\:border-t-0:first-child{border-top-width:0px}.first\:pt-0:first-child{padding-top:0}.last\:-mb-4:last-child{margin-bottom:-1rem}.last\:mb-0:last-child{margin-bottom:0}.last\:rounded-r:last-child{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.last\:border-b-0:last-child{border-bottom-width:0px}.last\:pb-0:last-child{padding-bottom:0}.checked\:border-primary:checked{--tw-border-opacity: 1;border-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.checked\:bg-primary:checked{--tw-bg-opacity: 1;background-color:rgb(var(--color-primary) / var(--tw-bg-opacity))}.checked\:bg-none:checked{background-image:none}.before\:checked\:ml-\[14px\]:checked:before{content:var(--tw-content);margin-left:14px}.before\:checked\:bg-white:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:rotate-180:hover{--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))}.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))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.hover\:animate-bounce:hover{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.hover\:animate-pulse:hover{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.hover\:animate-spin:hover{animation:spin 1s linear infinite}.hover\:border-primary:hover{--tw-border-opacity: 1;border-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.hover\:border-slate-400:hover{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity))}.hover\:bg-slate-100:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.hover\:bg-slate-200:hover{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.hover\:bg-slate-200\/60:hover{background-color:#e2e8f099}.hover\:bg-slate-50:hover{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-danger:hover{--tw-text-opacity: 1;color:rgb(var(--color-danger) / var(--tw-text-opacity))}.hover\:text-primary:hover{--tw-text-opacity: 1;color:rgb(var(--color-primary) / var(--tw-text-opacity))}.focus\:w-72:focus{width:18rem}.focus\:border-primary:focus{--tw-border-opacity: 1;border-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.focus\:border-transparent:focus{border-color:transparent}.focus\:border-opacity-40:focus{--tw-border-opacity: .4}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-4: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(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)}.focus\:ring-primary:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity))}.focus\:ring-opacity-20:focus{--tw-ring-opacity: .2}.focus\:ring-offset-0:focus{--tw-ring-offset-width: 0px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-slate-100:disabled{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.group:hover .group-hover\:opacity-100{opacity:1}.group.mobile-menu--active .group-\[\.mobile-menu--active\]\:visible{visibility:visible}.group.mobile-menu--active .group-\[\.mobile-menu--active\]\:ml-0{margin-left:0}.group.mobile-menu--active .group-\[\.mobile-menu--active\]\:opacity-100{opacity:1}.dark\:divide-darkmode-400:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(var(--color-darkmode-400) / var(--tw-divide-opacity))}.dark\:border-\[\#0077b5\]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(0 119 181 / var(--tw-border-opacity))}.dark\:border-\[\#3b5998\]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(59 89 152 / var(--tw-border-opacity))}.dark\:border-\[\#4ab3f4\]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(74 179 244 / var(--tw-border-opacity))}.dark\:border-\[\#517fa4\]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(81 127 164 / var(--tw-border-opacity))}.dark\:border-danger:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-danger) / var(--tw-border-opacity))}.dark\:border-darkmode-100\/30:is(.dark *){border-color:rgb(var(--color-darkmode-100) / .3)}.dark\:border-darkmode-100\/40:is(.dark *){border-color:rgb(var(--color-darkmode-100) / .4)}.dark\:border-darkmode-300:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-darkmode-300) / var(--tw-border-opacity))}.dark\:border-darkmode-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-darkmode-400) / var(--tw-border-opacity))}.dark\:border-darkmode-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-darkmode-600) / var(--tw-border-opacity))}.dark\:border-darkmode-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-darkmode-800) / var(--tw-border-opacity))}.dark\:border-darkmode-800\/60:is(.dark *){border-color:rgb(var(--color-darkmode-800) / .6)}.dark\:border-darkmode-900\/20:is(.dark *){border-color:rgb(var(--color-darkmode-900) / .2)}.dark\:border-pending:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-pending) / var(--tw-border-opacity))}.dark\:border-primary:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.dark\:border-slate-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity))}.dark\:border-success:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-success) / var(--tw-border-opacity))}.dark\:border-success\/20:is(.dark *){border-color:rgb(var(--color-success) / .2)}.dark\:border-transparent:is(.dark *){border-color:transparent}.dark\:border-warning:is(.dark *){--tw-border-opacity: 1;border-color:rgb(var(--color-warning) / var(--tw-border-opacity))}.dark\:border-warning\/20:is(.dark *){border-color:rgb(var(--color-warning) / .2)}.dark\:border-x-darkmode-400:is(.dark *){--tw-border-opacity: 1;border-left-color:rgb(var(--color-darkmode-400) / var(--tw-border-opacity));border-right-color:rgb(var(--color-darkmode-400) / var(--tw-border-opacity))}.dark\:border-b-darkmode-600:is(.dark *){--tw-border-opacity: 1;border-bottom-color:rgb(var(--color-darkmode-600) / var(--tw-border-opacity))}.dark\:border-b-primary:is(.dark *){--tw-border-opacity: 1;border-bottom-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.dark\:border-t-darkmode-400:is(.dark *){--tw-border-opacity: 1;border-top-color:rgb(var(--color-darkmode-400) / var(--tw-border-opacity))}.dark\:border-opacity-100:is(.dark *){--tw-border-opacity: 1}.dark\:border-opacity-20:is(.dark *){--tw-border-opacity: .2}.dark\:bg-black\/20:is(.dark *){background-color:#0003}.dark\:bg-black\/30:is(.dark *){background-color:#0000004d}.dark\:bg-darkmode-100\/20:is(.dark *){background-color:rgb(var(--color-darkmode-100) / .2)}.dark\:bg-darkmode-300\/40:is(.dark *){background-color:rgb(var(--color-darkmode-300) / .4)}.dark\:bg-darkmode-400:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-400) / var(--tw-bg-opacity))}.dark\:bg-darkmode-500\/20:is(.dark *){background-color:rgb(var(--color-darkmode-500) / .2)}.dark\:bg-darkmode-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-600) / var(--tw-bg-opacity))}.dark\:bg-darkmode-600\/20:is(.dark *){background-color:rgb(var(--color-darkmode-600) / .2)}.dark\:bg-darkmode-600\/30:is(.dark *){background-color:rgb(var(--color-darkmode-600) / .3)}.dark\:bg-darkmode-600\/40:is(.dark *){background-color:rgb(var(--color-darkmode-600) / .4)}.dark\:bg-darkmode-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-700) / var(--tw-bg-opacity))}.dark\:bg-darkmode-700\/50:is(.dark *){background-color:rgb(var(--color-darkmode-700) / .5)}.dark\:bg-darkmode-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-800) / var(--tw-bg-opacity))}.dark\:bg-darkmode-800\/30:is(.dark *){background-color:rgb(var(--color-darkmode-800) / .3)}.dark\:bg-darkmode-800\/90:is(.dark *){background-color:rgb(var(--color-darkmode-800) / .9)}.dark\:bg-darkmode-900\/20:is(.dark *){background-color:rgb(var(--color-darkmode-900) / .2)}.dark\:bg-slate-200:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.dark\:bg-success\/10:is(.dark *){background-color:rgb(var(--color-success) / .1)}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:bg-warning\/10:is(.dark *){background-color:rgb(var(--color-warning) / .1)}.dark\:bg-opacity-20:is(.dark *){--tw-bg-opacity: .2}.dark\:from-darkmode-400:is(.dark *){--tw-gradient-from: rgb(var(--color-darkmode-400) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--color-darkmode-400) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:to-darkmode-400:is(.dark *){--tw-gradient-to: rgb(var(--color-darkmode-400) / 1) var(--tw-gradient-to-position)}.dark\:text-slate-100:is(.dark *){--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}.dark\:text-slate-200:is(.dark *){--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity))}.dark\:text-slate-300:is(.dark *){--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.dark\:text-slate-400:is(.dark *){--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.dark\:text-slate-500:is(.dark *){--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder\:text-slate-500\/80:is(.dark *)::-moz-placeholder{color:#64748bcc}.dark\:placeholder\:text-slate-500\/80:is(.dark *)::placeholder{color:#64748bcc}.before\:dark\:bg-darkmode-400:is(.dark *):before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-400) / var(--tw-bg-opacity))}.before\:dark\:bg-darkmode-400\/50:is(.dark *):before{content:var(--tw-content);background-color:rgb(var(--color-darkmode-400) / .5)}.before\:dark\:bg-darkmode-600:is(.dark *):before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-600) / var(--tw-bg-opacity))}.before\:dark\:bg-darkmode-600\/30:is(.dark *):before{content:var(--tw-content);background-color:rgb(var(--color-darkmode-600) / .3)}.dark\:before\:bg-chevron-white:is(.dark *):before{content:var(--tw-content);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff95' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")}.dark\:before\:from-darkmode-800:is(.dark *):before{content:var(--tw-content);--tw-gradient-from: rgb(var(--color-darkmode-800) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--color-darkmode-800) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:before\:to-darkmode-800:is(.dark *):before{content:var(--tw-content);--tw-gradient-to: rgb(var(--color-darkmode-800) / 1) var(--tw-gradient-to-position)}.after\:dark\:bg-darkmode-400\/50:is(.dark *):after{content:var(--tw-content);background-color:rgb(var(--color-darkmode-400) / .5)}.after\:dark\:bg-darkmode-600:is(.dark *):after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-600) / var(--tw-bg-opacity))}.after\:dark\:bg-darkmode-700:is(.dark *):after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-700) / var(--tw-bg-opacity))}.dark\:after\:from-darkmode-800:is(.dark *):after{content:var(--tw-content);--tw-gradient-from: rgb(var(--color-darkmode-800) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--color-darkmode-800) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:after\:to-darkmode-800:is(.dark *):after{content:var(--tw-content);--tw-gradient-to: rgb(var(--color-darkmode-800) / 1) var(--tw-gradient-to-position)}.dark\:hover\:border-transparent:hover:is(.dark *){border-color:transparent}.dark\:hover\:bg-darkmode-300:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-300) / var(--tw-bg-opacity))}.dark\:hover\:bg-darkmode-400:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-400) / var(--tw-bg-opacity))}.dark\:hover\:bg-darkmode-600\/50:hover:is(.dark *){background-color:rgb(var(--color-darkmode-600) / .5)}.dark\:hover\:bg-darkmode-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-700) / var(--tw-bg-opacity))}.dark\:focus\:ring-slate-700:focus:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(51 65 85 / var(--tw-ring-opacity))}.dark\:focus\:ring-opacity-50:focus:is(.dark *){--tw-ring-opacity: .5}.dark\:disabled\:border-transparent:disabled:is(.dark *){border-color:transparent}.dark\:disabled\:bg-darkmode-800\/50:disabled:is(.dark *){background-color:rgb(var(--color-darkmode-800) / .5)}.disabled\:dark\:bg-darkmode-800\/50:is(.dark *):disabled{background-color:rgb(var(--color-darkmode-800) / .5)}@media (min-width: 640px){.sm\:col-span-1{grid-column:span 1 / span 1}.sm\:col-span-12{grid-column:span 12 / span 12}.sm\:col-span-3{grid-column:span 3 / span 3}.sm\:col-span-4{grid-column:span 4 / span 4}.sm\:col-span-5{grid-column:span 5 / span 5}.sm\:col-span-6{grid-column:span 6 / span 6}.sm\:col-span-8{grid-column:span 8 / span 8}.sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.sm\:-ml-\[105px\]{margin-left:-105px}.sm\:mb-0{margin-bottom:0}.sm\:mr-2{margin-right:.5rem}.sm\:mr-5{margin-right:1.25rem}.sm\:mr-6{margin-right:1.5rem}.sm\:mr-auto{margin-right:auto}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-14{height:3.5rem}.sm\:h-8{height:2rem}.sm\:w-14{width:3.5rem}.sm\:w-3\/4{width:75%}.sm\:w-8{width:2rem}.sm\:w-\[300px\]{width:300px}.sm\:w-\[460px\]{width:460px}.sm\:w-\[600px\]{width:600px}.sm\:w-auto{width:auto}.sm\:min-w-\[40px\]{min-width:40px}.sm\:flex-initial{flex:0 1 auto}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.sm\:text-right{text-align:right}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:fixed{position:fixed}.md\:inset-x-0{left:0;right:0}.md\:top-0{top:0}.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-12{grid-column:span 12 / span 12}.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-7{grid-column:span 7 / span 7}.md\:col-span-8{grid-column:span 8 / span 8}.md\:col-span-9{grid-column:span 9 / span 9}.md\:-mx-0{margin-left:-0px;margin-right:-0px}.md\:mx-0{margin-left:0;margin-right:0}.md\:-mt-5{margin-top:-1.25rem}.md\:-mt-\[67px\]{margin-top:-67px}.md\:mb-8{margin-bottom:2rem}.md\:ml-10{margin-left:2.5rem}.md\:ml-4{margin-left:1rem}.md\:mt-0{margin-top:0}.md\:mt-1{margin-top:.25rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-\[65px\]{height:65px}.md\:w-\[100px\]{width:100px}.md\:max-w-none{max-width:none}.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\:flex-col{flex-direction:column}.md\:justify-start{justify-content:flex-start}.md\:rounded-\[35px\/50px_0px_0px_0px\]{border-radius:35px/50px 0 0}.md\:rounded-\[35px_35px_0_0\],.md\:rounded-\[35px_35px_0px_0px\]{border-radius:35px 35px 0 0}.md\:rounded-none{border-radius:0}.md\:border-b-0{border-bottom-width:0px}.md\:border-l{border-left-width:1px}.md\:bg-black\/\[0\.15\]{background-color:#00000026}.md\:bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.md\:bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.md\:from-slate-100{--tw-gradient-from: #f1f5f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(241 245 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.md\:to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.md\:px-0{padding-left:0;padding-right:0}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:px-\[22px\]{padding-left:22px;padding-right:22px}.md\:py-0{padding-top:0;padding-bottom:0}.md\:pl-10{padding-left:2.5rem}.md\:pl-3{padding-left:.75rem}.md\:pr-3{padding-right:.75rem}.md\:pt-0{padding-top:0}.md\:pt-10{padding-top:2.5rem}.md\:pt-20{padding-top:5rem}.md\:pt-\[80px\]{padding-top:80px}.md\:text-right{text-align:right}.before\:md\:block:before{content:var(--tw-content);display:block}.md\:before\:bg-none:before{content:var(--tw-content);background-image:none}.after\:md\:block:after{content:var(--tw-content);display:block}.md\:after\:block:after{content:var(--tw-content);display:block}.md\:dark\:bg-darkmode-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-800) / var(--tw-bg-opacity))}.dark\:md\:from-darkmode-700:is(.dark *){--tw-gradient-from: rgb(var(--color-darkmode-700) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--color-darkmode-700) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:md\:from-darkmode-800:is(.dark *){--tw-gradient-from: rgb(var(--color-darkmode-800) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--color-darkmode-800) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}}@media (min-width: 1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-10{grid-column:span 10 / span 10}.lg\:col-span-12{grid-column:span 12 / span 12}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-5{grid-column:span 5 / span 5}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-span-9{grid-column:span 9 / span 9}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:min-h-full{min-height:100%}.lg\:w-2\/4{width:50%}.lg\:w-\[900px\]{width:900px}.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-col{flex-direction:column}.lg\:items-center{align-items:center}.lg\:justify-center{justify-content:center}.lg\:overflow-hidden{overflow:hidden}.lg\:pl-4{padding-left:1rem}.lg\:pr-4{padding-right:1rem}}@media (min-width: 1280px){.xl\:col-span-3{grid-column:span 3 / span 3}.xl\:col-span-8{grid-column:span 8 / span 8}.xl\:my-0{margin-top:0;margin-bottom:0}.xl\:-mt-\[3px\]{margin-top:-3px}.xl\:-mt-\[62px\]{margin-top:-62px}.xl\:ml-20{margin-left:5rem}.xl\:mr-3{margin-right:.75rem}.xl\:mt-0{margin-top:0}.xl\:mt-24{margin-top:6rem}.xl\:mt-8{margin-top:2rem}.xl\:block{display:block}.xl\:flex{display:flex}.xl\:grid{display:grid}.xl\:hidden{display:none}.xl\:h-auto{height:auto}.xl\:w-32{width:8rem}.xl\:w-\[100px\]{width:100px}.xl\:w-\[1100px\]{width:1100px}.xl\:w-\[180px\]{width:180px}.xl\:w-\[230px\]{width:230px}.xl\:w-\[250px\]{width:250px}.xl\:w-\[260px\]{width:260px}.xl\:w-auto{width:auto}.xl\:min-w-\[350px\]{min-width:350px}.xl\:bg-theme-1{--tw-bg-opacity: 1;background-color:rgb(var(--color-theme-1) / var(--tw-bg-opacity))}.xl\:bg-transparent{background-color:transparent}.xl\:bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.xl\:p-0{padding:0}.xl\:px-6{padding-left:1.5rem;padding-right:1.5rem}.xl\:px-\[50px\]{padding-left:50px;padding-right:50px}.xl\:py-0{padding-top:0;padding-bottom:0}.xl\:pb-0{padding-bottom:0}.xl\:pt-\[12px\]{padding-top:12px}.xl\:text-left{text-align:left}.xl\:text-3xl{font-size:1.875rem;line-height:2.25rem}.xl\:shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.before\:xl\:block:before{content:var(--tw-content);display:block}.xl\:before\:block:before{content:var(--tw-content);display:block}.xl\:before\:bg-white\/10:before{content:var(--tw-content);background-color:#ffffff1a}.after\:xl\:block:after{content:var(--tw-content);display:block}.xl\:dark\:bg-darkmode-400:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-400) / var(--tw-bg-opacity))}.xl\:dark\:bg-darkmode-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-600) / var(--tw-bg-opacity))}}@media (min-width: 1536px){.\32xl\:col-span-12{grid-column:span 12 / span 12}.\32xl\:col-span-4{grid-column:span 4 / span 4}}.\[\&\.active\]\:border-2.active{border-width:2px}.\[\&\.active\]\:border-theme-1\/60.active{border-color:rgb(var(--color-theme-1) / .6)}.\[\&\.mobile-menu--active\]\:before\:visible.mobile-menu--active:before{content:var(--tw-content);visibility:visible}.\[\&\.mobile-menu--active\]\:before\:opacity-100.mobile-menu--active:before{content:var(--tw-content);opacity:1}.\[\&\:disabled\:checked\]\:cursor-not-allowed:disabled:checked{cursor:not-allowed}.\[\&\:disabled\:checked\]\:opacity-70:disabled:checked{opacity:.7}.\[\&\:disabled\:checked\]\:dark\:bg-darkmode-800\/50:is(.dark *):disabled:checked{background-color:rgb(var(--color-darkmode-800) / .5)}.\[\&\:disabled\:not\(\:checked\)\]\:cursor-not-allowed:disabled:not(:checked){cursor:not-allowed}.\[\&\:disabled\:not\(\:checked\)\]\:bg-slate-100:disabled:not(:checked){--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.\[\&\:disabled\:not\(\:checked\)\]\:dark\:bg-darkmode-800\/50:is(.dark *):disabled:not(:checked){background-color:rgb(var(--color-darkmode-800) / .5)}.\[\&\:hover\:not\(\:disabled\)\]\:border-slate-100:hover:not(:disabled){--tw-border-opacity: 1;border-color:rgb(241 245 249 / var(--tw-border-opacity))}.\[\&\:hover\:not\(\:disabled\)\]\:border-opacity-10:hover:not(:disabled){--tw-border-opacity: .1}.\[\&\:hover\:not\(\:disabled\)\]\:border-opacity-90:hover:not(:disabled){--tw-border-opacity: .9}.\[\&\:hover\:not\(\:disabled\)\]\:bg-danger\/10:hover:not(:disabled){background-color:rgb(var(--color-danger) / .1)}.\[\&\:hover\:not\(\:disabled\)\]\:bg-darkmode-800\/30:hover:not(:disabled){background-color:rgb(var(--color-darkmode-800) / .3)}.\[\&\:hover\:not\(\:disabled\)\]\:bg-pending\/10:hover:not(:disabled){background-color:rgb(var(--color-pending) / .1)}.\[\&\:hover\:not\(\:disabled\)\]\:bg-primary\/10:hover:not(:disabled){background-color:rgb(var(--color-primary) / .1)}.\[\&\:hover\:not\(\:disabled\)\]\:bg-secondary\/20:hover:not(:disabled){background-color:rgb(var(--color-secondary) / .2)}.\[\&\:hover\:not\(\:disabled\)\]\:bg-slate-100:hover:not(:disabled){--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.\[\&\:hover\:not\(\:disabled\)\]\:bg-success\/10:hover:not(:disabled){background-color:rgb(var(--color-success) / .1)}.\[\&\:hover\:not\(\:disabled\)\]\:bg-warning\/10:hover:not(:disabled){background-color:rgb(var(--color-warning) / .1)}.\[\&\:hover\:not\(\:disabled\)\]\:bg-opacity-10:hover:not(:disabled){--tw-bg-opacity: .1}.\[\&\:hover\:not\(\:disabled\)\]\:bg-opacity-90:hover:not(:disabled){--tw-bg-opacity: .9}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:border-darkmode-100\/20:is(.dark *):hover:not(:disabled){border-color:rgb(var(--color-darkmode-100) / .2)}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:border-darkmode-300\/80:is(.dark *):hover:not(:disabled){border-color:rgb(var(--color-darkmode-300) / .8)}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:border-darkmode-800:is(.dark *):hover:not(:disabled){--tw-border-opacity: 1;border-color:rgb(var(--color-darkmode-800) / var(--tw-border-opacity))}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:border-opacity-60:is(.dark *):hover:not(:disabled){--tw-border-opacity: .6}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:bg-darkmode-100\/10:is(.dark *):hover:not(:disabled){background-color:rgb(var(--color-darkmode-100) / .1)}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:bg-darkmode-300\/80:is(.dark *):hover:not(:disabled){background-color:rgb(var(--color-darkmode-300) / .8)}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:bg-darkmode-800\/50:is(.dark *):hover:not(:disabled){background-color:rgb(var(--color-darkmode-800) / .5)}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:dark\:bg-darkmode-800\/70:is(.dark *):is(.dark *):hover:not(:disabled){background-color:rgb(var(--color-darkmode-800) / .7)}.\[\&\:hover\:not\(\:disabled\)\]\:dark\:bg-opacity-30:is(.dark *):hover:not(:disabled){--tw-bg-opacity: .3}.\[\&\:hover_td\]\:bg-slate-100:hover td{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.\[\&\:hover_td\]\:dark\:bg-darkmode-300:is(.dark *):hover td{--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-300) / var(--tw-bg-opacity))}.\[\&\:hover_td\]\:dark\:bg-opacity-50:is(.dark *):hover td{--tw-bg-opacity: .5}.\[\&\:not\(\:first-child\)\]\:border-l-transparent:not(:first-child){border-left-color:transparent}.\[\&\:not\(\:last-child\)\]\:border-b:not(:last-child){border-bottom-width:1px}.\[\&\:not\(\:last-child\)\]\:border-slate-200\/60:not(:last-child){border-color:#e2e8f099}.\[\&\:not\(\:last-child\)\]\:dark\:border-darkmode-400:is(.dark *):not(:last-child){--tw-border-opacity: 1;border-color:rgb(var(--color-darkmode-400) / var(--tw-border-opacity))}.\[\&\:not\(button\)\]\:text-center:not(button){text-align:center}.\[\&\:nth-of-type\(odd\)_td\]\:bg-slate-100:nth-of-type(odd) td{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.\[\&\:nth-of-type\(odd\)_td\]\:dark\:bg-darkmode-300:is(.dark *):nth-of-type(odd) td{--tw-bg-opacity: 1;background-color:rgb(var(--color-darkmode-300) / var(--tw-bg-opacity))}.\[\&\:nth-of-type\(odd\)_td\]\:dark\:bg-opacity-50:is(.dark *):nth-of-type(odd) td{--tw-bg-opacity: .5}.\[\&\[data-simplebar\]\]\:fixed[data-simplebar]{position:fixed}.\[\&\[readonly\]\]\:cursor-not-allowed[readonly]{cursor:not-allowed}.\[\&\[readonly\]\]\:bg-slate-100[readonly]{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.\[\&\[readonly\]\]\:dark\:border-transparent:is(.dark *)[readonly]{border-color:transparent}.\[\&\[readonly\]\]\:dark\:bg-darkmode-800\/50:is(.dark *)[readonly]{background-color:rgb(var(--color-darkmode-800) / .5)}.\[\&\[type\=\'checkbox\'\]\]\:checked\:border-primary:checked[type=checkbox]{--tw-border-opacity: 1;border-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.\[\&\[type\=\'checkbox\'\]\]\:checked\:border-opacity-10:checked[type=checkbox]{--tw-border-opacity: .1}.\[\&\[type\=\'checkbox\'\]\]\:checked\:bg-primary:checked[type=checkbox]{--tw-bg-opacity: 1;background-color:rgb(var(--color-primary) / var(--tw-bg-opacity))}.\[\&\[type\=\'radio\'\]\]\:checked\:border-primary:checked[type=radio]{--tw-border-opacity: 1;border-color:rgb(var(--color-primary) / var(--tw-border-opacity))}.\[\&\[type\=\'radio\'\]\]\:checked\:border-opacity-10:checked[type=radio]{--tw-border-opacity: .1}.\[\&\[type\=\'radio\'\]\]\:checked\:bg-primary:checked[type=radio]{--tw-bg-opacity: 1;background-color:rgb(var(--color-primary) / var(--tw-bg-opacity))}.\[\&_\.simplebar-scrollbar\]\:before\:bg-black\/50 .simplebar-scrollbar:before{content:var(--tw-content);background-color:#00000080} diff --git a/web/dist/assets/index-DKtlem7l.js b/web/dist/assets/index-DKtlem7l.js new file mode 100644 index 000000000..31b52814b --- /dev/null +++ b/web/dist/assets/index-DKtlem7l.js @@ -0,0 +1,6979 @@ +var EJ=Object.defineProperty;var AJ=(l,a,t)=>a in l?EJ(l,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[a]=t;var LJ=(l,a)=>()=>(a||l((a={exports:{}}).exports,a),a.exports);var qt=(l,a,t)=>(AJ(l,typeof a!="symbol"?a+"":a,t),t);var _os=LJ((Rn,On)=>{(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))s(d);new MutationObserver(d=>{for(const c of d)if(c.type==="childList")for(const p of c.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&s(p)}).observe(document,{childList:!0,subtree:!0});function t(d){const c={};return d.integrity&&(c.integrity=d.integrity),d.referrerPolicy&&(c.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?c.credentials="include":d.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function s(d){if(d.ep)return;d.ep=!0;const c=t(d);fetch(d.href,c)}})();/** +* @vue/shared v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function qD(l,a){const t=new Set(l.split(","));return a?s=>t.has(s.toLowerCase()):s=>t.has(s)}const uo={},Hc=[],Jn=()=>{},IJ=()=>!1,EI=l=>l.charCodeAt(0)===111&&l.charCodeAt(1)===110&&(l.charCodeAt(2)>122||l.charCodeAt(2)<97),zD=l=>l.startsWith("onUpdate:"),Ao=Object.assign,BD=(l,a)=>{const t=l.indexOf(a);t>-1&&l.splice(t,1)},VJ=Object.prototype.hasOwnProperty,Ns=(l,a)=>VJ.call(l,a),ns=Array.isArray,qc=l=>Tp(l)==="[object Map]",iu=l=>Tp(l)==="[object Set]",ZR=l=>Tp(l)==="[object Date]",ks=l=>typeof l=="function",wo=l=>typeof l=="string",_i=l=>typeof l=="symbol",Qs=l=>l!==null&&typeof l=="object",Rj=l=>(Qs(l)||ks(l))&&ks(l.then)&&ks(l.catch),Oj=Object.prototype.toString,Tp=l=>Oj.call(l),MJ=l=>Tp(l).slice(8,-1),Fj=l=>Tp(l)==="[object Object]",GD=l=>wo(l)&&l!=="NaN"&&l[0]!=="-"&&""+parseInt(l,10)===l,Yu=qD(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),AI=l=>{const a=Object.create(null);return t=>a[t]||(a[t]=l(t))},TJ=/-(\w)/g,Gl=AI(l=>l.replace(TJ,(a,t)=>t?t.toUpperCase():"")),DJ=/\B([A-Z])/g,dc=AI(l=>l.replace(DJ,"-$1").toLowerCase()),LI=AI(l=>l.charAt(0).toUpperCase()+l.slice(1)),SM=AI(l=>l?`on${LI(l)}`:""),mi=(l,a)=>!Object.is(l,a),xm=(l,a)=>{for(let t=0;t{Object.defineProperty(l,a,{configurable:!0,enumerable:!1,value:t})},up=l=>{const a=parseFloat(l);return isNaN(a)?l:a},PJ=l=>{const a=wo(l)?Number(l):NaN;return isNaN(a)?l:a};let KR;const Nj=()=>KR||(KR=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function bi(l){if(ns(l)){const a={};for(let t=0;t{if(t){const s=t.split(RJ);s.length>1&&(a[s[0].trim()]=s[1].trim())}}),a}function w(l){let a="";if(wo(l))a=l;else if(ns(l))for(let t=0;tlc(t,a))}const r=l=>wo(l)?l:l==null?"":ns(l)||Qs(l)&&(l.toString===Oj||!ks(l.toString))?JSON.stringify(l,Hj,2):String(l),Hj=(l,a)=>a&&a.__v_isRef?Hj(l,a.value):qc(a)?{[`Map(${a.size})`]:[...a.entries()].reduce((t,[s,d],c)=>(t[EM(s,c)+" =>"]=d,t),{})}:iu(a)?{[`Set(${a.size})`]:[...a.values()].map(t=>EM(t))}:_i(a)?EM(a):Qs(a)&&!ns(a)&&!Fj(a)?String(a):a,EM=(l,a="")=>{var t;return _i(l)?`Symbol(${(t=l.description)!=null?t:a})`:l};/** +* @vue/reactivity v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Dn;class qj{constructor(a=!1){this.detached=a,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Dn,!a&&Dn&&(this.index=(Dn.scopes||(Dn.scopes=[])).push(this)-1)}get active(){return this._active}run(a){if(this._active){const t=Dn;try{return Dn=this,a()}finally{Dn=t}}}on(){Dn=this}off(){Dn=this.parent}stop(a){if(this._active){let t,s;for(t=0,s=this.effects.length;t=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),uc()}return this._dirtyLevel>=4}set dirty(a){this._dirtyLevel=a?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let a=ci,t=sc;try{return ci=!0,sc=this,this._runnings++,YR(this),this.fn()}finally{XR(this),this._runnings--,sc=t,ci=a}}stop(){var a;this.active&&(YR(this),XR(this),(a=this.onStop)==null||a.call(this),this.active=!1)}}function BJ(l){return l.value}function YR(l){l._trackId++,l._depsLength=0}function XR(l){if(l.deps.length>l._depsLength){for(let a=l._depsLength;a{const t=new Map;return t.cleanup=l,t.computed=a,t},aI=new WeakMap,oc=Symbol(""),LT=Symbol("");function kn(l,a,t){if(ci&&sc){let s=aI.get(l);s||aI.set(l,s=new Map);let d=s.get(t);d||s.set(t,d=Kj(()=>s.delete(t))),Wj(sc,d)}}function yr(l,a,t,s,d,c){const p=aI.get(l);if(!p)return;let g=[];if(a==="clear")g=[...p.values()];else if(t==="length"&&ns(l)){const _=Number(s);p.forEach((v,h)=>{(h==="length"||!_i(h)&&h>=_)&&g.push(v)})}else switch(t!==void 0&&g.push(p.get(t)),a){case"add":ns(l)?GD(t)&&g.push(p.get("length")):(g.push(p.get(oc)),qc(l)&&g.push(p.get(LT)));break;case"delete":ns(l)||(g.push(p.get(oc)),qc(l)&&g.push(p.get(LT)));break;case"set":qc(l)&&g.push(p.get(oc));break}YD();for(const _ of g)_&&Zj(_,4);XD()}function GJ(l,a){var t;return(t=aI.get(l))==null?void 0:t.get(a)}const WJ=qD("__proto__,__v_isRef,__isVue"),Yj=new Set(Object.getOwnPropertyNames(Symbol).filter(l=>l!=="arguments"&&l!=="caller").map(l=>Symbol[l]).filter(_i)),QR=ZJ();function ZJ(){const l={};return["includes","indexOf","lastIndexOf"].forEach(a=>{l[a]=function(...t){const s=Ms(this);for(let c=0,p=this.length;c{l[a]=function(...t){cc(),YD();const s=Ms(this)[a].apply(this,t);return XD(),uc(),s}}),l}function KJ(l){const a=Ms(this);return kn(a,"has",l),a.hasOwnProperty(l)}class Xj{constructor(a=!1,t=!1){this._isReadonly=a,this._isShallow=t}get(a,t,s){const d=this._isReadonly,c=this._isShallow;if(t==="__v_isReactive")return!d;if(t==="__v_isReadonly")return d;if(t==="__v_isShallow")return c;if(t==="__v_raw")return s===(d?c?iee:tH:c?eH:Jj).get(a)||Object.getPrototypeOf(a)===Object.getPrototypeOf(s)?a:void 0;const p=ns(a);if(!d){if(p&&Ns(QR,t))return Reflect.get(QR,t,s);if(t==="hasOwnProperty")return KJ}const g=Reflect.get(a,t,s);return(_i(t)?Yj.has(t):WJ(t))||(d||kn(a,"get",t),c)?g:ko(g)?p&&GD(t)?g:g.value:Qs(g)?d?sH(g):Mo(g):g}}class Qj extends Xj{constructor(a=!1){super(!1,a)}set(a,t,s,d){let c=a[t];if(!this._isShallow){const _=Wc(c);if(!sI(s)&&!Wc(s)&&(c=Ms(c),s=Ms(s)),!ns(a)&&ko(c)&&!ko(s))return _?!1:(c.value=s,!0)}const p=ns(a)&&GD(t)?Number(t)l,II=l=>Reflect.getPrototypeOf(l);function tm(l,a,t=!1,s=!1){l=l.__v_raw;const d=Ms(l),c=Ms(a);t||(mi(a,c)&&kn(d,"get",a),kn(d,"get",c));const{has:p}=II(d),g=s?QD:t?tP:pp;if(p.call(d,a))return g(l.get(a));if(p.call(d,c))return g(l.get(c));l!==d&&l.get(a)}function am(l,a=!1){const t=this.__v_raw,s=Ms(t),d=Ms(l);return a||(mi(l,d)&&kn(s,"has",l),kn(s,"has",d)),l===d?t.has(l):t.has(l)||t.has(d)}function sm(l,a=!1){return l=l.__v_raw,!a&&kn(Ms(l),"iterate",oc),Reflect.get(l,"size",l)}function JR(l){l=Ms(l);const a=Ms(this);return II(a).has.call(a,l)||(a.add(l),yr(a,"add",l,l)),this}function eO(l,a){a=Ms(a);const t=Ms(this),{has:s,get:d}=II(t);let c=s.call(t,l);c||(l=Ms(l),c=s.call(t,l));const p=d.call(t,l);return t.set(l,a),c?mi(a,p)&&yr(t,"set",l,a):yr(t,"add",l,a),this}function tO(l){const a=Ms(this),{has:t,get:s}=II(a);let d=t.call(a,l);d||(l=Ms(l),d=t.call(a,l)),s&&s.call(a,l);const c=a.delete(l);return d&&yr(a,"delete",l,void 0),c}function aO(){const l=Ms(this),a=l.size!==0,t=l.clear();return a&&yr(l,"clear",void 0,void 0),t}function om(l,a){return function(s,d){const c=this,p=c.__v_raw,g=Ms(p),_=a?QD:l?tP:pp;return!l&&kn(g,"iterate",oc),p.forEach((v,h)=>s.call(d,_(v),_(h),c))}}function nm(l,a,t){return function(...s){const d=this.__v_raw,c=Ms(d),p=qc(c),g=l==="entries"||l===Symbol.iterator&&p,_=l==="keys"&&p,v=d[l](...s),h=t?QD:a?tP:pp;return!a&&kn(c,"iterate",_?LT:oc),{next(){const{value:b,done:y}=v.next();return y?{value:b,done:y}:{value:g?[h(b[0]),h(b[1])]:h(b),done:y}},[Symbol.iterator](){return this}}}}function qr(l){return function(...a){return l==="delete"?!1:l==="clear"?void 0:this}}function eee(){const l={get(c){return tm(this,c)},get size(){return sm(this)},has:am,add:JR,set:eO,delete:tO,clear:aO,forEach:om(!1,!1)},a={get(c){return tm(this,c,!1,!0)},get size(){return sm(this)},has:am,add:JR,set:eO,delete:tO,clear:aO,forEach:om(!1,!0)},t={get(c){return tm(this,c,!0)},get size(){return sm(this,!0)},has(c){return am.call(this,c,!0)},add:qr("add"),set:qr("set"),delete:qr("delete"),clear:qr("clear"),forEach:om(!0,!1)},s={get(c){return tm(this,c,!0,!0)},get size(){return sm(this,!0)},has(c){return am.call(this,c,!0)},add:qr("add"),set:qr("set"),delete:qr("delete"),clear:qr("clear"),forEach:om(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(c=>{l[c]=nm(c,!1,!1),t[c]=nm(c,!0,!1),a[c]=nm(c,!1,!0),s[c]=nm(c,!0,!0)}),[l,t,a,s]}const[tee,aee,see,oee]=eee();function JD(l,a){const t=a?l?oee:see:l?aee:tee;return(s,d,c)=>d==="__v_isReactive"?!l:d==="__v_isReadonly"?l:d==="__v_raw"?s:Reflect.get(Ns(t,d)&&d in s?t:s,d,c)}const nee={get:JD(!1,!1)},lee={get:JD(!1,!0)},ree={get:JD(!0,!1)},Jj=new WeakMap,eH=new WeakMap,tH=new WeakMap,iee=new WeakMap;function dee(l){switch(l){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function cee(l){return l.__v_skip||!Object.isExtensible(l)?0:dee(MJ(l))}function Mo(l){return Wc(l)?l:eP(l,!1,XJ,nee,Jj)}function aH(l){return eP(l,!1,JJ,lee,eH)}function sH(l){return eP(l,!0,QJ,ree,tH)}function eP(l,a,t,s,d){if(!Qs(l)||l.__v_raw&&!(a&&l.__v_isReactive))return l;const c=d.get(l);if(c)return c;const p=cee(l);if(p===0)return l;const g=new Proxy(l,p===2?s:t);return d.set(l,g),g}function br(l){return Wc(l)?br(l.__v_raw):!!(l&&l.__v_isReactive)}function Wc(l){return!!(l&&l.__v_isReadonly)}function sI(l){return!!(l&&l.__v_isShallow)}function oH(l){return br(l)||Wc(l)}function Ms(l){const a=l&&l.__v_raw;return a?Ms(a):l}function VI(l){return Object.isExtensible(l)&&tI(l,"__v_skip",!0),l}const pp=l=>Qs(l)?Mo(l):l,tP=l=>Qs(l)?sH(l):l;class nH{constructor(a,t,s,d){this.getter=a,this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new KD(()=>a(this._value),()=>$m(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!d,this.__v_isReadonly=s}get value(){const a=Ms(this);return(!a._cacheable||a.effect.dirty)&&mi(a._value,a._value=a.effect.run())&&$m(a,4),lH(a),a.effect._dirtyLevel>=2&&$m(a,2),a._value}set value(a){this._setter(a)}get _dirty(){return this.effect.dirty}set _dirty(a){this.effect.dirty=a}}function uee(l,a,t=!1){let s,d;const c=ks(l);return c?(s=l,d=Jn):(s=l.get,d=l.set),new nH(s,d,c||!d,t)}function lH(l){var a;ci&&sc&&(l=Ms(l),Wj(sc,(a=l.dep)!=null?a:l.dep=Kj(()=>l.dep=void 0,l instanceof nH?l:void 0)))}function $m(l,a=4,t){l=Ms(l);const s=l.dep;s&&Zj(s,a)}function ko(l){return!!(l&&l.__v_isRef===!0)}function $(l){return rH(l,!1)}function MI(l){return rH(l,!0)}function rH(l,a){return ko(l)?l:new pee(l,a)}class pee{constructor(a,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?a:Ms(a),this._value=t?a:pp(a)}get value(){return lH(this),this._value}set value(a){const t=this.__v_isShallow||sI(a)||Wc(a);a=t?a:Ms(a),mi(a,this._rawValue)&&(this._rawValue=a,this._value=t?a:pp(a),$m(this,4))}}function e(l){return ko(l)?l.value:l}const _ee={get:(l,a,t)=>e(Reflect.get(l,a,t)),set:(l,a,t,s)=>{const d=l[a];return ko(d)&&!ko(t)?(d.value=t,!0):Reflect.set(l,a,t,s)}};function iH(l){return br(l)?l:new Proxy(l,_ee)}function mee(l){const a=ns(l)?new Array(l.length):{};for(const t in l)a[t]=dH(l,t);return a}class vee{constructor(a,t,s){this._object=a,this._key=t,this._defaultValue=s,this.__v_isRef=!0}get value(){const a=this._object[this._key];return a===void 0?this._defaultValue:a}set value(a){this._object[this._key]=a}get dep(){return GJ(Ms(this._object),this._key)}}class hee{constructor(a){this._getter=a,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function ho(l,a,t){return ko(l)?l:ks(l)?new hee(l):Qs(l)&&arguments.length>1?dH(l,a,t):$(l)}function dH(l,a,t){const s=l[a];return ko(s)?s:new vee(l,a,t)}/** +* @vue/runtime-core v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function ui(l,a,t,s){try{return s?l(...s):l()}catch(d){TI(d,a,t)}}function el(l,a,t,s){if(ks(l)){const c=ui(l,a,t,s);return c&&Rj(c)&&c.catch(p=>{TI(p,a,t)}),c}const d=[];for(let c=0;c>>1,d=tn[s],c=mp(d);cjl&&tn.splice(a,1)}function bee(l){ns(l)?zc.push(...l):(!ti||!ti.includes(l,l.allowRecurse?Zd+1:Zd))&&zc.push(l),uH()}function sO(l,a,t=_p?jl+1:0){for(;tmp(t)-mp(s));if(zc.length=0,ti){ti.push(...a);return}for(ti=a,Zd=0;Zdl.id==null?1/0:l.id,wee=(l,a)=>{const t=mp(l)-mp(a);if(t===0){if(l.pre&&!a.pre)return-1;if(a.pre&&!l.pre)return 1}return t};function _H(l){IT=!1,_p=!0,tn.sort(wee);try{for(jl=0;jlwo(u)?u.trim():u)),b&&(d=t.map(up))}let g,_=s[g=SM(a)]||s[g=SM(Gl(a))];!_&&c&&(_=s[g=SM(dc(a))]),_&&el(_,l,6,d);const v=s[g+"Once"];if(v){if(!l.emitted)l.emitted={};else if(l.emitted[g])return;l.emitted[g]=!0,el(v,l,6,d)}}function mH(l,a,t=!1){const s=a.emitsCache,d=s.get(l);if(d!==void 0)return d;const c=l.emits;let p={},g=!1;if(!ks(l)){const _=v=>{const h=mH(v,a,!0);h&&(g=!0,Ao(p,h))};!t&&a.mixins.length&&a.mixins.forEach(_),l.extends&&_(l.extends),l.mixins&&l.mixins.forEach(_)}return!c&&!g?(Qs(l)&&s.set(l,null),null):(ns(c)?c.forEach(_=>p[_]=null):Ao(p,c),Qs(l)&&s.set(l,p),p)}function DI(l,a){return!l||!EI(a)?!1:(a=a.slice(2).replace(/Once$/,""),Ns(l,a[0].toLowerCase()+a.slice(1))||Ns(l,dc(a))||Ns(l,a))}let Eo=null,vH=null;function oI(l){const a=Eo;return Eo=l,vH=l&&l.type.__scopeId||null,a}function i(l,a=Eo,t){if(!a||l._n)return l;const s=(...d)=>{s._d&&fO(-1);const c=oI(a);let p;try{p=l(...d)}finally{oI(c),s._d&&fO(1)}return p};return s._n=!0,s._c=!0,s._d=!0,s}function AM(l){const{type:a,vnode:t,proxy:s,withProxy:d,props:c,propsOptions:[p],slots:g,attrs:_,emit:v,render:h,renderCache:b,data:y,setupState:u,ctx:C,inheritAttrs:x}=l;let z,P;const F=oI(l);try{if(t.shapeFlag&4){const M=d||s,S=M;z=Fl(h.call(S,M,b,c,u,y,C)),P=_}else{const M=a;z=Fl(M.length>1?M(c,{attrs:_,slots:g,emit:v}):M(c,null)),P=a.props?_:xee(_)}}catch(M){ep.length=0,TI(M,l,1),z=o(tl)}let N=z;if(P&&x!==!1){const M=Object.keys(P),{shapeFlag:S}=N;M.length&&S&7&&(p&&M.some(zD)&&(P=$ee(P,p)),N=kr(N,P))}return t.dirs&&(N=kr(N),N.dirs=N.dirs?N.dirs.concat(t.dirs):t.dirs),t.transition&&(N.transition=t.transition),z=N,oI(F),z}const xee=l=>{let a;for(const t in l)(t==="class"||t==="style"||EI(t))&&((a||(a={}))[t]=l[t]);return a},$ee=(l,a)=>{const t={};for(const s in l)(!zD(s)||!(s.slice(9)in a))&&(t[s]=l[s]);return t};function Cee(l,a,t){const{props:s,children:d,component:c}=l,{props:p,children:g,patchFlag:_}=a,v=c.emitsOptions;if(a.dirs||a.transition)return!0;if(t&&_>=0){if(_&1024)return!0;if(_&16)return s?oO(s,p,v):!!p;if(_&8){const h=a.dynamicProps;for(let b=0;bl.__isSuspense;function Aee(l,a){a&&a.pendingBranch?ns(l)?a.effects.push(...l):a.effects.push(l):bee(l)}const Lee=Symbol.for("v-scx"),Iee=()=>Ba(Lee);function Lo(l,a){return nP(l,null,a)}const lm={};function ra(l,a,t){return nP(l,a,t)}function nP(l,a,{immediate:t,deep:s,flush:d,once:c,onTrack:p,onTrigger:g}=uo){if(a&&c){const L=a;a=(...E)=>{L(...E),S()}}const _=Ho,v=L=>s===!0?L:Jd(L,s===!1?1:void 0);let h,b=!1,y=!1;if(ko(l)?(h=()=>l.value,b=sI(l)):br(l)?(h=()=>v(l),b=!0):ns(l)?(y=!0,b=l.some(L=>br(L)||sI(L)),h=()=>l.map(L=>{if(ko(L))return L.value;if(br(L))return v(L);if(ks(L))return ui(L,_,2)})):ks(l)?a?h=()=>ui(l,_,2):h=()=>(u&&u(),el(l,_,3,[C])):h=Jn,a&&s){const L=h;h=()=>Jd(L())}let u,C=L=>{u=N.onStop=()=>{ui(L,_,4),u=N.onStop=void 0}},x;if(FI)if(C=Jn,a?t&&el(a,_,3,[h(),y?[]:void 0,C]):h(),d==="sync"){const L=Iee();x=L.__watcherHandles||(L.__watcherHandles=[])}else return Jn;let z=y?new Array(l.length).fill(lm):lm;const P=()=>{if(!(!N.active||!N.dirty))if(a){const L=N.run();(s||b||(y?L.some((E,f)=>mi(E,z[f])):mi(L,z)))&&(u&&u(),el(a,_,3,[L,z===lm?void 0:y&&z[0]===lm?[]:z,C]),z=L)}else N.run()};P.allowRecurse=!!a;let F;d==="sync"?F=P:d==="post"?F=()=>yn(P,_&&_.suspense):(P.pre=!0,_&&(P.id=_.uid),F=()=>sP(P));const N=new KD(h,Jn,F),M=zj(),S=()=>{N.stop(),M&&BD(M.effects,N)};return a?t?P():z=N.run():d==="post"?yn(N.run.bind(N),_&&_.suspense):N.run(),x&&x.push(S),S}function Vee(l,a,t){const s=this.proxy,d=wo(l)?l.includes(".")?gH(s,l):()=>s[l]:l.bind(s,s);let c;ks(a)?c=a:(c=a.handler,t=a);const p=Pp(this),g=nP(d,c.bind(s),t);return p(),g}function gH(l,a){const t=a.split(".");return()=>{let s=l;for(let d=0;d0){if(t>=a)return l;t++}if(s=s||new Set,s.has(l))return l;if(s.add(l),ko(l))Jd(l.value,a,t,s);else if(ns(l))for(let d=0;d{Jd(d,a,t,s)});else if(Fj(l))for(const d in l)Jd(l[d],a,t,s);return l}function xn(l,a){if(Eo===null)return l;const t=NI(Eo)||Eo.proxy,s=l.dirs||(l.dirs=[]);for(let d=0;d{l.isMounted=!0}),RI(()=>{l.isUnmounting=!0}),l}const Kn=[Function,Array],bH={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Kn,onEnter:Kn,onAfterEnter:Kn,onEnterCancelled:Kn,onBeforeLeave:Kn,onLeave:Kn,onAfterLeave:Kn,onLeaveCancelled:Kn,onBeforeAppear:Kn,onAppear:Kn,onAfterAppear:Kn,onAppearCancelled:Kn},Mee={name:"BaseTransition",props:bH,setup(l,{slots:a}){const t=xr(),s=yH();return()=>{const d=a.default&&lP(a.default(),!0);if(!d||!d.length)return;let c=d[0];if(d.length>1){for(const y of d)if(y.type!==tl){c=y;break}}const p=Ms(l),{mode:g}=p;if(s.isLeaving)return LM(c);const _=lO(c);if(!_)return LM(c);const v=vp(_,p,s,t);hp(_,v);const h=t.subTree,b=h&&lO(h);if(b&&b.type!==tl&&!Kd(_,b)){const y=vp(b,p,s,t);if(hp(b,y),g==="out-in")return s.isLeaving=!0,y.afterLeave=()=>{s.isLeaving=!1,t.update.active!==!1&&(t.effect.dirty=!0,t.update())},LM(c);g==="in-out"&&_.type!==tl&&(y.delayLeave=(u,C,x)=>{const z=wH(s,b);z[String(b.key)]=b,u[ai]=()=>{C(),u[ai]=void 0,delete v.delayedLeave},v.delayedLeave=x})}return c}}},Tee=Mee;function wH(l,a){const{leavingVNodes:t}=l;let s=t.get(a.type);return s||(s=Object.create(null),t.set(a.type,s)),s}function vp(l,a,t,s){const{appear:d,mode:c,persisted:p=!1,onBeforeEnter:g,onEnter:_,onAfterEnter:v,onEnterCancelled:h,onBeforeLeave:b,onLeave:y,onAfterLeave:u,onLeaveCancelled:C,onBeforeAppear:x,onAppear:z,onAfterAppear:P,onAppearCancelled:F}=a,N=String(l.key),M=wH(t,l),S=(f,T)=>{f&&el(f,s,9,T)},L=(f,T)=>{const H=T[1];S(f,T),ns(f)?f.every(O=>O.length<=1)&&H():f.length<=1&&H()},E={mode:c,persisted:p,beforeEnter(f){let T=g;if(!t.isMounted)if(d)T=x||g;else return;f[ai]&&f[ai](!0);const H=M[N];H&&Kd(l,H)&&H.el[ai]&&H.el[ai](),S(T,[f])},enter(f){let T=_,H=v,O=h;if(!t.isMounted)if(d)T=z||_,H=P||v,O=F||h;else return;let W=!1;const ie=f[rm]=ve=>{W||(W=!0,ve?S(O,[f]):S(H,[f]),E.delayedLeave&&E.delayedLeave(),f[rm]=void 0)};T?L(T,[f,ie]):ie()},leave(f,T){const H=String(l.key);if(f[rm]&&f[rm](!0),t.isUnmounting)return T();S(b,[f]);let O=!1;const W=f[ai]=ie=>{O||(O=!0,T(),ie?S(C,[f]):S(u,[f]),f[ai]=void 0,M[H]===l&&delete M[H])};M[H]=l,y?L(y,[f,W]):W()},clone(f){return vp(f,a,t,s)}};return E}function LM(l){if(PI(l))return l=kr(l),l.children=null,l}function lO(l){return PI(l)?l.children?l.children[0]:void 0:l}function hp(l,a){l.shapeFlag&6&&l.component?hp(l.component.subTree,a):l.shapeFlag&128?(l.ssContent.transition=a.clone(l.ssContent),l.ssFallback.transition=a.clone(l.ssFallback)):l.transition=a}function lP(l,a=!1,t){let s=[],d=0;for(let c=0;c1)for(let c=0;c!!l.type.__asyncLoader,PI=l=>l.type.__isKeepAlive;function Dee(l,a){kH(l,"a",a)}function Pee(l,a){kH(l,"da",a)}function kH(l,a,t=Ho){const s=l.__wdc||(l.__wdc=()=>{let d=t;for(;d;){if(d.isDeactivated)return;d=d.parent}return l()});if(UI(a,s,t),t){let d=t.parent;for(;d&&d.parent;)PI(d.parent.vnode)&&Uee(s,a,t,d),d=d.parent}}function Uee(l,a,t,s){const d=UI(a,l,s,!0);Fs(()=>{BD(s[a],d)},t)}function UI(l,a,t=Ho,s=!1){if(t){const d=t[l]||(t[l]=[]),c=a.__weh||(a.__weh=(...p)=>{if(t.isUnmounted)return;cc();const g=Pp(t),_=el(a,t,l,p);return g(),uc(),_});return s?d.unshift(c):d.push(c),c}}const Cr=l=>(a,t=Ho)=>(!FI||l==="sp")&&UI(l,(...s)=>a(...s),t),xH=Cr("bm"),zt=Cr("m"),Ree=Cr("bu"),$H=Cr("u"),RI=Cr("bum"),Fs=Cr("um"),Oee=Cr("sp"),Fee=Cr("rtg"),Nee=Cr("rtc");function jee(l,a=Ho){UI("ec",l,a)}function ht(l,a,t,s){let d;const c=t&&t[s];if(ns(l)||wo(l)){d=new Array(l.length);for(let p=0,g=l.length;pa(p,g,void 0,c&&c[g]));else{const p=Object.keys(l);d=new Array(p.length);for(let g=0,_=p.length;g<_;g++){const v=p[g];d[g]=a(l[v],v,g,c&&c[g])}}else d=[];return t&&(t[s]=d),d}function Ya(l,a,t={},s,d){if(Eo.isCE||Eo.parent&&Xu(Eo.parent)&&Eo.parent.isCE)return a!=="default"&&(t.name=a),o("slot",t,s&&s());let c=l[a];c&&c._c&&(c._d=!1),k();const p=c&&CH(c(t)),g=Be(Pe,{key:t.key||p&&p.key||`_${a}`},p||(s?s():[]),p&&l._===1?64:-2);return!d&&g.scopeId&&(g.slotScopeIds=[g.scopeId+"-s"]),c&&c._c&&(c._d=!0),g}function CH(l){return l.some(a=>lI(a)?!(a.type===tl||a.type===Pe&&!CH(a.children)):!0)?l:null}const VT=l=>l?NH(l)?NI(l)||l.proxy:VT(l.parent):null,Qu=Ao(Object.create(null),{$:l=>l,$el:l=>l.vnode.el,$data:l=>l.data,$props:l=>l.props,$attrs:l=>l.attrs,$slots:l=>l.slots,$refs:l=>l.refs,$parent:l=>VT(l.parent),$root:l=>VT(l.root),$emit:l=>l.emit,$options:l=>rP(l),$forceUpdate:l=>l.f||(l.f=()=>{l.effect.dirty=!0,sP(l.update)}),$nextTick:l=>l.n||(l.n=vs.bind(l.proxy)),$watch:l=>Vee.bind(l)}),IM=(l,a)=>l!==uo&&!l.__isScriptSetup&&Ns(l,a),Hee={get({_:l},a){const{ctx:t,setupState:s,data:d,props:c,accessCache:p,type:g,appContext:_}=l;let v;if(a[0]!=="$"){const u=p[a];if(u!==void 0)switch(u){case 1:return s[a];case 2:return d[a];case 4:return t[a];case 3:return c[a]}else{if(IM(s,a))return p[a]=1,s[a];if(d!==uo&&Ns(d,a))return p[a]=2,d[a];if((v=l.propsOptions[0])&&Ns(v,a))return p[a]=3,c[a];if(t!==uo&&Ns(t,a))return p[a]=4,t[a];MT&&(p[a]=0)}}const h=Qu[a];let b,y;if(h)return a==="$attrs"&&kn(l,"get",a),h(l);if((b=g.__cssModules)&&(b=b[a]))return b;if(t!==uo&&Ns(t,a))return p[a]=4,t[a];if(y=_.config.globalProperties,Ns(y,a))return y[a]},set({_:l},a,t){const{data:s,setupState:d,ctx:c}=l;return IM(d,a)?(d[a]=t,!0):s!==uo&&Ns(s,a)?(s[a]=t,!0):Ns(l.props,a)||a[0]==="$"&&a.slice(1)in l?!1:(c[a]=t,!0)},has({_:{data:l,setupState:a,accessCache:t,ctx:s,appContext:d,propsOptions:c}},p){let g;return!!t[p]||l!==uo&&Ns(l,p)||IM(a,p)||(g=c[0])&&Ns(g,p)||Ns(s,p)||Ns(Qu,p)||Ns(d.config.globalProperties,p)},defineProperty(l,a,t){return t.get!=null?l._.accessCache[a]=0:Ns(t,"value")&&this.set(l,a,t.value,null),Reflect.defineProperty(l,a,t)}};function SH(){return EH().slots}function is(){return EH().attrs}function EH(){const l=xr();return l.setupContext||(l.setupContext=HH(l))}function rO(l){return ns(l)?l.reduce((a,t)=>(a[t]=null,a),{}):l}let MT=!0;function qee(l){const a=rP(l),t=l.proxy,s=l.ctx;MT=!1,a.beforeCreate&&iO(a.beforeCreate,l,"bc");const{data:d,computed:c,methods:p,watch:g,provide:_,inject:v,created:h,beforeMount:b,mounted:y,beforeUpdate:u,updated:C,activated:x,deactivated:z,beforeDestroy:P,beforeUnmount:F,destroyed:N,unmounted:M,render:S,renderTracked:L,renderTriggered:E,errorCaptured:f,serverPrefetch:T,expose:H,inheritAttrs:O,components:W,directives:ie,filters:ve}=a;if(v&&zee(v,s,null),p)for(const K in p){const Q=p[K];ks(Q)&&(s[K]=Q.bind(t))}if(d){const K=d.call(t,t);Qs(K)&&(l.data=Mo(K))}if(MT=!0,c)for(const K in c){const Q=c[K],se=ks(Q)?Q.bind(t,t):ks(Q.get)?Q.get.bind(t,t):Jn,ue=!ks(Q)&&ks(Q.set)?Q.set.bind(t):Jn,ke=ae({get:se,set:ue});Object.defineProperty(s,K,{enumerable:!0,configurable:!0,get:()=>ke.value,set:we=>ke.value=we})}if(g)for(const K in g)AH(g[K],s,t,K);if(_){const K=ks(_)?_.call(t):_;Reflect.ownKeys(K).forEach(Q=>{ka(Q,K[Q])})}h&&iO(h,l,"c");function re(K,Q){ns(Q)?Q.forEach(se=>K(se.bind(t))):Q&&K(Q.bind(t))}if(re(xH,b),re(zt,y),re(Ree,u),re($H,C),re(Dee,x),re(Pee,z),re(jee,f),re(Nee,L),re(Fee,E),re(RI,F),re(Fs,M),re(Oee,T),ns(H))if(H.length){const K=l.exposed||(l.exposed={});H.forEach(Q=>{Object.defineProperty(K,Q,{get:()=>t[Q],set:se=>t[Q]=se})})}else l.exposed||(l.exposed={});S&&l.render===Jn&&(l.render=S),O!=null&&(l.inheritAttrs=O),W&&(l.components=W),ie&&(l.directives=ie)}function zee(l,a,t=Jn){ns(l)&&(l=TT(l));for(const s in l){const d=l[s];let c;Qs(d)?"default"in d?c=Ba(d.from||s,d.default,!0):c=Ba(d.from||s):c=Ba(d),ko(c)?Object.defineProperty(a,s,{enumerable:!0,configurable:!0,get:()=>c.value,set:p=>c.value=p}):a[s]=c}}function iO(l,a,t){el(ns(l)?l.map(s=>s.bind(a.proxy)):l.bind(a.proxy),a,t)}function AH(l,a,t,s){const d=s.includes(".")?gH(t,s):()=>t[s];if(wo(l)){const c=a[l];ks(c)&&ra(d,c)}else if(ks(l))ra(d,l.bind(t));else if(Qs(l))if(ns(l))l.forEach(c=>AH(c,a,t,s));else{const c=ks(l.handler)?l.handler.bind(t):a[l.handler];ks(c)&&ra(d,c,l)}}function rP(l){const a=l.type,{mixins:t,extends:s}=a,{mixins:d,optionsCache:c,config:{optionMergeStrategies:p}}=l.appContext,g=c.get(a);let _;return g?_=g:!d.length&&!t&&!s?_=a:(_={},d.length&&d.forEach(v=>nI(_,v,p,!0)),nI(_,a,p)),Qs(a)&&c.set(a,_),_}function nI(l,a,t,s=!1){const{mixins:d,extends:c}=a;c&&nI(l,c,t,!0),d&&d.forEach(p=>nI(l,p,t,!0));for(const p in a)if(!(s&&p==="expose")){const g=Bee[p]||t&&t[p];l[p]=g?g(l[p],a[p]):a[p]}return l}const Bee={data:dO,props:cO,emits:cO,methods:Zu,computed:Zu,beforeCreate:ln,created:ln,beforeMount:ln,mounted:ln,beforeUpdate:ln,updated:ln,beforeDestroy:ln,beforeUnmount:ln,destroyed:ln,unmounted:ln,activated:ln,deactivated:ln,errorCaptured:ln,serverPrefetch:ln,components:Zu,directives:Zu,watch:Wee,provide:dO,inject:Gee};function dO(l,a){return a?l?function(){return Ao(ks(l)?l.call(this,this):l,ks(a)?a.call(this,this):a)}:a:l}function Gee(l,a){return Zu(TT(l),TT(a))}function TT(l){if(ns(l)){const a={};for(let t=0;t1)return t&&ks(a)?a.call(s&&s.proxy):a}}function Yee(){return!!(Ho||Eo||Bc)}function Xee(l,a,t,s=!1){const d={},c={};tI(c,OI,1),l.propsDefaults=Object.create(null),IH(l,a,d,c);for(const p in l.propsOptions[0])p in d||(d[p]=void 0);t?l.props=s?d:aH(d):l.type.props?l.props=d:l.props=c,l.attrs=c}function Qee(l,a,t,s){const{props:d,attrs:c,vnode:{patchFlag:p}}=l,g=Ms(d),[_]=l.propsOptions;let v=!1;if((s||p>0)&&!(p&16)){if(p&8){const h=l.vnode.dynamicProps;for(let b=0;b{_=!0;const[y,u]=VH(b,a,!0);Ao(p,y),u&&g.push(...u)};!t&&a.mixins.length&&a.mixins.forEach(h),l.extends&&h(l.extends),l.mixins&&l.mixins.forEach(h)}if(!c&&!_)return Qs(l)&&s.set(l,Hc),Hc;if(ns(c))for(let h=0;h-1,u[1]=x<0||C-1||Ns(u,"default"))&&g.push(b)}}}const v=[p,g];return Qs(l)&&s.set(l,v),v}function uO(l){return l[0]!=="$"&&!Yu(l)}function pO(l){return l===null?"null":typeof l=="function"?l.name||"":typeof l=="object"&&l.constructor&&l.constructor.name||""}function _O(l,a){return pO(l)===pO(a)}function mO(l,a){return ns(a)?a.findIndex(t=>_O(t,l)):ks(a)&&_O(a,l)?0:-1}const MH=l=>l[0]==="_"||l==="$stable",iP=l=>ns(l)?l.map(Fl):[Fl(l)],Jee=(l,a,t)=>{if(a._n)return a;const s=i((...d)=>iP(a(...d)),t);return s._c=!1,s},TH=(l,a,t)=>{const s=l._ctx;for(const d in l){if(MH(d))continue;const c=l[d];if(ks(c))a[d]=Jee(d,c,s);else if(c!=null){const p=iP(c);a[d]=()=>p}}},DH=(l,a)=>{const t=iP(a);l.slots.default=()=>t},ete=(l,a)=>{if(l.vnode.shapeFlag&32){const t=a._;t?(l.slots=Ms(a),tI(a,"_",t)):TH(a,l.slots={})}else l.slots={},a&&DH(l,a);tI(l.slots,OI,1)},tte=(l,a,t)=>{const{vnode:s,slots:d}=l;let c=!0,p=uo;if(s.shapeFlag&32){const g=a._;g?t&&g===1?c=!1:(Ao(d,a),!t&&g===1&&delete d._):(c=!a.$stable,TH(a,d)),p=a}else a&&(DH(l,a),p={default:1});if(c)for(const g in d)!MH(g)&&p[g]==null&&delete d[g]};function PT(l,a,t,s,d=!1){if(ns(l)){l.forEach((y,u)=>PT(y,a&&(ns(a)?a[u]:a),t,s,d));return}if(Xu(s)&&!d)return;const c=s.shapeFlag&4?NI(s.component)||s.component.proxy:s.el,p=d?null:c,{i:g,r:_}=l,v=a&&a.r,h=g.refs===uo?g.refs={}:g.refs,b=g.setupState;if(v!=null&&v!==_&&(wo(v)?(h[v]=null,Ns(b,v)&&(b[v]=null)):ko(v)&&(v.value=null)),ks(_))ui(_,g,12,[p,h]);else{const y=wo(_),u=ko(_);if(y||u){const C=()=>{if(l.f){const x=y?Ns(b,_)?b[_]:h[_]:_.value;d?ns(x)&&BD(x,c):ns(x)?x.includes(c)||x.push(c):y?(h[_]=[c],Ns(b,_)&&(b[_]=h[_])):(_.value=[c],l.k&&(h[l.k]=_.value))}else y?(h[_]=p,Ns(b,_)&&(b[_]=p)):u&&(_.value=p,l.k&&(h[l.k]=p))};p?(C.id=-1,yn(C,t)):C()}}}const yn=Aee;function ate(l){return ste(l)}function ste(l,a){const t=Nj();t.__VUE__=!0;const{insert:s,remove:d,patchProp:c,createElement:p,createText:g,createComment:_,setText:v,setElementText:h,parentNode:b,nextSibling:y,setScopeId:u=Jn,insertStaticContent:C}=l,x=(Y,U,j,oe=null,Z=null,X=null,le=void 0,fe=null,Me=!!U.dynamicChildren)=>{if(Y===U)return;Y&&!Kd(Y,U)&&(oe=me(Y),we(Y,Z,X,!0),Y=null),U.patchFlag===-2&&(Me=!1,U.dynamicChildren=null);const{type:mt,ref:Mt,shapeFlag:Gt}=U;switch(mt){case Dp:z(Y,U,j,oe);break;case tl:P(Y,U,j,oe);break;case Cm:Y==null&&F(U,j,oe,le);break;case Pe:W(Y,U,j,oe,Z,X,le,fe,Me);break;default:Gt&1?S(Y,U,j,oe,Z,X,le,fe,Me):Gt&6?ie(Y,U,j,oe,Z,X,le,fe,Me):(Gt&64||Gt&128)&&mt.process(Y,U,j,oe,Z,X,le,fe,Me,q)}Mt!=null&&Z&&PT(Mt,Y&&Y.ref,X,U||Y,!U)},z=(Y,U,j,oe)=>{if(Y==null)s(U.el=g(U.children),j,oe);else{const Z=U.el=Y.el;U.children!==Y.children&&v(Z,U.children)}},P=(Y,U,j,oe)=>{Y==null?s(U.el=_(U.children||""),j,oe):U.el=Y.el},F=(Y,U,j,oe)=>{[Y.el,Y.anchor]=C(Y.children,U,j,oe,Y.el,Y.anchor)},N=({el:Y,anchor:U},j,oe)=>{let Z;for(;Y&&Y!==U;)Z=y(Y),s(Y,j,oe),Y=Z;s(U,j,oe)},M=({el:Y,anchor:U})=>{let j;for(;Y&&Y!==U;)j=y(Y),d(Y),Y=j;d(U)},S=(Y,U,j,oe,Z,X,le,fe,Me)=>{U.type==="svg"?le="svg":U.type==="math"&&(le="mathml"),Y==null?L(U,j,oe,Z,X,le,fe,Me):T(Y,U,Z,X,le,fe,Me)},L=(Y,U,j,oe,Z,X,le,fe)=>{let Me,mt;const{props:Mt,shapeFlag:Gt,transition:Wt,dirs:kt}=Y;if(Me=Y.el=p(Y.type,X,Mt&&Mt.is,Mt),Gt&8?h(Me,Y.children):Gt&16&&f(Y.children,Me,null,oe,Z,VM(Y,X),le,fe),kt&&Ri(Y,null,oe,"created"),E(Me,Y,Y.scopeId,le,oe),Mt){for(const Pt in Mt)Pt!=="value"&&!Yu(Pt)&&c(Me,Pt,null,Mt[Pt],X,Y.children,oe,Z,je);"value"in Mt&&c(Me,"value",null,Mt.value,X),(mt=Mt.onVnodeBeforeMount)&&Dl(mt,oe,Y)}kt&&Ri(Y,null,oe,"beforeMount");const gt=ote(Z,Wt);gt&&Wt.beforeEnter(Me),s(Me,U,j),((mt=Mt&&Mt.onVnodeMounted)||gt||kt)&&yn(()=>{mt&&Dl(mt,oe,Y),gt&&Wt.enter(Me),kt&&Ri(Y,null,oe,"mounted")},Z)},E=(Y,U,j,oe,Z)=>{if(j&&u(Y,j),oe)for(let X=0;X{for(let mt=Me;mt{const fe=U.el=Y.el;let{patchFlag:Me,dynamicChildren:mt,dirs:Mt}=U;Me|=Y.patchFlag&16;const Gt=Y.props||uo,Wt=U.props||uo;let kt;if(j&&Oi(j,!1),(kt=Wt.onVnodeBeforeUpdate)&&Dl(kt,j,U,Y),Mt&&Ri(U,Y,j,"beforeUpdate"),j&&Oi(j,!0),mt?H(Y.dynamicChildren,mt,fe,j,oe,VM(U,Z),X):le||Q(Y,U,fe,null,j,oe,VM(U,Z),X,!1),Me>0){if(Me&16)O(fe,U,Gt,Wt,j,oe,Z);else if(Me&2&&Gt.class!==Wt.class&&c(fe,"class",null,Wt.class,Z),Me&4&&c(fe,"style",Gt.style,Wt.style,Z),Me&8){const gt=U.dynamicProps;for(let Pt=0;Pt{kt&&Dl(kt,j,U,Y),Mt&&Ri(U,Y,j,"updated")},oe)},H=(Y,U,j,oe,Z,X,le)=>{for(let fe=0;fe{if(j!==oe){if(j!==uo)for(const fe in j)!Yu(fe)&&!(fe in oe)&&c(Y,fe,j[fe],null,le,U.children,Z,X,je);for(const fe in oe){if(Yu(fe))continue;const Me=oe[fe],mt=j[fe];Me!==mt&&fe!=="value"&&c(Y,fe,mt,Me,le,U.children,Z,X,je)}"value"in oe&&c(Y,"value",j.value,oe.value,le)}},W=(Y,U,j,oe,Z,X,le,fe,Me)=>{const mt=U.el=Y?Y.el:g(""),Mt=U.anchor=Y?Y.anchor:g("");let{patchFlag:Gt,dynamicChildren:Wt,slotScopeIds:kt}=U;kt&&(fe=fe?fe.concat(kt):kt),Y==null?(s(mt,j,oe),s(Mt,j,oe),f(U.children||[],j,Mt,Z,X,le,fe,Me)):Gt>0&&Gt&64&&Wt&&Y.dynamicChildren?(H(Y.dynamicChildren,Wt,j,Z,X,le,fe),(U.key!=null||Z&&U===Z.subTree)&&dP(Y,U,!0)):Q(Y,U,j,Mt,Z,X,le,fe,Me)},ie=(Y,U,j,oe,Z,X,le,fe,Me)=>{U.slotScopeIds=fe,Y==null?U.shapeFlag&512?Z.ctx.activate(U,j,oe,le,Me):ve(U,j,oe,Z,X,le,Me):de(Y,U,Me)},ve=(Y,U,j,oe,Z,X,le)=>{const fe=Y.component=mte(Y,oe,Z);if(PI(Y)&&(fe.ctx.renderer=q),vte(fe),fe.asyncDep){if(Z&&Z.registerDep(fe,re),!Y.el){const Me=fe.subTree=o(tl);P(null,Me,U,j)}}else re(fe,Y,U,j,Z,X,le)},de=(Y,U,j)=>{const oe=U.component=Y.component;if(Cee(Y,U,j))if(oe.asyncDep&&!oe.asyncResolved){K(oe,U,j);return}else oe.next=U,yee(oe.update),oe.effect.dirty=!0,oe.update();else U.el=Y.el,oe.vnode=U},re=(Y,U,j,oe,Z,X,le)=>{const fe=()=>{if(Y.isMounted){let{next:Mt,bu:Gt,u:Wt,parent:kt,vnode:gt}=Y;{const Ye=PH(Y);if(Ye){Mt&&(Mt.el=gt.el,K(Y,Mt,le)),Ye.asyncDep.then(()=>{Y.isUnmounted||fe()});return}}let Pt=Mt,Qt;Oi(Y,!1),Mt?(Mt.el=gt.el,K(Y,Mt,le)):Mt=gt,Gt&&xm(Gt),(Qt=Mt.props&&Mt.props.onVnodeBeforeUpdate)&&Dl(Qt,kt,Mt,gt),Oi(Y,!0);const Jt=AM(Y),Lt=Y.subTree;Y.subTree=Jt,x(Lt,Jt,b(Lt.el),me(Lt),Y,Z,X),Mt.el=Jt.el,Pt===null&&See(Y,Jt.el),Wt&&yn(Wt,Z),(Qt=Mt.props&&Mt.props.onVnodeUpdated)&&yn(()=>Dl(Qt,kt,Mt,gt),Z)}else{let Mt;const{el:Gt,props:Wt}=U,{bm:kt,m:gt,parent:Pt}=Y,Qt=Xu(U);if(Oi(Y,!1),kt&&xm(kt),!Qt&&(Mt=Wt&&Wt.onVnodeBeforeMount)&&Dl(Mt,Pt,U),Oi(Y,!0),Gt&&_e){const Jt=()=>{Y.subTree=AM(Y),_e(Gt,Y.subTree,Y,Z,null)};Qt?U.type.__asyncLoader().then(()=>!Y.isUnmounted&&Jt()):Jt()}else{const Jt=Y.subTree=AM(Y);x(null,Jt,j,oe,Y,Z,X),U.el=Jt.el}if(gt&&yn(gt,Z),!Qt&&(Mt=Wt&&Wt.onVnodeMounted)){const Jt=U;yn(()=>Dl(Mt,Pt,Jt),Z)}(U.shapeFlag&256||Pt&&Xu(Pt.vnode)&&Pt.vnode.shapeFlag&256)&&Y.a&&yn(Y.a,Z),Y.isMounted=!0,U=j=oe=null}},Me=Y.effect=new KD(fe,Jn,()=>sP(mt),Y.scope),mt=Y.update=()=>{Me.dirty&&Me.run()};mt.id=Y.uid,Oi(Y,!0),mt()},K=(Y,U,j)=>{U.component=Y;const oe=Y.vnode.props;Y.vnode=U,Y.next=null,Qee(Y,U.props,oe,j),tte(Y,U.children,j),cc(),sO(Y),uc()},Q=(Y,U,j,oe,Z,X,le,fe,Me=!1)=>{const mt=Y&&Y.children,Mt=Y?Y.shapeFlag:0,Gt=U.children,{patchFlag:Wt,shapeFlag:kt}=U;if(Wt>0){if(Wt&128){ue(mt,Gt,j,oe,Z,X,le,fe,Me);return}else if(Wt&256){se(mt,Gt,j,oe,Z,X,le,fe,Me);return}}kt&8?(Mt&16&&je(mt,Z,X),Gt!==mt&&h(j,Gt)):Mt&16?kt&16?ue(mt,Gt,j,oe,Z,X,le,fe,Me):je(mt,Z,X,!0):(Mt&8&&h(j,""),kt&16&&f(Gt,j,oe,Z,X,le,fe,Me))},se=(Y,U,j,oe,Z,X,le,fe,Me)=>{Y=Y||Hc,U=U||Hc;const mt=Y.length,Mt=U.length,Gt=Math.min(mt,Mt);let Wt;for(Wt=0;WtMt?je(Y,Z,X,!0,!1,Gt):f(U,j,oe,Z,X,le,fe,Me,Gt)},ue=(Y,U,j,oe,Z,X,le,fe,Me)=>{let mt=0;const Mt=U.length;let Gt=Y.length-1,Wt=Mt-1;for(;mt<=Gt&&mt<=Wt;){const kt=Y[mt],gt=U[mt]=Me?si(U[mt]):Fl(U[mt]);if(Kd(kt,gt))x(kt,gt,j,null,Z,X,le,fe,Me);else break;mt++}for(;mt<=Gt&&mt<=Wt;){const kt=Y[Gt],gt=U[Wt]=Me?si(U[Wt]):Fl(U[Wt]);if(Kd(kt,gt))x(kt,gt,j,null,Z,X,le,fe,Me);else break;Gt--,Wt--}if(mt>Gt){if(mt<=Wt){const kt=Wt+1,gt=ktWt)for(;mt<=Gt;)we(Y[mt],Z,X,!0),mt++;else{const kt=mt,gt=mt,Pt=new Map;for(mt=gt;mt<=Wt;mt++){const Ie=U[mt]=Me?si(U[mt]):Fl(U[mt]);Ie.key!=null&&Pt.set(Ie.key,mt)}let Qt,Jt=0;const Lt=Wt-gt+1;let Ye=!1,Te=0;const Fe=new Array(Lt);for(mt=0;mt=Lt){we(Ie,Z,X,!0);continue}let Se;if(Ie.key!=null)Se=Pt.get(Ie.key);else for(Qt=gt;Qt<=Wt;Qt++)if(Fe[Qt-gt]===0&&Kd(Ie,U[Qt])){Se=Qt;break}Se===void 0?we(Ie,Z,X,!0):(Fe[Se-gt]=mt+1,Se>=Te?Te=Se:Ye=!0,x(Ie,U[Se],j,null,Z,X,le,fe,Me),Jt++)}const ze=Ye?nte(Fe):Hc;for(Qt=ze.length-1,mt=Lt-1;mt>=0;mt--){const Ie=gt+mt,Se=U[Ie],tt=Ie+1{const{el:X,type:le,transition:fe,children:Me,shapeFlag:mt}=Y;if(mt&6){ke(Y.component.subTree,U,j,oe);return}if(mt&128){Y.suspense.move(U,j,oe);return}if(mt&64){le.move(Y,U,j,q);return}if(le===Pe){s(X,U,j);for(let Gt=0;Gtfe.enter(X),Z);else{const{leave:Gt,delayLeave:Wt,afterLeave:kt}=fe,gt=()=>s(X,U,j),Pt=()=>{Gt(X,()=>{gt(),kt&&kt()})};Wt?Wt(X,gt,Pt):Pt()}else s(X,U,j)},we=(Y,U,j,oe=!1,Z=!1)=>{const{type:X,props:le,ref:fe,children:Me,dynamicChildren:mt,shapeFlag:Mt,patchFlag:Gt,dirs:Wt}=Y;if(fe!=null&&PT(fe,null,j,Y,!0),Mt&256){U.ctx.deactivate(Y);return}const kt=Mt&1&&Wt,gt=!Xu(Y);let Pt;if(gt&&(Pt=le&&le.onVnodeBeforeUnmount)&&Dl(Pt,U,Y),Mt&6)he(Y.component,j,oe);else{if(Mt&128){Y.suspense.unmount(j,oe);return}kt&&Ri(Y,null,U,"beforeUnmount"),Mt&64?Y.type.remove(Y,U,j,Z,q,oe):mt&&(X!==Pe||Gt>0&&Gt&64)?je(mt,U,j,!1,!0):(X===Pe&&Gt&384||!Z&&Mt&16)&&je(Me,U,j),oe&&Ce(Y)}(gt&&(Pt=le&&le.onVnodeUnmounted)||kt)&&yn(()=>{Pt&&Dl(Pt,U,Y),kt&&Ri(Y,null,U,"unmounted")},j)},Ce=Y=>{const{type:U,el:j,anchor:oe,transition:Z}=Y;if(U===Pe){$e(j,oe);return}if(U===Cm){M(Y);return}const X=()=>{d(j),Z&&!Z.persisted&&Z.afterLeave&&Z.afterLeave()};if(Y.shapeFlag&1&&Z&&!Z.persisted){const{leave:le,delayLeave:fe}=Z,Me=()=>le(j,X);fe?fe(Y.el,X,Me):Me()}else X()},$e=(Y,U)=>{let j;for(;Y!==U;)j=y(Y),d(Y),Y=j;d(U)},he=(Y,U,j)=>{const{bum:oe,scope:Z,update:X,subTree:le,um:fe}=Y;oe&&xm(oe),Z.stop(),X&&(X.active=!1,we(le,Y,U,j)),fe&&yn(fe,U),yn(()=>{Y.isUnmounted=!0},U),U&&U.pendingBranch&&!U.isUnmounted&&Y.asyncDep&&!Y.asyncResolved&&Y.suspenseId===U.pendingId&&(U.deps--,U.deps===0&&U.resolve())},je=(Y,U,j,oe=!1,Z=!1,X=0)=>{for(let le=X;leY.shapeFlag&6?me(Y.component.subTree):Y.shapeFlag&128?Y.suspense.next():y(Y.anchor||Y.el);let ce=!1;const G=(Y,U,j)=>{Y==null?U._vnode&&we(U._vnode,null,null,!0):x(U._vnode||null,Y,U,null,null,null,j),ce||(ce=!0,sO(),pH(),ce=!1),U._vnode=Y},q={p:x,um:we,m:ke,r:Ce,mt:ve,mc:f,pc:Q,pbc:H,n:me,o:l};let te,_e;return a&&([te,_e]=a(q)),{render:G,hydrate:te,createApp:Kee(G,te)}}function VM({type:l,props:a},t){return t==="svg"&&l==="foreignObject"||t==="mathml"&&l==="annotation-xml"&&a&&a.encoding&&a.encoding.includes("html")?void 0:t}function Oi({effect:l,update:a},t){l.allowRecurse=a.allowRecurse=t}function ote(l,a){return(!l||l&&!l.pendingBranch)&&a&&!a.persisted}function dP(l,a,t=!1){const s=l.children,d=a.children;if(ns(s)&&ns(d))for(let c=0;c>1,l[t[g]]0&&(a[s]=t[c-1]),t[c]=s)}}for(c=t.length,p=t[c-1];c-- >0;)t[c]=p,p=a[p];return t}function PH(l){const a=l.subTree.component;if(a)return a.asyncDep&&!a.asyncResolved?a:PH(a)}const lte=l=>l.__isTeleport,Ju=l=>l&&(l.disabled||l.disabled===""),vO=l=>typeof SVGElement<"u"&&l instanceof SVGElement,hO=l=>typeof MathMLElement=="function"&&l instanceof MathMLElement,UT=(l,a)=>{const t=l&&l.to;return wo(t)?a?a(t):null:t},rte={name:"Teleport",__isTeleport:!0,process(l,a,t,s,d,c,p,g,_,v){const{mc:h,pc:b,pbc:y,o:{insert:u,querySelector:C,createText:x,createComment:z}}=v,P=Ju(a.props);let{shapeFlag:F,children:N,dynamicChildren:M}=a;if(l==null){const S=a.el=x(""),L=a.anchor=x("");u(S,t,s),u(L,t,s);const E=a.target=UT(a.props,C),f=a.targetAnchor=x("");E&&(u(f,E),p==="svg"||vO(E)?p="svg":(p==="mathml"||hO(E))&&(p="mathml"));const T=(H,O)=>{F&16&&h(N,H,O,d,c,p,g,_)};P?T(t,L):E&&T(E,f)}else{a.el=l.el;const S=a.anchor=l.anchor,L=a.target=l.target,E=a.targetAnchor=l.targetAnchor,f=Ju(l.props),T=f?t:L,H=f?S:E;if(p==="svg"||vO(L)?p="svg":(p==="mathml"||hO(L))&&(p="mathml"),M?(y(l.dynamicChildren,M,T,d,c,p,g),dP(l,a,!0)):_||b(l,a,T,H,d,c,p,g,!1),P)f?a.props&&l.props&&a.props.to!==l.props.to&&(a.props.to=l.props.to):im(a,t,S,v,1);else if((a.props&&a.props.to)!==(l.props&&l.props.to)){const O=a.target=UT(a.props,C);O&&im(a,O,null,v,0)}else f&&im(a,L,E,v,1)}RH(a)},remove(l,a,t,s,{um:d,o:{remove:c}},p){const{shapeFlag:g,children:_,anchor:v,targetAnchor:h,target:b,props:y}=l;if(b&&c(h),p&&c(v),g&16){const u=p||!Ju(y);for(let C=0;C<_.length;C++){const x=_[C];d(x,a,t,u,!!x.dynamicChildren)}}},move:im,hydrate:ite};function im(l,a,t,{o:{insert:s},m:d},c=2){c===0&&s(l.targetAnchor,a,t);const{el:p,anchor:g,shapeFlag:_,children:v,props:h}=l,b=c===2;if(b&&s(p,a,t),(!b||Ju(h))&&_&16)for(let y=0;y0?wl||Hc:null,dte(),fp>0&&wl&&wl.push(l),l}function I(l,a,t,s,d,c){return OH(n(l,a,t,s,d,c,!0))}function Be(l,a,t,s,d){return OH(o(l,a,t,s,d,!0))}function lI(l){return l?l.__v_isVNode===!0:!1}function Kd(l,a){return l.type===a.type&&l.key===a.key}const OI="__vInternal",FH=({key:l})=>l??null,Sm=({ref:l,ref_key:a,ref_for:t})=>(typeof l=="number"&&(l=""+l),l!=null?wo(l)||ko(l)||ks(l)?{i:Eo,r:l,k:a,f:!!t}:l:null);function n(l,a=null,t=null,s=0,d=null,c=l===Pe?0:1,p=!1,g=!1){const _={__v_isVNode:!0,__v_skip:!0,type:l,props:a,key:a&&FH(a),ref:a&&Sm(a),scopeId:vH,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:c,patchFlag:s,dynamicProps:d,dynamicChildren:null,appContext:null,ctx:Eo};return g?(cP(_,t),c&128&&l.normalize(_)):t&&(_.shapeFlag|=wo(t)?8:16),fp>0&&!p&&wl&&(_.patchFlag>0||c&6)&&_.patchFlag!==32&&wl.push(_),_}const o=cte;function cte(l,a=null,t=null,s=0,d=null,c=!1){if((!l||l===hH)&&(l=tl),lI(l)){const g=kr(l,a,!0);return t&&cP(g,t),fp>0&&!c&&wl&&(g.shapeFlag&6?wl[wl.indexOf(l)]=g:wl.push(g)),g.patchFlag|=-2,g}if(yte(l)&&(l=l.__vccOpts),a){a=ute(a);let{class:g,style:_}=a;g&&!wo(g)&&(a.class=w(g)),Qs(_)&&(oH(_)&&!ns(_)&&(_=Ao({},_)),a.style=bi(_))}const p=wo(l)?1:Eee(l)?128:lte(l)?64:Qs(l)?4:ks(l)?2:0;return n(l,a,t,s,d,p,c,!0)}function ute(l){return l?oH(l)||OI in l?Ao({},l):l:null}function kr(l,a,t=!1){const{props:s,ref:d,patchFlag:c,children:p}=l,g=a?ds(s||{},a):s;return{__v_isVNode:!0,__v_skip:!0,type:l.type,props:g,key:g&&FH(g),ref:a&&a.ref?t&&d?ns(d)?d.concat(Sm(a)):[d,Sm(a)]:Sm(a):d,scopeId:l.scopeId,slotScopeIds:l.slotScopeIds,children:p,target:l.target,targetAnchor:l.targetAnchor,staticCount:l.staticCount,shapeFlag:l.shapeFlag,patchFlag:a&&l.type!==Pe?c===-1?16:c|16:c,dynamicProps:l.dynamicProps,dynamicChildren:l.dynamicChildren,appContext:l.appContext,dirs:l.dirs,transition:l.transition,component:l.component,suspense:l.suspense,ssContent:l.ssContent&&kr(l.ssContent),ssFallback:l.ssFallback&&kr(l.ssFallback),el:l.el,anchor:l.anchor,ctx:l.ctx,ce:l.ce}}function m(l=" ",a=0){return o(Dp,null,l,a)}function Sl(l,a){const t=o(Cm,null,l);return t.staticCount=a,t}function He(l="",a=!1){return a?(k(),Be(tl,null,l)):o(tl,null,l)}function Fl(l){return l==null||typeof l=="boolean"?o(tl):ns(l)?o(Pe,null,l.slice()):typeof l=="object"?si(l):o(Dp,null,String(l))}function si(l){return l.el===null&&l.patchFlag!==-1||l.memo?l:kr(l)}function cP(l,a){let t=0;const{shapeFlag:s}=l;if(a==null)a=null;else if(ns(a))t=16;else if(typeof a=="object")if(s&65){const d=a.default;d&&(d._c&&(d._d=!1),cP(l,d()),d._c&&(d._d=!0));return}else{t=32;const d=a._;!d&&!(OI in a)?a._ctx=Eo:d===3&&Eo&&(Eo.slots._===1?a._=1:(a._=2,l.patchFlag|=1024))}else ks(a)?(a={default:a,_ctx:Eo},t=32):(a=String(a),s&64?(t=16,a=[m(a)]):t=8);l.children=a,l.shapeFlag|=t}function ds(...l){const a={};for(let t=0;tHo||Eo;let rI,RT;{const l=Nj(),a=(t,s)=>{let d;return(d=l[t])||(d=l[t]=[]),d.push(s),c=>{d.length>1?d.forEach(p=>p(c)):d[0](c)}};rI=a("__VUE_INSTANCE_SETTERS__",t=>Ho=t),RT=a("__VUE_SSR_SETTERS__",t=>FI=t)}const Pp=l=>{const a=Ho;return rI(l),l.scope.on(),()=>{l.scope.off(),rI(a)}},gO=()=>{Ho&&Ho.scope.off(),rI(null)};function NH(l){return l.vnode.shapeFlag&4}let FI=!1;function vte(l,a=!1){a&&RT(a);const{props:t,children:s}=l.vnode,d=NH(l);Xee(l,t,d,a),ete(l,s);const c=d?hte(l,a):void 0;return a&&RT(!1),c}function hte(l,a){const t=l.type;l.accessCache=Object.create(null),l.proxy=VI(new Proxy(l.ctx,Hee));const{setup:s}=t;if(s){const d=l.setupContext=s.length>1?HH(l):null,c=Pp(l);cc();const p=ui(s,l,0,[l.props,d]);if(uc(),c(),Rj(p)){if(p.then(gO,gO),a)return p.then(g=>{yO(l,g,a)}).catch(g=>{TI(g,l,0)});l.asyncDep=p}else yO(l,p,a)}else jH(l,a)}function yO(l,a,t){ks(a)?l.type.__ssrInlineRender?l.ssrRender=a:l.render=a:Qs(a)&&(l.setupState=iH(a)),jH(l,t)}let bO;function jH(l,a,t){const s=l.type;if(!l.render){if(!a&&bO&&!s.render){const d=s.template||rP(l).template;if(d){const{isCustomElement:c,compilerOptions:p}=l.appContext.config,{delimiters:g,compilerOptions:_}=s,v=Ao(Ao({isCustomElement:c,delimiters:g},p),_);s.render=bO(d,v)}}l.render=s.render||Jn}{const d=Pp(l);cc();try{qee(l)}finally{uc(),d()}}}function fte(l){return l.attrsProxy||(l.attrsProxy=new Proxy(l.attrs,{get(a,t){return kn(l,"get","$attrs"),a[t]}}))}function HH(l){const a=t=>{l.exposed=t||{}};return{get attrs(){return fte(l)},slots:l.slots,emit:l.emit,expose:a}}function NI(l){if(l.exposed)return l.exposeProxy||(l.exposeProxy=new Proxy(iH(VI(l.exposed)),{get(a,t){if(t in a)return a[t];if(t in Qu)return Qu[t](l)},has(a,t){return t in a||t in Qu}}))}function gte(l,a=!0){return ks(l)?l.displayName||l.name:l.name||a&&l.__name}function yte(l){return ks(l)&&"__vccOpts"in l}const ae=(l,a)=>uee(l,a,FI);function Os(l,a,t){const s=arguments.length;return s===2?Qs(a)&&!ns(a)?lI(a)?o(l,null,[a]):o(l,a):o(l,null,a):(s>3?t=Array.prototype.slice.call(arguments,2):s===3&&lI(t)&&(t=[t]),o(l,a,t))}const bte="3.4.21";/** +* @vue/runtime-dom v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const wte="http://www.w3.org/2000/svg",kte="http://www.w3.org/1998/Math/MathML",oi=typeof document<"u"?document:null,wO=oi&&oi.createElement("template"),xte={insert:(l,a,t)=>{a.insertBefore(l,t||null)},remove:l=>{const a=l.parentNode;a&&a.removeChild(l)},createElement:(l,a,t,s)=>{const d=a==="svg"?oi.createElementNS(wte,l):a==="mathml"?oi.createElementNS(kte,l):oi.createElement(l,t?{is:t}:void 0);return l==="select"&&s&&s.multiple!=null&&d.setAttribute("multiple",s.multiple),d},createText:l=>oi.createTextNode(l),createComment:l=>oi.createComment(l),setText:(l,a)=>{l.nodeValue=a},setElementText:(l,a)=>{l.textContent=a},parentNode:l=>l.parentNode,nextSibling:l=>l.nextSibling,querySelector:l=>oi.querySelector(l),setScopeId(l,a){l.setAttribute(a,"")},insertStaticContent(l,a,t,s,d,c){const p=t?t.previousSibling:a.lastChild;if(d&&(d===c||d.nextSibling))for(;a.insertBefore(d.cloneNode(!0),t),!(d===c||!(d=d.nextSibling)););else{wO.innerHTML=s==="svg"?`${l}`:s==="mathml"?`${l}`:l;const g=wO.content;if(s==="svg"||s==="mathml"){const _=g.firstChild;for(;_.firstChild;)g.appendChild(_.firstChild);g.removeChild(_)}a.insertBefore(g,t)}return[p?p.nextSibling:a.firstChild,t?t.previousSibling:a.lastChild]}},zr="transition",Pu="animation",Zc=Symbol("_vtc"),Co=(l,{slots:a})=>Os(Tee,zH(l),a);Co.displayName="Transition";const qH={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},$te=Co.props=Ao({},bH,qH),Fi=(l,a=[])=>{ns(l)?l.forEach(t=>t(...a)):l&&l(...a)},kO=l=>l?ns(l)?l.some(a=>a.length>1):l.length>1:!1;function zH(l){const a={};for(const W in l)W in qH||(a[W]=l[W]);if(l.css===!1)return a;const{name:t="v",type:s,duration:d,enterFromClass:c=`${t}-enter-from`,enterActiveClass:p=`${t}-enter-active`,enterToClass:g=`${t}-enter-to`,appearFromClass:_=c,appearActiveClass:v=p,appearToClass:h=g,leaveFromClass:b=`${t}-leave-from`,leaveActiveClass:y=`${t}-leave-active`,leaveToClass:u=`${t}-leave-to`}=l,C=Cte(d),x=C&&C[0],z=C&&C[1],{onBeforeEnter:P,onEnter:F,onEnterCancelled:N,onLeave:M,onLeaveCancelled:S,onBeforeAppear:L=P,onAppear:E=F,onAppearCancelled:f=N}=a,T=(W,ie,ve)=>{Jr(W,ie?h:g),Jr(W,ie?v:p),ve&&ve()},H=(W,ie)=>{W._isLeaving=!1,Jr(W,b),Jr(W,u),Jr(W,y),ie&&ie()},O=W=>(ie,ve)=>{const de=W?E:F,re=()=>T(ie,W,ve);Fi(de,[ie,re]),xO(()=>{Jr(ie,W?_:c),_r(ie,W?h:g),kO(de)||$O(ie,s,x,re)})};return Ao(a,{onBeforeEnter(W){Fi(P,[W]),_r(W,c),_r(W,p)},onBeforeAppear(W){Fi(L,[W]),_r(W,_),_r(W,v)},onEnter:O(!1),onAppear:O(!0),onLeave(W,ie){W._isLeaving=!0;const ve=()=>H(W,ie);_r(W,b),GH(),_r(W,y),xO(()=>{W._isLeaving&&(Jr(W,b),_r(W,u),kO(M)||$O(W,s,z,ve))}),Fi(M,[W,ve])},onEnterCancelled(W){T(W,!1),Fi(N,[W])},onAppearCancelled(W){T(W,!0),Fi(f,[W])},onLeaveCancelled(W){H(W),Fi(S,[W])}})}function Cte(l){if(l==null)return null;if(Qs(l))return[MM(l.enter),MM(l.leave)];{const a=MM(l);return[a,a]}}function MM(l){return PJ(l)}function _r(l,a){a.split(/\s+/).forEach(t=>t&&l.classList.add(t)),(l[Zc]||(l[Zc]=new Set)).add(a)}function Jr(l,a){a.split(/\s+/).forEach(s=>s&&l.classList.remove(s));const t=l[Zc];t&&(t.delete(a),t.size||(l[Zc]=void 0))}function xO(l){requestAnimationFrame(()=>{requestAnimationFrame(l)})}let Ste=0;function $O(l,a,t,s){const d=l._endId=++Ste,c=()=>{d===l._endId&&s()};if(t)return setTimeout(c,t);const{type:p,timeout:g,propCount:_}=BH(l,a);if(!p)return s();const v=p+"end";let h=0;const b=()=>{l.removeEventListener(v,y),c()},y=u=>{u.target===l&&++h>=_&&b()};setTimeout(()=>{h<_&&b()},g+1),l.addEventListener(v,y)}function BH(l,a){const t=window.getComputedStyle(l),s=C=>(t[C]||"").split(", "),d=s(`${zr}Delay`),c=s(`${zr}Duration`),p=CO(d,c),g=s(`${Pu}Delay`),_=s(`${Pu}Duration`),v=CO(g,_);let h=null,b=0,y=0;a===zr?p>0&&(h=zr,b=p,y=c.length):a===Pu?v>0&&(h=Pu,b=v,y=_.length):(b=Math.max(p,v),h=b>0?p>v?zr:Pu:null,y=h?h===zr?c.length:_.length:0);const u=h===zr&&/\b(transform|all)(,|$)/.test(s(`${zr}Property`).toString());return{type:h,timeout:b,propCount:y,hasTransform:u}}function CO(l,a){for(;l.lengthSO(t)+SO(l[s])))}function SO(l){return l==="auto"?0:Number(l.slice(0,-1).replace(",","."))*1e3}function GH(){return document.body.offsetHeight}function Ete(l,a,t){const s=l[Zc];s&&(a=(a?[a,...s]:[...s]).join(" ")),a==null?l.removeAttribute("class"):t?l.setAttribute("class",a):l.className=a}const EO=Symbol("_vod"),Ate=Symbol("_vsh"),Lte=Symbol(""),Ite=/(^|;)\s*display\s*:/;function Vte(l,a,t){const s=l.style,d=wo(t);let c=!1;if(t&&!d){if(a)if(wo(a))for(const p of a.split(";")){const g=p.slice(0,p.indexOf(":")).trim();t[g]==null&&Em(s,g,"")}else for(const p in a)t[p]==null&&Em(s,p,"");for(const p in t)p==="display"&&(c=!0),Em(s,p,t[p])}else if(d){if(a!==t){const p=s[Lte];p&&(t+=";"+p),s.cssText=t,c=Ite.test(t)}}else a&&l.removeAttribute("style");EO in l&&(l[EO]=c?s.display:"",l[Ate]&&(s.display="none"))}const AO=/\s*!important$/;function Em(l,a,t){if(ns(t))t.forEach(s=>Em(l,a,s));else if(t==null&&(t=""),a.startsWith("--"))l.setProperty(a,t);else{const s=Mte(l,a);AO.test(t)?l.setProperty(dc(s),t.replace(AO,""),"important"):l[s]=t}}const LO=["Webkit","Moz","ms"],TM={};function Mte(l,a){const t=TM[a];if(t)return t;let s=Gl(a);if(s!=="filter"&&s in l)return TM[a]=s;s=LI(s);for(let d=0;dDM||(Ote.then(()=>DM=0),DM=Date.now());function Nte(l,a){const t=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=t.attached)return;el(jte(s,t.value),a,5,[s])};return t.value=l,t.attached=Fte(),t}function jte(l,a){if(ns(a)){const t=l.stopImmediatePropagation;return l.stopImmediatePropagation=()=>{t.call(l),l._stopped=!0},a.map(s=>d=>!d._stopped&&s&&s(d))}else return a}const TO=l=>l.charCodeAt(0)===111&&l.charCodeAt(1)===110&&l.charCodeAt(2)>96&&l.charCodeAt(2)<123,Hte=(l,a,t,s,d,c,p,g,_)=>{const v=d==="svg";a==="class"?Ete(l,s,v):a==="style"?Vte(l,t,s):EI(a)?zD(a)||Ute(l,a,t,s,p):(a[0]==="."?(a=a.slice(1),!0):a[0]==="^"?(a=a.slice(1),!1):qte(l,a,s,v))?Dte(l,a,s,c,p,g,_):(a==="true-value"?l._trueValue=s:a==="false-value"&&(l._falseValue=s),Tte(l,a,s,v))};function qte(l,a,t,s){if(s)return!!(a==="innerHTML"||a==="textContent"||a in l&&TO(a)&&ks(t));if(a==="spellcheck"||a==="draggable"||a==="translate"||a==="form"||a==="list"&&l.tagName==="INPUT"||a==="type"&&l.tagName==="TEXTAREA")return!1;if(a==="width"||a==="height"){const d=l.tagName;if(d==="IMG"||d==="VIDEO"||d==="CANVAS"||d==="SOURCE")return!1}return TO(a)&&wo(t)?!1:a in l}const WH=new WeakMap,ZH=new WeakMap,iI=Symbol("_moveCb"),DO=Symbol("_enterCb"),KH={name:"TransitionGroup",props:Ao({},$te,{tag:String,moveClass:String}),setup(l,{slots:a}){const t=xr(),s=yH();let d,c;return $H(()=>{if(!d.length)return;const p=l.moveClass||`${l.name||"v"}-move`;if(!Kte(d[0].el,t.vnode.el,p))return;d.forEach(Gte),d.forEach(Wte);const g=d.filter(Zte);GH(),g.forEach(_=>{const v=_.el,h=v.style;_r(v,p),h.transform=h.webkitTransform=h.transitionDuration="";const b=v[iI]=y=>{y&&y.target!==v||(!y||/transform$/.test(y.propertyName))&&(v.removeEventListener("transitionend",b),v[iI]=null,Jr(v,p))};v.addEventListener("transitionend",b)})}),()=>{const p=Ms(l),g=zH(p);let _=p.tag||Pe;d=c,c=a.default?lP(a.default()):[];for(let v=0;vdelete l.mode;KH.props;const Bte=KH;function Gte(l){const a=l.el;a[iI]&&a[iI](),a[DO]&&a[DO]()}function Wte(l){ZH.set(l,l.el.getBoundingClientRect())}function Zte(l){const a=WH.get(l),t=ZH.get(l),s=a.left-t.left,d=a.top-t.top;if(s||d){const c=l.el.style;return c.transform=c.webkitTransform=`translate(${s}px,${d}px)`,c.transitionDuration="0s",l}}function Kte(l,a,t){const s=l.cloneNode(),d=l[Zc];d&&d.forEach(g=>{g.split(/\s+/).forEach(_=>_&&s.classList.remove(_))}),t.split(/\s+/).forEach(g=>g&&s.classList.add(g)),s.style.display="none";const c=a.nodeType===1?a:a.parentNode;c.appendChild(s);const{hasTransform:p}=BH(s);return c.removeChild(s),p}const vi=l=>{const a=l.props["onUpdate:modelValue"]||!1;return ns(a)?t=>xm(a,t):a};function Yte(l){l.target.composing=!0}function PO(l){const a=l.target;a.composing&&(a.composing=!1,a.dispatchEvent(new Event("input")))}const al=Symbol("_assign"),Wl={created(l,{modifiers:{lazy:a,trim:t,number:s}},d){l[al]=vi(d);const c=s||d.props&&d.props.type==="number";vr(l,a?"change":"input",p=>{if(p.target.composing)return;let g=l.value;t&&(g=g.trim()),c&&(g=up(g)),l[al](g)}),t&&vr(l,"change",()=>{l.value=l.value.trim()}),a||(vr(l,"compositionstart",Yte),vr(l,"compositionend",PO),vr(l,"change",PO))},mounted(l,{value:a}){l.value=a??""},beforeUpdate(l,{value:a,modifiers:{lazy:t,trim:s,number:d}},c){if(l[al]=vi(c),l.composing)return;const p=d||l.type==="number"?up(l.value):l.value,g=a??"";p!==g&&(document.activeElement===l&&l.type!=="range"&&(t||s&&l.value.trim()===g)||(l.value=g))}},Xte={deep:!0,created(l,a,t){l[al]=vi(t),vr(l,"change",()=>{const s=l._modelValue,d=Kc(l),c=l.checked,p=l[al];if(ns(s)){const g=WD(s,d),_=g!==-1;if(c&&!_)p(s.concat(d));else if(!c&&_){const v=[...s];v.splice(g,1),p(v)}}else if(iu(s)){const g=new Set(s);c?g.add(d):g.delete(d),p(g)}else p(XH(l,c))})},mounted:UO,beforeUpdate(l,a,t){l[al]=vi(t),UO(l,a,t)}};function UO(l,{value:a,oldValue:t},s){l._modelValue=a,ns(a)?l.checked=WD(a,s.props.value)>-1:iu(a)?l.checked=a.has(s.props.value):a!==t&&(l.checked=lc(a,XH(l,!0)))}const Qte={created(l,{value:a},t){l.checked=lc(a,t.props.value),l[al]=vi(t),vr(l,"change",()=>{l[al](Kc(l))})},beforeUpdate(l,{value:a,oldValue:t},s){l[al]=vi(s),a!==t&&(l.checked=lc(a,s.props.value))}},YH={deep:!0,created(l,{value:a,modifiers:{number:t}},s){const d=iu(a);vr(l,"change",()=>{const c=Array.prototype.filter.call(l.options,p=>p.selected).map(p=>t?up(Kc(p)):Kc(p));l[al](l.multiple?d?new Set(c):c:c[0]),l._assigning=!0,vs(()=>{l._assigning=!1})}),l[al]=vi(s)},mounted(l,{value:a,modifiers:{number:t}}){RO(l,a,t)},beforeUpdate(l,a,t){l[al]=vi(t)},updated(l,{value:a,modifiers:{number:t}}){l._assigning||RO(l,a,t)}};function RO(l,a,t){const s=l.multiple,d=ns(a);if(!(s&&!d&&!iu(a))){for(let c=0,p=l.options.length;c-1}else g.selected=a.has(_);else if(lc(Kc(g),a)){l.selectedIndex!==c&&(l.selectedIndex=c);return}}!s&&l.selectedIndex!==-1&&(l.selectedIndex=-1)}}function Kc(l){return"_value"in l?l._value:l.value}function XH(l,a){const t=a?"_trueValue":"_falseValue";return t in l?l[t]:a}const uP={created(l,a,t){dm(l,a,t,null,"created")},mounted(l,a,t){dm(l,a,t,null,"mounted")},beforeUpdate(l,a,t,s){dm(l,a,t,s,"beforeUpdate")},updated(l,a,t,s){dm(l,a,t,s,"updated")}};function Jte(l,a){switch(l){case"SELECT":return YH;case"TEXTAREA":return Wl;default:switch(a){case"checkbox":return Xte;case"radio":return Qte;default:return Wl}}}function dm(l,a,t,s,d){const p=Jte(l.tagName,t.props&&t.props.type)[d];p&&p(l,a,t,s)}const eae=["ctrl","shift","alt","meta"],tae={stop:l=>l.stopPropagation(),prevent:l=>l.preventDefault(),self:l=>l.target!==l.currentTarget,ctrl:l=>!l.ctrlKey,shift:l=>!l.shiftKey,alt:l=>!l.altKey,meta:l=>!l.metaKey,left:l=>"button"in l&&l.button!==0,middle:l=>"button"in l&&l.button!==1,right:l=>"button"in l&&l.button!==2,exact:(l,a)=>eae.some(t=>l[`${t}Key`]&&!a.includes(t))},da=(l,a)=>{const t=l._withMods||(l._withMods={}),s=a.join(".");return t[s]||(t[s]=(d,...c)=>{for(let p=0;p{const t=l._withKeys||(l._withKeys={}),s=a.join(".");return t[s]||(t[s]=d=>{if(!("key"in d))return;const c=dc(d.key);if(a.some(p=>p===c||aae[p]===c))return l(d)})},sae=Ao({patchProp:Hte},xte);let OO;function oae(){return OO||(OO=ate(sae))}const nae=(...l)=>{const a=oae().createApp(...l),{mount:t}=a;return a.mount=s=>{const d=rae(s);if(!d)return;const c=a._component;!ks(c)&&!c.render&&!c.template&&(c.template=d.innerHTML),d.innerHTML="";const p=t(d,!1,lae(d));return d instanceof Element&&(d.removeAttribute("v-cloak"),d.setAttribute("data-v-app","")),p},a};function lae(l){if(l instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&l instanceof MathMLElement)return"mathml"}function rae(l){return wo(l)?document.querySelector(l):l}var iae=!1;/*! + * pinia v2.1.7 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */let QH;const jI=l=>QH=l,JH=Symbol();function OT(l){return l&&typeof l=="object"&&Object.prototype.toString.call(l)==="[object Object]"&&typeof l.toJSON!="function"}var tp;(function(l){l.direct="direct",l.patchObject="patch object",l.patchFunction="patch function"})(tp||(tp={}));function dae(){const l=ZD(!0),a=l.run(()=>$({}));let t=[],s=[];const d=VI({install(c){jI(d),d._a=c,c.provide(JH,d),c.config.globalProperties.$pinia=d,s.forEach(p=>t.push(p)),s=[]},use(c){return!this._a&&!iae?s.push(c):t.push(c),this},_p:t,_a:null,_e:l,_s:new Map,state:a});return d}const eq=()=>{};function FO(l,a,t,s=eq){l.push(a);const d=()=>{const c=l.indexOf(a);c>-1&&(l.splice(c,1),s())};return!t&&zj()&&zJ(d),d}function Dc(l,...a){l.slice().forEach(t=>{t(...a)})}const cae=l=>l();function FT(l,a){l instanceof Map&&a instanceof Map&&a.forEach((t,s)=>l.set(s,t)),l instanceof Set&&a instanceof Set&&a.forEach(l.add,l);for(const t in a){if(!a.hasOwnProperty(t))continue;const s=a[t],d=l[t];OT(d)&&OT(s)&&l.hasOwnProperty(t)&&!ko(s)&&!br(s)?l[t]=FT(d,s):l[t]=s}return l}const uae=Symbol();function pae(l){return!OT(l)||!l.hasOwnProperty(uae)}const{assign:ei}=Object;function _ae(l){return!!(ko(l)&&l.effect)}function mae(l,a,t,s){const{state:d,actions:c,getters:p}=a,g=t.state.value[l];let _;function v(){g||(t.state.value[l]=d?d():{});const h=mee(t.state.value[l]);return ei(h,c,Object.keys(p||{}).reduce((b,y)=>(b[y]=VI(ae(()=>{jI(t);const u=t._s.get(l);return p[y].call(u,u)})),b),{}))}return _=tq(l,v,a,t,s,!0),_}function tq(l,a,t={},s,d,c){let p;const g=ei({actions:{}},t),_={deep:!0};let v,h,b=[],y=[],u;const C=s.state.value[l];!c&&!C&&(s.state.value[l]={}),$({});let x;function z(f){let T;v=h=!1,typeof f=="function"?(f(s.state.value[l]),T={type:tp.patchFunction,storeId:l,events:u}):(FT(s.state.value[l],f),T={type:tp.patchObject,payload:f,storeId:l,events:u});const H=x=Symbol();vs().then(()=>{x===H&&(v=!0)}),h=!0,Dc(b,T,s.state.value[l])}const P=c?function(){const{state:T}=t,H=T?T():{};this.$patch(O=>{ei(O,H)})}:eq;function F(){p.stop(),b=[],y=[],s._s.delete(l)}function N(f,T){return function(){jI(s);const H=Array.from(arguments),O=[],W=[];function ie(re){O.push(re)}function ve(re){W.push(re)}Dc(y,{args:H,name:f,store:S,after:ie,onError:ve});let de;try{de=T.apply(this&&this.$id===l?this:S,H)}catch(re){throw Dc(W,re),re}return de instanceof Promise?de.then(re=>(Dc(O,re),re)).catch(re=>(Dc(W,re),Promise.reject(re))):(Dc(O,de),de)}}const M={_p:s,$id:l,$onAction:FO.bind(null,y),$patch:z,$reset:P,$subscribe(f,T={}){const H=FO(b,f,T.detached,()=>O()),O=p.run(()=>ra(()=>s.state.value[l],W=>{(T.flush==="sync"?h:v)&&f({storeId:l,type:tp.direct,events:u},W)},ei({},_,T)));return H},$dispose:F},S=Mo(M);s._s.set(l,S);const E=(s._a&&s._a.runWithContext||cae)(()=>s._e.run(()=>(p=ZD()).run(a)));for(const f in E){const T=E[f];if(ko(T)&&!_ae(T)||br(T))c||(C&&pae(T)&&(ko(T)?T.value=C[f]:FT(T,C[f])),s.state.value[l][f]=T);else if(typeof T=="function"){const H=N(f,T);E[f]=H,g.actions[f]=T}}return ei(S,E),ei(Ms(S),E),Object.defineProperty(S,"$state",{get:()=>s.state.value[l],set:f=>{z(T=>{ei(T,f)})}}),s._p.forEach(f=>{ei(S,p.run(()=>f({store:S,app:s._a,pinia:s,options:g})))}),C&&c&&t.hydrate&&t.hydrate(S.$state,C),v=!0,h=!0,S}function wi(l,a,t){let s,d;const c=typeof a=="function";typeof l=="string"?(s=l,d=c?t:a):(d=l,s=l.id);function p(g,_){const v=Yee();return g=g||(v?Ba(JH,null):null),g&&jI(g),g=QH,g._s.has(s)||(c?tq(s,a,d,g):mae(s,d,g)),g._s.get(s)}return p.$id=s,p}function vae(l){{l=Ms(l);const a={};for(const t in l){const s=l[t];(ko(s)||br(s))&&(a[t]=ho(l,t))}return a}}const du=(l,a)=>{const t=l.__vccOpts||l;for(const[s,d]of a)t[s]=d;return t},hae={};function fae(l,a){const t=Ra("RouterView");return k(),Be(t)}const gae=du(hae,[["render",fae]]);/*! + * vue-router v4.3.0 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */const Pc=typeof document<"u";function yae(l){return l.__esModule||l[Symbol.toStringTag]==="Module"}const Ws=Object.assign;function PM(l,a){const t={};for(const s in a){const d=a[s];t[s]=$l(d)?d.map(l):l(d)}return t}const ap=()=>{},$l=Array.isArray,aq=/#/g,bae=/&/g,wae=/\//g,kae=/=/g,xae=/\?/g,sq=/\+/g,$ae=/%5B/g,Cae=/%5D/g,oq=/%5E/g,Sae=/%60/g,nq=/%7B/g,Eae=/%7C/g,lq=/%7D/g,Aae=/%20/g;function pP(l){return encodeURI(""+l).replace(Eae,"|").replace($ae,"[").replace(Cae,"]")}function Lae(l){return pP(l).replace(nq,"{").replace(lq,"}").replace(oq,"^")}function NT(l){return pP(l).replace(sq,"%2B").replace(Aae,"+").replace(aq,"%23").replace(bae,"%26").replace(Sae,"`").replace(nq,"{").replace(lq,"}").replace(oq,"^")}function Iae(l){return NT(l).replace(kae,"%3D")}function Vae(l){return pP(l).replace(aq,"%23").replace(xae,"%3F")}function Mae(l){return l==null?"":Vae(l).replace(wae,"%2F")}function gp(l){try{return decodeURIComponent(""+l)}catch{}return""+l}const Tae=/\/$/,Dae=l=>l.replace(Tae,"");function UM(l,a,t="/"){let s,d={},c="",p="";const g=a.indexOf("#");let _=a.indexOf("?");return g<_&&g>=0&&(_=-1),_>-1&&(s=a.slice(0,_),c=a.slice(_+1,g>-1?g:a.length),d=l(c)),g>-1&&(s=s||a.slice(0,g),p=a.slice(g,a.length)),s=Oae(s??a,t),{fullPath:s+(c&&"?")+c+p,path:s,query:d,hash:gp(p)}}function Pae(l,a){const t=a.query?l(a.query):"";return a.path+(t&&"?")+t+(a.hash||"")}function NO(l,a){return!a||!l.toLowerCase().startsWith(a.toLowerCase())?l:l.slice(a.length)||"/"}function Uae(l,a,t){const s=a.matched.length-1,d=t.matched.length-1;return s>-1&&s===d&&Yc(a.matched[s],t.matched[d])&&rq(a.params,t.params)&&l(a.query)===l(t.query)&&a.hash===t.hash}function Yc(l,a){return(l.aliasOf||l)===(a.aliasOf||a)}function rq(l,a){if(Object.keys(l).length!==Object.keys(a).length)return!1;for(const t in l)if(!Rae(l[t],a[t]))return!1;return!0}function Rae(l,a){return $l(l)?jO(l,a):$l(a)?jO(a,l):l===a}function jO(l,a){return $l(a)?l.length===a.length&&l.every((t,s)=>t===a[s]):l.length===1&&l[0]===a}function Oae(l,a){if(l.startsWith("/"))return l;if(!l)return a;const t=a.split("/"),s=l.split("/"),d=s[s.length-1];(d===".."||d===".")&&s.push("");let c=t.length-1,p,g;for(p=0;p1&&c--;else break;return t.slice(0,c).join("/")+"/"+s.slice(p).join("/")}var yp;(function(l){l.pop="pop",l.push="push"})(yp||(yp={}));var sp;(function(l){l.back="back",l.forward="forward",l.unknown=""})(sp||(sp={}));function Fae(l){if(!l)if(Pc){const a=document.querySelector("base");l=a&&a.getAttribute("href")||"/",l=l.replace(/^\w+:\/\/[^\/]+/,"")}else l="/";return l[0]!=="/"&&l[0]!=="#"&&(l="/"+l),Dae(l)}const Nae=/^[^#]+#/;function jae(l,a){return l.replace(Nae,"#")+a}function Hae(l,a){const t=document.documentElement.getBoundingClientRect(),s=l.getBoundingClientRect();return{behavior:a.behavior,left:s.left-t.left-(a.left||0),top:s.top-t.top-(a.top||0)}}const HI=()=>({left:window.scrollX,top:window.scrollY});function qae(l){let a;if("el"in l){const t=l.el,s=typeof t=="string"&&t.startsWith("#"),d=typeof t=="string"?s?document.getElementById(t.slice(1)):document.querySelector(t):t;if(!d)return;a=Hae(d,l)}else a=l;"scrollBehavior"in document.documentElement.style?window.scrollTo(a):window.scrollTo(a.left!=null?a.left:window.scrollX,a.top!=null?a.top:window.scrollY)}function HO(l,a){return(history.state?history.state.position-a:-1)+l}const jT=new Map;function zae(l,a){jT.set(l,a)}function Bae(l){const a=jT.get(l);return jT.delete(l),a}let Gae=()=>location.protocol+"//"+location.host;function iq(l,a){const{pathname:t,search:s,hash:d}=a,c=l.indexOf("#");if(c>-1){let g=d.includes(l.slice(c))?l.slice(c).length:1,_=d.slice(g);return _[0]!=="/"&&(_="/"+_),NO(_,"")}return NO(t,l)+s+d}function Wae(l,a,t,s){let d=[],c=[],p=null;const g=({state:y})=>{const u=iq(l,location),C=t.value,x=a.value;let z=0;if(y){if(t.value=u,a.value=y,p&&p===C){p=null;return}z=x?y.position-x.position:0}else s(u);d.forEach(P=>{P(t.value,C,{delta:z,type:yp.pop,direction:z?z>0?sp.forward:sp.back:sp.unknown})})};function _(){p=t.value}function v(y){d.push(y);const u=()=>{const C=d.indexOf(y);C>-1&&d.splice(C,1)};return c.push(u),u}function h(){const{history:y}=window;y.state&&y.replaceState(Ws({},y.state,{scroll:HI()}),"")}function b(){for(const y of c)y();c=[],window.removeEventListener("popstate",g),window.removeEventListener("beforeunload",h)}return window.addEventListener("popstate",g),window.addEventListener("beforeunload",h,{passive:!0}),{pauseListeners:_,listen:v,destroy:b}}function qO(l,a,t,s=!1,d=!1){return{back:l,current:a,forward:t,replaced:s,position:window.history.length,scroll:d?HI():null}}function Zae(l){const{history:a,location:t}=window,s={value:iq(l,t)},d={value:a.state};d.value||c(s.value,{back:null,current:s.value,forward:null,position:a.length-1,replaced:!0,scroll:null},!0);function c(_,v,h){const b=l.indexOf("#"),y=b>-1?(t.host&&document.querySelector("base")?l:l.slice(b))+_:Gae()+l+_;try{a[h?"replaceState":"pushState"](v,"",y),d.value=v}catch(u){console.error(u),t[h?"replace":"assign"](y)}}function p(_,v){const h=Ws({},a.state,qO(d.value.back,_,d.value.forward,!0),v,{position:d.value.position});c(_,h,!0),s.value=_}function g(_,v){const h=Ws({},d.value,a.state,{forward:_,scroll:HI()});c(h.current,h,!0);const b=Ws({},qO(s.value,_,null),{position:h.position+1},v);c(_,b,!1),s.value=_}return{location:s,state:d,push:g,replace:p}}function Kae(l){l=Fae(l);const a=Zae(l),t=Wae(l,a.state,a.location,a.replace);function s(c,p=!0){p||t.pauseListeners(),history.go(c)}const d=Ws({location:"",base:l,go:s,createHref:jae.bind(null,l)},a,t);return Object.defineProperty(d,"location",{enumerable:!0,get:()=>a.location.value}),Object.defineProperty(d,"state",{enumerable:!0,get:()=>a.state.value}),d}function Yae(l){return typeof l=="string"||l&&typeof l=="object"}function dq(l){return typeof l=="string"||typeof l=="symbol"}const Br={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},cq=Symbol("");var zO;(function(l){l[l.aborted=4]="aborted",l[l.cancelled=8]="cancelled",l[l.duplicated=16]="duplicated"})(zO||(zO={}));function Xc(l,a){return Ws(new Error,{type:l,[cq]:!0},a)}function dr(l,a){return l instanceof Error&&cq in l&&(a==null||!!(l.type&a))}const BO="[^/]+?",Xae={sensitive:!1,strict:!1,start:!0,end:!0},Qae=/[.+*?^${}()[\]/\\]/g;function Jae(l,a){const t=Ws({},Xae,a),s=[];let d=t.start?"^":"";const c=[];for(const v of l){const h=v.length?[]:[90];t.strict&&!v.length&&(d+="/");for(let b=0;ba.length?a.length===1&&a[0]===80?1:-1:0}function tse(l,a){let t=0;const s=l.score,d=a.score;for(;t0&&a[a.length-1]<0}const ase={type:0,value:""},sse=/[a-zA-Z0-9_]/;function ose(l){if(!l)return[[]];if(l==="/")return[[ase]];if(!l.startsWith("/"))throw new Error(`Invalid path "${l}"`);function a(u){throw new Error(`ERR (${t})/"${v}": ${u}`)}let t=0,s=t;const d=[];let c;function p(){c&&d.push(c),c=[]}let g=0,_,v="",h="";function b(){v&&(t===0?c.push({type:0,value:v}):t===1||t===2||t===3?(c.length>1&&(_==="*"||_==="+")&&a(`A repeatable param (${v}) must be alone in its segment. eg: '/:ids+.`),c.push({type:1,value:v,regexp:h,repeatable:_==="*"||_==="+",optional:_==="*"||_==="?"})):a("Invalid state to consume buffer"),v="")}function y(){v+=_}for(;g{p(F)}:ap}function p(h){if(dq(h)){const b=s.get(h);b&&(s.delete(h),t.splice(t.indexOf(b),1),b.children.forEach(p),b.alias.forEach(p))}else{const b=t.indexOf(h);b>-1&&(t.splice(b,1),h.record.name&&s.delete(h.record.name),h.children.forEach(p),h.alias.forEach(p))}}function g(){return t}function _(h){let b=0;for(;b=0&&(h.record.path!==t[b].record.path||!uq(h,t[b]));)b++;t.splice(b,0,h),h.record.name&&!ZO(h)&&s.set(h.record.name,h)}function v(h,b){let y,u={},C,x;if("name"in h&&h.name){if(y=s.get(h.name),!y)throw Xc(1,{location:h});x=y.record.name,u=Ws(WO(b.params,y.keys.filter(F=>!F.optional).concat(y.parent?y.parent.keys.filter(F=>F.optional):[]).map(F=>F.name)),h.params&&WO(h.params,y.keys.map(F=>F.name))),C=y.stringify(u)}else if(h.path!=null)C=h.path,y=t.find(F=>F.re.test(C)),y&&(u=y.parse(C),x=y.record.name);else{if(y=b.name?s.get(b.name):t.find(F=>F.re.test(b.path)),!y)throw Xc(1,{location:h,currentLocation:b});x=y.record.name,u=Ws({},b.params,h.params),C=y.stringify(u)}const z=[];let P=y;for(;P;)z.unshift(P.record),P=P.parent;return{name:x,path:C,params:u,matched:z,meta:dse(z)}}return l.forEach(h=>c(h)),{addRoute:c,resolve:v,removeRoute:p,getRoutes:g,getRecordMatcher:d}}function WO(l,a){const t={};for(const s of a)s in l&&(t[s]=l[s]);return t}function rse(l){return{path:l.path,redirect:l.redirect,name:l.name,meta:l.meta||{},aliasOf:void 0,beforeEnter:l.beforeEnter,props:ise(l),children:l.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in l?l.components||null:l.component&&{default:l.component}}}function ise(l){const a={},t=l.props||!1;if("component"in l)a.default=t;else for(const s in l.components)a[s]=typeof t=="object"?t[s]:t;return a}function ZO(l){for(;l;){if(l.record.aliasOf)return!0;l=l.parent}return!1}function dse(l){return l.reduce((a,t)=>Ws(a,t.meta),{})}function KO(l,a){const t={};for(const s in l)t[s]=s in a?a[s]:l[s];return t}function uq(l,a){return a.children.some(t=>t===l||uq(l,t))}function cse(l){const a={};if(l===""||l==="?")return a;const s=(l[0]==="?"?l.slice(1):l).split("&");for(let d=0;dc&&NT(c)):[s&&NT(s)]).forEach(c=>{c!==void 0&&(a+=(a.length?"&":"")+t,c!=null&&(a+="="+c))})}return a}function use(l){const a={};for(const t in l){const s=l[t];s!==void 0&&(a[t]=$l(s)?s.map(d=>d==null?null:""+d):s==null?s:""+s)}return a}const pse=Symbol(""),XO=Symbol(""),qI=Symbol(""),_P=Symbol(""),HT=Symbol("");function Uu(){let l=[];function a(s){return l.push(s),()=>{const d=l.indexOf(s);d>-1&&l.splice(d,1)}}function t(){l=[]}return{add:a,list:()=>l.slice(),reset:t}}function ni(l,a,t,s,d,c=p=>p()){const p=s&&(s.enterCallbacks[d]=s.enterCallbacks[d]||[]);return()=>new Promise((g,_)=>{const v=y=>{y===!1?_(Xc(4,{from:t,to:a})):y instanceof Error?_(y):Yae(y)?_(Xc(2,{from:a,to:y})):(p&&s.enterCallbacks[d]===p&&typeof y=="function"&&p.push(y),g())},h=c(()=>l.call(s&&s.instances[d],a,t,v));let b=Promise.resolve(h);l.length<3&&(b=b.then(v)),b.catch(y=>_(y))})}function RM(l,a,t,s,d=c=>c()){const c=[];for(const p of l)for(const g in p.components){let _=p.components[g];if(!(a!=="beforeRouteEnter"&&!p.instances[g]))if(_se(_)){const h=(_.__vccOpts||_)[a];h&&c.push(ni(h,t,s,p,g,d))}else{let v=_();c.push(()=>v.then(h=>{if(!h)return Promise.reject(new Error(`Couldn't resolve component "${g}" at "${p.path}"`));const b=yae(h)?h.default:h;p.components[g]=b;const u=(b.__vccOpts||b)[a];return u&&ni(u,t,s,p,g,d)()}))}}return c}function _se(l){return typeof l=="object"||"displayName"in l||"props"in l||"__vccOpts"in l}function QO(l){const a=Ba(qI),t=Ba(_P),s=ae(()=>a.resolve(e(l.to))),d=ae(()=>{const{matched:_}=s.value,{length:v}=_,h=_[v-1],b=t.matched;if(!h||!b.length)return-1;const y=b.findIndex(Yc.bind(null,h));if(y>-1)return y;const u=JO(_[v-2]);return v>1&&JO(h)===u&&b[b.length-1].path!==u?b.findIndex(Yc.bind(null,_[v-2])):y}),c=ae(()=>d.value>-1&&fse(t.params,s.value.params)),p=ae(()=>d.value>-1&&d.value===t.matched.length-1&&rq(t.params,s.value.params));function g(_={}){return hse(_)?a[e(l.replace)?"replace":"push"](e(l.to)).catch(ap):Promise.resolve()}return{route:s,href:ae(()=>s.value.href),isActive:c,isExactActive:p,navigate:g}}const mse=lt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:QO,setup(l,{slots:a}){const t=Mo(QO(l)),{options:s}=Ba(qI),d=ae(()=>({[eF(l.activeClass,s.linkActiveClass,"router-link-active")]:t.isActive,[eF(l.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:t.isExactActive}));return()=>{const c=a.default&&a.default(t);return l.custom?c:Os("a",{"aria-current":t.isExactActive?l.ariaCurrentValue:null,href:t.href,onClick:t.navigate,class:d.value},c)}}}),vse=mse;function hse(l){if(!(l.metaKey||l.altKey||l.ctrlKey||l.shiftKey)&&!l.defaultPrevented&&!(l.button!==void 0&&l.button!==0)){if(l.currentTarget&&l.currentTarget.getAttribute){const a=l.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(a))return}return l.preventDefault&&l.preventDefault(),!0}}function fse(l,a){for(const t in a){const s=a[t],d=l[t];if(typeof s=="string"){if(s!==d)return!1}else if(!$l(d)||d.length!==s.length||s.some((c,p)=>c!==d[p]))return!1}return!0}function JO(l){return l?l.aliasOf?l.aliasOf.path:l.path:""}const eF=(l,a,t)=>l??a??t,gse=lt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(l,{attrs:a,slots:t}){const s=Ba(HT),d=ae(()=>l.route||s.value),c=Ba(XO,0),p=ae(()=>{let v=e(c);const{matched:h}=d.value;let b;for(;(b=h[v])&&!b.components;)v++;return v}),g=ae(()=>d.value.matched[p.value]);ka(XO,ae(()=>p.value+1)),ka(pse,g),ka(HT,d);const _=$();return ra(()=>[_.value,g.value,l.name],([v,h,b],[y,u,C])=>{h&&(h.instances[b]=v,u&&u!==h&&v&&v===y&&(h.leaveGuards.size||(h.leaveGuards=u.leaveGuards),h.updateGuards.size||(h.updateGuards=u.updateGuards))),v&&h&&(!u||!Yc(h,u)||!y)&&(h.enterCallbacks[b]||[]).forEach(x=>x(v))},{flush:"post"}),()=>{const v=d.value,h=l.name,b=g.value,y=b&&b.components[h];if(!y)return tF(t.default,{Component:y,route:v});const u=b.props[h],C=u?u===!0?v.params:typeof u=="function"?u(v):u:null,z=Os(y,Ws({},C,a,{onVnodeUnmounted:P=>{P.component.isUnmounted&&(b.instances[h]=null)},ref:_}));return tF(t.default,{Component:z,route:v})||z}}});function tF(l,a){if(!l)return null;const t=l(a);return t.length===1?t[0]:t}const yse=gse;function bse(l){const a=lse(l.routes,l),t=l.parseQuery||cse,s=l.stringifyQuery||YO,d=l.history,c=Uu(),p=Uu(),g=Uu(),_=MI(Br);let v=Br;Pc&&l.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const h=PM.bind(null,me=>""+me),b=PM.bind(null,Mae),y=PM.bind(null,gp);function u(me,ce){let G,q;return dq(me)?(G=a.getRecordMatcher(me),q=ce):q=me,a.addRoute(q,G)}function C(me){const ce=a.getRecordMatcher(me);ce&&a.removeRoute(ce)}function x(){return a.getRoutes().map(me=>me.record)}function z(me){return!!a.getRecordMatcher(me)}function P(me,ce){if(ce=Ws({},ce||_.value),typeof me=="string"){const U=UM(t,me,ce.path),j=a.resolve({path:U.path},ce),oe=d.createHref(U.fullPath);return Ws(U,j,{params:y(j.params),hash:gp(U.hash),redirectedFrom:void 0,href:oe})}let G;if(me.path!=null)G=Ws({},me,{path:UM(t,me.path,ce.path).path});else{const U=Ws({},me.params);for(const j in U)U[j]==null&&delete U[j];G=Ws({},me,{params:b(U)}),ce.params=b(ce.params)}const q=a.resolve(G,ce),te=me.hash||"";q.params=h(y(q.params));const _e=Pae(s,Ws({},me,{hash:Lae(te),path:q.path})),Y=d.createHref(_e);return Ws({fullPath:_e,hash:te,query:s===YO?use(me.query):me.query||{}},q,{redirectedFrom:void 0,href:Y})}function F(me){return typeof me=="string"?UM(t,me,_.value.path):Ws({},me)}function N(me,ce){if(v!==me)return Xc(8,{from:ce,to:me})}function M(me){return E(me)}function S(me){return M(Ws(F(me),{replace:!0}))}function L(me){const ce=me.matched[me.matched.length-1];if(ce&&ce.redirect){const{redirect:G}=ce;let q=typeof G=="function"?G(me):G;return typeof q=="string"&&(q=q.includes("?")||q.includes("#")?q=F(q):{path:q},q.params={}),Ws({query:me.query,hash:me.hash,params:q.path!=null?{}:me.params},q)}}function E(me,ce){const G=v=P(me),q=_.value,te=me.state,_e=me.force,Y=me.replace===!0,U=L(G);if(U)return E(Ws(F(U),{state:typeof U=="object"?Ws({},te,U.state):te,force:_e,replace:Y}),ce||G);const j=G;j.redirectedFrom=ce;let oe;return!_e&&Uae(s,q,G)&&(oe=Xc(16,{to:j,from:q}),ke(q,q,!0,!1)),(oe?Promise.resolve(oe):H(j,q)).catch(Z=>dr(Z)?dr(Z,2)?Z:ue(Z):Q(Z,j,q)).then(Z=>{if(Z){if(dr(Z,2))return E(Ws({replace:Y},F(Z.to),{state:typeof Z.to=="object"?Ws({},te,Z.to.state):te,force:_e}),ce||j)}else Z=W(j,q,!0,Y,te);return O(j,q,Z),Z})}function f(me,ce){const G=N(me,ce);return G?Promise.reject(G):Promise.resolve()}function T(me){const ce=$e.values().next().value;return ce&&typeof ce.runWithContext=="function"?ce.runWithContext(me):me()}function H(me,ce){let G;const[q,te,_e]=wse(me,ce);G=RM(q.reverse(),"beforeRouteLeave",me,ce);for(const U of q)U.leaveGuards.forEach(j=>{G.push(ni(j,me,ce))});const Y=f.bind(null,me,ce);return G.push(Y),je(G).then(()=>{G=[];for(const U of c.list())G.push(ni(U,me,ce));return G.push(Y),je(G)}).then(()=>{G=RM(te,"beforeRouteUpdate",me,ce);for(const U of te)U.updateGuards.forEach(j=>{G.push(ni(j,me,ce))});return G.push(Y),je(G)}).then(()=>{G=[];for(const U of _e)if(U.beforeEnter)if($l(U.beforeEnter))for(const j of U.beforeEnter)G.push(ni(j,me,ce));else G.push(ni(U.beforeEnter,me,ce));return G.push(Y),je(G)}).then(()=>(me.matched.forEach(U=>U.enterCallbacks={}),G=RM(_e,"beforeRouteEnter",me,ce,T),G.push(Y),je(G))).then(()=>{G=[];for(const U of p.list())G.push(ni(U,me,ce));return G.push(Y),je(G)}).catch(U=>dr(U,8)?U:Promise.reject(U))}function O(me,ce,G){g.list().forEach(q=>T(()=>q(me,ce,G)))}function W(me,ce,G,q,te){const _e=N(me,ce);if(_e)return _e;const Y=ce===Br,U=Pc?history.state:{};G&&(q||Y?d.replace(me.fullPath,Ws({scroll:Y&&U&&U.scroll},te)):d.push(me.fullPath,te)),_.value=me,ke(me,ce,G,Y),ue()}let ie;function ve(){ie||(ie=d.listen((me,ce,G)=>{if(!he.listening)return;const q=P(me),te=L(q);if(te){E(Ws(te,{replace:!0}),q).catch(ap);return}v=q;const _e=_.value;Pc&&zae(HO(_e.fullPath,G.delta),HI()),H(q,_e).catch(Y=>dr(Y,12)?Y:dr(Y,2)?(E(Y.to,q).then(U=>{dr(U,20)&&!G.delta&&G.type===yp.pop&&d.go(-1,!1)}).catch(ap),Promise.reject()):(G.delta&&d.go(-G.delta,!1),Q(Y,q,_e))).then(Y=>{Y=Y||W(q,_e,!1),Y&&(G.delta&&!dr(Y,8)?d.go(-G.delta,!1):G.type===yp.pop&&dr(Y,20)&&d.go(-1,!1)),O(q,_e,Y)}).catch(ap)}))}let de=Uu(),re=Uu(),K;function Q(me,ce,G){ue(me);const q=re.list();return q.length?q.forEach(te=>te(me,ce,G)):console.error(me),Promise.reject(me)}function se(){return K&&_.value!==Br?Promise.resolve():new Promise((me,ce)=>{de.add([me,ce])})}function ue(me){return K||(K=!me,ve(),de.list().forEach(([ce,G])=>me?G(me):ce()),de.reset()),me}function ke(me,ce,G,q){const{scrollBehavior:te}=l;if(!Pc||!te)return Promise.resolve();const _e=!G&&Bae(HO(me.fullPath,0))||(q||!G)&&history.state&&history.state.scroll||null;return vs().then(()=>te(me,ce,_e)).then(Y=>Y&&qae(Y)).catch(Y=>Q(Y,me,ce))}const we=me=>d.go(me);let Ce;const $e=new Set,he={currentRoute:_,listening:!0,addRoute:u,removeRoute:C,hasRoute:z,getRoutes:x,resolve:P,options:l,push:M,replace:S,go:we,back:()=>we(-1),forward:()=>we(1),beforeEach:c.add,beforeResolve:p.add,afterEach:g.add,onError:re.add,isReady:se,install(me){const ce=this;me.component("RouterLink",vse),me.component("RouterView",yse),me.config.globalProperties.$router=ce,Object.defineProperty(me.config.globalProperties,"$route",{enumerable:!0,get:()=>e(_)}),Pc&&!Ce&&_.value===Br&&(Ce=!0,M(d.location).catch(te=>{}));const G={};for(const te in Br)Object.defineProperty(G,te,{get:()=>_.value[te],enumerable:!0});me.provide(qI,ce),me.provide(_P,aH(G)),me.provide(HT,_);const q=me.unmount;$e.add(me),me.unmount=function(){$e.delete(me),$e.size<1&&(v=Br,ie&&ie(),ie=null,_.value=Br,Ce=!1,K=!1),q()}}};function je(me){return me.reduce((ce,G)=>ce.then(()=>T(G)),Promise.resolve())}return he}function wse(l,a){const t=[],s=[],d=[],c=Math.max(a.matched.length,l.matched.length);for(let p=0;pYc(v,g))?s.push(g):t.push(g));const _=l.matched[p];_&&(a.matched.find(v=>Yc(v,_))||d.push(_))}return[t,s,d]}function Nt(){return Ba(qI)}function Ka(){return Ba(_P)}const Yl="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Uploaded%20to:%20SVG%20Repo,%20www.svgrepo.com,%20Generator:%20SVG%20Repo%20Mixer%20Tools%20--%3e%3csvg%20width='800px'%20height='800px'%20viewBox='0%200%20512%20512'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill='%23000000'%20d='M256%2032L20%20400l60%2064%2052.1-75.9L176%20432l50.5-50.5L256%20448l29.5-66.5L336%20432l43.9-43.9L432%20464l60-64L256%2032zm-9%2047v78l-39-13%2039-65zm18%200l39%2065-39%2013V79z'/%3e%3c/svg%3e";var bn="top",ll="bottom",rl="right",wn="left",mP="auto",Up=[bn,ll,rl,wn],Qc="start",bp="end",kse="clippingParents",pq="viewport",Ru="popper",xse="reference",aF=Up.reduce(function(l,a){return l.concat([a+"-"+Qc,a+"-"+bp])},[]),_q=[].concat(Up,[mP]).reduce(function(l,a){return l.concat([a,a+"-"+Qc,a+"-"+bp])},[]),$se="beforeRead",Cse="read",Sse="afterRead",Ese="beforeMain",Ase="main",Lse="afterMain",Ise="beforeWrite",Vse="write",Mse="afterWrite",Tse=[$se,Cse,Sse,Ese,Ase,Lse,Ise,Vse,Mse];function Zl(l){return l?(l.nodeName||"").toLowerCase():null}function Fn(l){if(l==null)return window;if(l.toString()!=="[object Window]"){var a=l.ownerDocument;return a&&a.defaultView||window}return l}function rc(l){var a=Fn(l).Element;return l instanceof a||l instanceof Element}function sl(l){var a=Fn(l).HTMLElement;return l instanceof a||l instanceof HTMLElement}function vP(l){if(typeof ShadowRoot>"u")return!1;var a=Fn(l).ShadowRoot;return l instanceof a||l instanceof ShadowRoot}function Dse(l){var a=l.state;Object.keys(a.elements).forEach(function(t){var s=a.styles[t]||{},d=a.attributes[t]||{},c=a.elements[t];!sl(c)||!Zl(c)||(Object.assign(c.style,s),Object.keys(d).forEach(function(p){var g=d[p];g===!1?c.removeAttribute(p):c.setAttribute(p,g===!0?"":g)}))})}function Pse(l){var a=l.state,t={popper:{position:a.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(a.elements.popper.style,t.popper),a.styles=t,a.elements.arrow&&Object.assign(a.elements.arrow.style,t.arrow),function(){Object.keys(a.elements).forEach(function(s){var d=a.elements[s],c=a.attributes[s]||{},p=Object.keys(a.styles.hasOwnProperty(s)?a.styles[s]:t[s]),g=p.reduce(function(_,v){return _[v]="",_},{});!sl(d)||!Zl(d)||(Object.assign(d.style,g),Object.keys(c).forEach(function(_){d.removeAttribute(_)}))})}}const mq={name:"applyStyles",enabled:!0,phase:"write",fn:Dse,effect:Pse,requires:["computeStyles"]};function zl(l){return l.split("-")[0]}var nc=Math.max,dI=Math.min,Jc=Math.round;function qT(){var l=navigator.userAgentData;return l!=null&&l.brands&&Array.isArray(l.brands)?l.brands.map(function(a){return a.brand+"/"+a.version}).join(" "):navigator.userAgent}function vq(){return!/^((?!chrome|android).)*safari/i.test(qT())}function eu(l,a,t){a===void 0&&(a=!1),t===void 0&&(t=!1);var s=l.getBoundingClientRect(),d=1,c=1;a&&sl(l)&&(d=l.offsetWidth>0&&Jc(s.width)/l.offsetWidth||1,c=l.offsetHeight>0&&Jc(s.height)/l.offsetHeight||1);var p=rc(l)?Fn(l):window,g=p.visualViewport,_=!vq()&&t,v=(s.left+(_&&g?g.offsetLeft:0))/d,h=(s.top+(_&&g?g.offsetTop:0))/c,b=s.width/d,y=s.height/c;return{width:b,height:y,top:h,right:v+b,bottom:h+y,left:v,x:v,y:h}}function hP(l){var a=eu(l),t=l.offsetWidth,s=l.offsetHeight;return Math.abs(a.width-t)<=1&&(t=a.width),Math.abs(a.height-s)<=1&&(s=a.height),{x:l.offsetLeft,y:l.offsetTop,width:t,height:s}}function hq(l,a){var t=a.getRootNode&&a.getRootNode();if(l.contains(a))return!0;if(t&&vP(t)){var s=a;do{if(s&&l.isSameNode(s))return!0;s=s.parentNode||s.host}while(s)}return!1}function $r(l){return Fn(l).getComputedStyle(l)}function Use(l){return["table","td","th"].indexOf(Zl(l))>=0}function ki(l){return((rc(l)?l.ownerDocument:l.document)||window.document).documentElement}function zI(l){return Zl(l)==="html"?l:l.assignedSlot||l.parentNode||(vP(l)?l.host:null)||ki(l)}function sF(l){return!sl(l)||$r(l).position==="fixed"?null:l.offsetParent}function Rse(l){var a=/firefox/i.test(qT()),t=/Trident/i.test(qT());if(t&&sl(l)){var s=$r(l);if(s.position==="fixed")return null}var d=zI(l);for(vP(d)&&(d=d.host);sl(d)&&["html","body"].indexOf(Zl(d))<0;){var c=$r(d);if(c.transform!=="none"||c.perspective!=="none"||c.contain==="paint"||["transform","perspective"].indexOf(c.willChange)!==-1||a&&c.willChange==="filter"||a&&c.filter&&c.filter!=="none")return d;d=d.parentNode}return null}function Rp(l){for(var a=Fn(l),t=sF(l);t&&Use(t)&&$r(t).position==="static";)t=sF(t);return t&&(Zl(t)==="html"||Zl(t)==="body"&&$r(t).position==="static")?a:t||Rse(l)||a}function fP(l){return["top","bottom"].indexOf(l)>=0?"x":"y"}function op(l,a,t){return nc(l,dI(a,t))}function Ose(l,a,t){var s=op(l,a,t);return s>t?t:s}function fq(){return{top:0,right:0,bottom:0,left:0}}function gq(l){return Object.assign({},fq(),l)}function yq(l,a){return a.reduce(function(t,s){return t[s]=l,t},{})}var Fse=function(a,t){return a=typeof a=="function"?a(Object.assign({},t.rects,{placement:t.placement})):a,gq(typeof a!="number"?a:yq(a,Up))};function Nse(l){var a,t=l.state,s=l.name,d=l.options,c=t.elements.arrow,p=t.modifiersData.popperOffsets,g=zl(t.placement),_=fP(g),v=[wn,rl].indexOf(g)>=0,h=v?"height":"width";if(!(!c||!p)){var b=Fse(d.padding,t),y=hP(c),u=_==="y"?bn:wn,C=_==="y"?ll:rl,x=t.rects.reference[h]+t.rects.reference[_]-p[_]-t.rects.popper[h],z=p[_]-t.rects.reference[_],P=Rp(c),F=P?_==="y"?P.clientHeight||0:P.clientWidth||0:0,N=x/2-z/2,M=b[u],S=F-y[h]-b[C],L=F/2-y[h]/2+N,E=op(M,L,S),f=_;t.modifiersData[s]=(a={},a[f]=E,a.centerOffset=E-L,a)}}function jse(l){var a=l.state,t=l.options,s=t.element,d=s===void 0?"[data-popper-arrow]":s;d!=null&&(typeof d=="string"&&(d=a.elements.popper.querySelector(d),!d)||hq(a.elements.popper,d)&&(a.elements.arrow=d))}const Hse={name:"arrow",enabled:!0,phase:"main",fn:Nse,effect:jse,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function tu(l){return l.split("-")[1]}var qse={top:"auto",right:"auto",bottom:"auto",left:"auto"};function zse(l,a){var t=l.x,s=l.y,d=a.devicePixelRatio||1;return{x:Jc(t*d)/d||0,y:Jc(s*d)/d||0}}function oF(l){var a,t=l.popper,s=l.popperRect,d=l.placement,c=l.variation,p=l.offsets,g=l.position,_=l.gpuAcceleration,v=l.adaptive,h=l.roundOffsets,b=l.isFixed,y=p.x,u=y===void 0?0:y,C=p.y,x=C===void 0?0:C,z=typeof h=="function"?h({x:u,y:x}):{x:u,y:x};u=z.x,x=z.y;var P=p.hasOwnProperty("x"),F=p.hasOwnProperty("y"),N=wn,M=bn,S=window;if(v){var L=Rp(t),E="clientHeight",f="clientWidth";if(L===Fn(t)&&(L=ki(t),$r(L).position!=="static"&&g==="absolute"&&(E="scrollHeight",f="scrollWidth")),L=L,d===bn||(d===wn||d===rl)&&c===bp){M=ll;var T=b&&L===S&&S.visualViewport?S.visualViewport.height:L[E];x-=T-s.height,x*=_?1:-1}if(d===wn||(d===bn||d===ll)&&c===bp){N=rl;var H=b&&L===S&&S.visualViewport?S.visualViewport.width:L[f];u-=H-s.width,u*=_?1:-1}}var O=Object.assign({position:g},v&&qse),W=h===!0?zse({x:u,y:x},Fn(t)):{x:u,y:x};if(u=W.x,x=W.y,_){var ie;return Object.assign({},O,(ie={},ie[M]=F?"0":"",ie[N]=P?"0":"",ie.transform=(S.devicePixelRatio||1)<=1?"translate("+u+"px, "+x+"px)":"translate3d("+u+"px, "+x+"px, 0)",ie))}return Object.assign({},O,(a={},a[M]=F?x+"px":"",a[N]=P?u+"px":"",a.transform="",a))}function Bse(l){var a=l.state,t=l.options,s=t.gpuAcceleration,d=s===void 0?!0:s,c=t.adaptive,p=c===void 0?!0:c,g=t.roundOffsets,_=g===void 0?!0:g,v={placement:zl(a.placement),variation:tu(a.placement),popper:a.elements.popper,popperRect:a.rects.popper,gpuAcceleration:d,isFixed:a.options.strategy==="fixed"};a.modifiersData.popperOffsets!=null&&(a.styles.popper=Object.assign({},a.styles.popper,oF(Object.assign({},v,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:p,roundOffsets:_})))),a.modifiersData.arrow!=null&&(a.styles.arrow=Object.assign({},a.styles.arrow,oF(Object.assign({},v,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:_})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})}const Gse={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Bse,data:{}};var cm={passive:!0};function Wse(l){var a=l.state,t=l.instance,s=l.options,d=s.scroll,c=d===void 0?!0:d,p=s.resize,g=p===void 0?!0:p,_=Fn(a.elements.popper),v=[].concat(a.scrollParents.reference,a.scrollParents.popper);return c&&v.forEach(function(h){h.addEventListener("scroll",t.update,cm)}),g&&_.addEventListener("resize",t.update,cm),function(){c&&v.forEach(function(h){h.removeEventListener("scroll",t.update,cm)}),g&&_.removeEventListener("resize",t.update,cm)}}const Zse={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Wse,data:{}};var Kse={left:"right",right:"left",bottom:"top",top:"bottom"};function Am(l){return l.replace(/left|right|bottom|top/g,function(a){return Kse[a]})}var Yse={start:"end",end:"start"};function nF(l){return l.replace(/start|end/g,function(a){return Yse[a]})}function gP(l){var a=Fn(l),t=a.pageXOffset,s=a.pageYOffset;return{scrollLeft:t,scrollTop:s}}function yP(l){return eu(ki(l)).left+gP(l).scrollLeft}function Xse(l,a){var t=Fn(l),s=ki(l),d=t.visualViewport,c=s.clientWidth,p=s.clientHeight,g=0,_=0;if(d){c=d.width,p=d.height;var v=vq();(v||!v&&a==="fixed")&&(g=d.offsetLeft,_=d.offsetTop)}return{width:c,height:p,x:g+yP(l),y:_}}function Qse(l){var a,t=ki(l),s=gP(l),d=(a=l.ownerDocument)==null?void 0:a.body,c=nc(t.scrollWidth,t.clientWidth,d?d.scrollWidth:0,d?d.clientWidth:0),p=nc(t.scrollHeight,t.clientHeight,d?d.scrollHeight:0,d?d.clientHeight:0),g=-s.scrollLeft+yP(l),_=-s.scrollTop;return $r(d||t).direction==="rtl"&&(g+=nc(t.clientWidth,d?d.clientWidth:0)-c),{width:c,height:p,x:g,y:_}}function bP(l){var a=$r(l),t=a.overflow,s=a.overflowX,d=a.overflowY;return/auto|scroll|overlay|hidden/.test(t+d+s)}function bq(l){return["html","body","#document"].indexOf(Zl(l))>=0?l.ownerDocument.body:sl(l)&&bP(l)?l:bq(zI(l))}function np(l,a){var t;a===void 0&&(a=[]);var s=bq(l),d=s===((t=l.ownerDocument)==null?void 0:t.body),c=Fn(s),p=d?[c].concat(c.visualViewport||[],bP(s)?s:[]):s,g=a.concat(p);return d?g:g.concat(np(zI(p)))}function zT(l){return Object.assign({},l,{left:l.x,top:l.y,right:l.x+l.width,bottom:l.y+l.height})}function Jse(l,a){var t=eu(l,!1,a==="fixed");return t.top=t.top+l.clientTop,t.left=t.left+l.clientLeft,t.bottom=t.top+l.clientHeight,t.right=t.left+l.clientWidth,t.width=l.clientWidth,t.height=l.clientHeight,t.x=t.left,t.y=t.top,t}function lF(l,a,t){return a===pq?zT(Xse(l,t)):rc(a)?Jse(a,t):zT(Qse(ki(l)))}function eoe(l){var a=np(zI(l)),t=["absolute","fixed"].indexOf($r(l).position)>=0,s=t&&sl(l)?Rp(l):l;return rc(s)?a.filter(function(d){return rc(d)&&hq(d,s)&&Zl(d)!=="body"}):[]}function toe(l,a,t,s){var d=a==="clippingParents"?eoe(l):[].concat(a),c=[].concat(d,[t]),p=c[0],g=c.reduce(function(_,v){var h=lF(l,v,s);return _.top=nc(h.top,_.top),_.right=dI(h.right,_.right),_.bottom=dI(h.bottom,_.bottom),_.left=nc(h.left,_.left),_},lF(l,p,s));return g.width=g.right-g.left,g.height=g.bottom-g.top,g.x=g.left,g.y=g.top,g}function wq(l){var a=l.reference,t=l.element,s=l.placement,d=s?zl(s):null,c=s?tu(s):null,p=a.x+a.width/2-t.width/2,g=a.y+a.height/2-t.height/2,_;switch(d){case bn:_={x:p,y:a.y-t.height};break;case ll:_={x:p,y:a.y+a.height};break;case rl:_={x:a.x+a.width,y:g};break;case wn:_={x:a.x-t.width,y:g};break;default:_={x:a.x,y:a.y}}var v=d?fP(d):null;if(v!=null){var h=v==="y"?"height":"width";switch(c){case Qc:_[v]=_[v]-(a[h]/2-t[h]/2);break;case bp:_[v]=_[v]+(a[h]/2-t[h]/2);break}}return _}function wp(l,a){a===void 0&&(a={});var t=a,s=t.placement,d=s===void 0?l.placement:s,c=t.strategy,p=c===void 0?l.strategy:c,g=t.boundary,_=g===void 0?kse:g,v=t.rootBoundary,h=v===void 0?pq:v,b=t.elementContext,y=b===void 0?Ru:b,u=t.altBoundary,C=u===void 0?!1:u,x=t.padding,z=x===void 0?0:x,P=gq(typeof z!="number"?z:yq(z,Up)),F=y===Ru?xse:Ru,N=l.rects.popper,M=l.elements[C?F:y],S=toe(rc(M)?M:M.contextElement||ki(l.elements.popper),_,h,p),L=eu(l.elements.reference),E=wq({reference:L,element:N,strategy:"absolute",placement:d}),f=zT(Object.assign({},N,E)),T=y===Ru?f:L,H={top:S.top-T.top+P.top,bottom:T.bottom-S.bottom+P.bottom,left:S.left-T.left+P.left,right:T.right-S.right+P.right},O=l.modifiersData.offset;if(y===Ru&&O){var W=O[d];Object.keys(H).forEach(function(ie){var ve=[rl,ll].indexOf(ie)>=0?1:-1,de=[bn,ll].indexOf(ie)>=0?"y":"x";H[ie]+=W[de]*ve})}return H}function aoe(l,a){a===void 0&&(a={});var t=a,s=t.placement,d=t.boundary,c=t.rootBoundary,p=t.padding,g=t.flipVariations,_=t.allowedAutoPlacements,v=_===void 0?_q:_,h=tu(s),b=h?g?aF:aF.filter(function(C){return tu(C)===h}):Up,y=b.filter(function(C){return v.indexOf(C)>=0});y.length===0&&(y=b);var u=y.reduce(function(C,x){return C[x]=wp(l,{placement:x,boundary:d,rootBoundary:c,padding:p})[zl(x)],C},{});return Object.keys(u).sort(function(C,x){return u[C]-u[x]})}function soe(l){if(zl(l)===mP)return[];var a=Am(l);return[nF(l),a,nF(a)]}function ooe(l){var a=l.state,t=l.options,s=l.name;if(!a.modifiersData[s]._skip){for(var d=t.mainAxis,c=d===void 0?!0:d,p=t.altAxis,g=p===void 0?!0:p,_=t.fallbackPlacements,v=t.padding,h=t.boundary,b=t.rootBoundary,y=t.altBoundary,u=t.flipVariations,C=u===void 0?!0:u,x=t.allowedAutoPlacements,z=a.options.placement,P=zl(z),F=P===z,N=_||(F||!C?[Am(z)]:soe(z)),M=[z].concat(N).reduce(function($e,he){return $e.concat(zl(he)===mP?aoe(a,{placement:he,boundary:h,rootBoundary:b,padding:v,flipVariations:C,allowedAutoPlacements:x}):he)},[]),S=a.rects.reference,L=a.rects.popper,E=new Map,f=!0,T=M[0],H=0;H=0,de=ve?"width":"height",re=wp(a,{placement:O,boundary:h,rootBoundary:b,altBoundary:y,padding:v}),K=ve?ie?rl:wn:ie?ll:bn;S[de]>L[de]&&(K=Am(K));var Q=Am(K),se=[];if(c&&se.push(re[W]<=0),g&&se.push(re[K]<=0,re[Q]<=0),se.every(function($e){return $e})){T=O,f=!1;break}E.set(O,se)}if(f)for(var ue=C?3:1,ke=function(he){var je=M.find(function(me){var ce=E.get(me);if(ce)return ce.slice(0,he).every(function(G){return G})});if(je)return T=je,"break"},we=ue;we>0;we--){var Ce=ke(we);if(Ce==="break")break}a.placement!==T&&(a.modifiersData[s]._skip=!0,a.placement=T,a.reset=!0)}}const noe={name:"flip",enabled:!0,phase:"main",fn:ooe,requiresIfExists:["offset"],data:{_skip:!1}};function rF(l,a,t){return t===void 0&&(t={x:0,y:0}),{top:l.top-a.height-t.y,right:l.right-a.width+t.x,bottom:l.bottom-a.height+t.y,left:l.left-a.width-t.x}}function iF(l){return[bn,rl,ll,wn].some(function(a){return l[a]>=0})}function loe(l){var a=l.state,t=l.name,s=a.rects.reference,d=a.rects.popper,c=a.modifiersData.preventOverflow,p=wp(a,{elementContext:"reference"}),g=wp(a,{altBoundary:!0}),_=rF(p,s),v=rF(g,d,c),h=iF(_),b=iF(v);a.modifiersData[t]={referenceClippingOffsets:_,popperEscapeOffsets:v,isReferenceHidden:h,hasPopperEscaped:b},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":b})}const roe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:loe};function ioe(l,a,t){var s=zl(l),d=[wn,bn].indexOf(s)>=0?-1:1,c=typeof t=="function"?t(Object.assign({},a,{placement:l})):t,p=c[0],g=c[1];return p=p||0,g=(g||0)*d,[wn,rl].indexOf(s)>=0?{x:g,y:p}:{x:p,y:g}}function doe(l){var a=l.state,t=l.options,s=l.name,d=t.offset,c=d===void 0?[0,0]:d,p=_q.reduce(function(h,b){return h[b]=ioe(b,a.rects,c),h},{}),g=p[a.placement],_=g.x,v=g.y;a.modifiersData.popperOffsets!=null&&(a.modifiersData.popperOffsets.x+=_,a.modifiersData.popperOffsets.y+=v),a.modifiersData[s]=p}const coe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:doe};function uoe(l){var a=l.state,t=l.name;a.modifiersData[t]=wq({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})}const poe={name:"popperOffsets",enabled:!0,phase:"read",fn:uoe,data:{}};function _oe(l){return l==="x"?"y":"x"}function moe(l){var a=l.state,t=l.options,s=l.name,d=t.mainAxis,c=d===void 0?!0:d,p=t.altAxis,g=p===void 0?!1:p,_=t.boundary,v=t.rootBoundary,h=t.altBoundary,b=t.padding,y=t.tether,u=y===void 0?!0:y,C=t.tetherOffset,x=C===void 0?0:C,z=wp(a,{boundary:_,rootBoundary:v,padding:b,altBoundary:h}),P=zl(a.placement),F=tu(a.placement),N=!F,M=fP(P),S=_oe(M),L=a.modifiersData.popperOffsets,E=a.rects.reference,f=a.rects.popper,T=typeof x=="function"?x(Object.assign({},a.rects,{placement:a.placement})):x,H=typeof T=="number"?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),O=a.modifiersData.offset?a.modifiersData.offset[a.placement]:null,W={x:0,y:0};if(L){if(c){var ie,ve=M==="y"?bn:wn,de=M==="y"?ll:rl,re=M==="y"?"height":"width",K=L[M],Q=K+z[ve],se=K-z[de],ue=u?-f[re]/2:0,ke=F===Qc?E[re]:f[re],we=F===Qc?-f[re]:-E[re],Ce=a.elements.arrow,$e=u&&Ce?hP(Ce):{width:0,height:0},he=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:fq(),je=he[ve],me=he[de],ce=op(0,E[re],$e[re]),G=N?E[re]/2-ue-ce-je-H.mainAxis:ke-ce-je-H.mainAxis,q=N?-E[re]/2+ue+ce+me+H.mainAxis:we+ce+me+H.mainAxis,te=a.elements.arrow&&Rp(a.elements.arrow),_e=te?M==="y"?te.clientTop||0:te.clientLeft||0:0,Y=(ie=O==null?void 0:O[M])!=null?ie:0,U=K+G-Y-_e,j=K+q-Y,oe=op(u?dI(Q,U):Q,K,u?nc(se,j):se);L[M]=oe,W[M]=oe-K}if(g){var Z,X=M==="x"?bn:wn,le=M==="x"?ll:rl,fe=L[S],Me=S==="y"?"height":"width",mt=fe+z[X],Mt=fe-z[le],Gt=[bn,wn].indexOf(P)!==-1,Wt=(Z=O==null?void 0:O[S])!=null?Z:0,kt=Gt?mt:fe-E[Me]-f[Me]-Wt+H.altAxis,gt=Gt?fe+E[Me]+f[Me]-Wt-H.altAxis:Mt,Pt=u&&Gt?Ose(kt,fe,gt):op(u?kt:mt,fe,u?gt:Mt);L[S]=Pt,W[S]=Pt-fe}a.modifiersData[s]=W}}const voe={name:"preventOverflow",enabled:!0,phase:"main",fn:moe,requiresIfExists:["offset"]};function hoe(l){return{scrollLeft:l.scrollLeft,scrollTop:l.scrollTop}}function foe(l){return l===Fn(l)||!sl(l)?gP(l):hoe(l)}function goe(l){var a=l.getBoundingClientRect(),t=Jc(a.width)/l.offsetWidth||1,s=Jc(a.height)/l.offsetHeight||1;return t!==1||s!==1}function yoe(l,a,t){t===void 0&&(t=!1);var s=sl(a),d=sl(a)&&goe(a),c=ki(a),p=eu(l,d,t),g={scrollLeft:0,scrollTop:0},_={x:0,y:0};return(s||!s&&!t)&&((Zl(a)!=="body"||bP(c))&&(g=foe(a)),sl(a)?(_=eu(a,!0),_.x+=a.clientLeft,_.y+=a.clientTop):c&&(_.x=yP(c))),{x:p.left+g.scrollLeft-_.x,y:p.top+g.scrollTop-_.y,width:p.width,height:p.height}}function boe(l){var a=new Map,t=new Set,s=[];l.forEach(function(c){a.set(c.name,c)});function d(c){t.add(c.name);var p=[].concat(c.requires||[],c.requiresIfExists||[]);p.forEach(function(g){if(!t.has(g)){var _=a.get(g);_&&d(_)}}),s.push(c)}return l.forEach(function(c){t.has(c.name)||d(c)}),s}function woe(l){var a=boe(l);return Tse.reduce(function(t,s){return t.concat(a.filter(function(d){return d.phase===s}))},[])}function koe(l){var a;return function(){return a||(a=new Promise(function(t){Promise.resolve().then(function(){a=void 0,t(l())})})),a}}function xoe(l){var a=l.reduce(function(t,s){var d=t[s.name];return t[s.name]=d?Object.assign({},d,s,{options:Object.assign({},d.options,s.options),data:Object.assign({},d.data,s.data)}):s,t},{});return Object.keys(a).map(function(t){return a[t]})}var dF={placement:"bottom",modifiers:[],strategy:"absolute"};function cF(){for(var l=arguments.length,a=new Array(l),t=0;t',Aoe="tippy-box",kq="tippy-content",xq="tippy-backdrop",$q="tippy-arrow",Cq="tippy-svg-arrow",zi={passive:!0,capture:!0},Sq=function(){return document.body};function OM(l,a,t){if(Array.isArray(l)){var s=l[a];return s??(Array.isArray(t)?t[a]:t)}return l}function wP(l,a){var t={}.toString.call(l);return t.indexOf("[object")===0&&t.indexOf(a+"]")>-1}function Eq(l,a){return typeof l=="function"?l.apply(void 0,a):l}function uF(l,a){if(a===0)return l;var t;return function(s){clearTimeout(t),t=setTimeout(function(){l(s)},a)}}function Loe(l){return l.split(/\s+/).filter(Boolean)}function Uc(l){return[].concat(l)}function pF(l,a){l.indexOf(a)===-1&&l.push(a)}function Ioe(l){return l.filter(function(a,t){return l.indexOf(a)===t})}function Voe(l){return l.split("-")[0]}function cI(l){return[].slice.call(l)}function _F(l){return Object.keys(l).reduce(function(a,t){return l[t]!==void 0&&(a[t]=l[t]),a},{})}function Gc(){return document.createElement("div")}function BI(l){return["Element","Fragment"].some(function(a){return wP(l,a)})}function Moe(l){return wP(l,"NodeList")}function Toe(l){return wP(l,"MouseEvent")}function Doe(l){return!!(l&&l._tippy&&l._tippy.reference===l)}function Poe(l){return BI(l)?[l]:Moe(l)?cI(l):Array.isArray(l)?l:cI(document.querySelectorAll(l))}function FM(l,a){l.forEach(function(t){t&&(t.style.transitionDuration=a+"ms")})}function kp(l,a){l.forEach(function(t){t&&t.setAttribute("data-state",a)})}function Uoe(l){var a,t=Uc(l),s=t[0];return s!=null&&(a=s.ownerDocument)!=null&&a.body?s.ownerDocument:document}function Roe(l,a){var t=a.clientX,s=a.clientY;return l.every(function(d){var c=d.popperRect,p=d.popperState,g=d.props,_=g.interactiveBorder,v=Voe(p.placement),h=p.modifiersData.offset;if(!h)return!0;var b=v==="bottom"?h.top.y:0,y=v==="top"?h.bottom.y:0,u=v==="right"?h.left.x:0,C=v==="left"?h.right.x:0,x=c.top-s+b>_,z=s-c.bottom-y>_,P=c.left-t+u>_,F=t-c.right-C>_;return x||z||P||F})}function NM(l,a,t){var s=a+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(d){l[s](d,t)})}function mF(l,a){for(var t=a;t;){var s;if(l.contains(t))return!0;t=t.getRootNode==null||(s=t.getRootNode())==null?void 0:s.host}return!1}var Nl={isTouch:!1},vF=0;function Ooe(){Nl.isTouch||(Nl.isTouch=!0,window.performance&&document.addEventListener("mousemove",Aq))}function Aq(){var l=performance.now();l-vF<20&&(Nl.isTouch=!1,document.removeEventListener("mousemove",Aq)),vF=l}function Foe(){var l=document.activeElement;if(Doe(l)){var a=l._tippy;l.blur&&!a.state.isVisible&&l.blur()}}function Noe(){document.addEventListener("touchstart",Ooe,zi),window.addEventListener("blur",Foe)}var joe=typeof window<"u"&&typeof document<"u",Hoe=joe?!!window.msCrypto:!1,qoe={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},zoe={allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999},kl=Object.assign({appendTo:Sq,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},qoe,zoe),Boe=Object.keys(kl),Goe=function(a){var t=Object.keys(a);t.forEach(function(s){kl[s]=a[s]})};function Lq(l){var a=l.plugins||[],t=a.reduce(function(s,d){var c=d.name,p=d.defaultValue;if(c){var g;s[c]=l[c]!==void 0?l[c]:(g=kl[c])!=null?g:p}return s},{});return Object.assign({},l,t)}function Woe(l,a){var t=a?Object.keys(Lq(Object.assign({},kl,{plugins:a}))):Boe,s=t.reduce(function(d,c){var p=(l.getAttribute("data-tippy-"+c)||"").trim();if(!p)return d;if(c==="content")d[c]=p;else try{d[c]=JSON.parse(p)}catch{d[c]=p}return d},{});return s}function hF(l,a){var t=Object.assign({},a,{content:Eq(a.content,[l])},a.ignoreAttributes?{}:Woe(l,a.plugins));return t.aria=Object.assign({},kl.aria,t.aria),t.aria={expanded:t.aria.expanded==="auto"?a.interactive:t.aria.expanded,content:t.aria.content==="auto"?a.interactive?null:"describedby":t.aria.content},t}var Zoe=function(){return"innerHTML"};function BT(l,a){l[Zoe()]=a}function fF(l){var a=Gc();return l===!0?a.className=$q:(a.className=Cq,BI(l)?a.appendChild(l):BT(a,l)),a}function gF(l,a){BI(a.content)?(BT(l,""),l.appendChild(a.content)):typeof a.content!="function"&&(a.allowHTML?BT(l,a.content):l.textContent=a.content)}function uI(l){var a=l.firstElementChild,t=cI(a.children);return{box:a,content:t.find(function(s){return s.classList.contains(kq)}),arrow:t.find(function(s){return s.classList.contains($q)||s.classList.contains(Cq)}),backdrop:t.find(function(s){return s.classList.contains(xq)})}}function Iq(l){var a=Gc(),t=Gc();t.className=Aoe,t.setAttribute("data-state","hidden"),t.setAttribute("tabindex","-1");var s=Gc();s.className=kq,s.setAttribute("data-state","hidden"),gF(s,l.props),a.appendChild(t),t.appendChild(s),d(l.props,l.props);function d(c,p){var g=uI(a),_=g.box,v=g.content,h=g.arrow;p.theme?_.setAttribute("data-theme",p.theme):_.removeAttribute("data-theme"),typeof p.animation=="string"?_.setAttribute("data-animation",p.animation):_.removeAttribute("data-animation"),p.inertia?_.setAttribute("data-inertia",""):_.removeAttribute("data-inertia"),_.style.maxWidth=typeof p.maxWidth=="number"?p.maxWidth+"px":p.maxWidth,p.role?_.setAttribute("role",p.role):_.removeAttribute("role"),(c.content!==p.content||c.allowHTML!==p.allowHTML)&&gF(v,l.props),p.arrow?h?c.arrow!==p.arrow&&(_.removeChild(h),_.appendChild(fF(p.arrow))):_.appendChild(fF(p.arrow)):h&&_.removeChild(h)}return{popper:a,onUpdate:d}}Iq.$$tippy=!0;var Koe=1,um=[],jM=[];function Yoe(l,a){var t=hF(l,Object.assign({},kl,Lq(_F(a)))),s,d,c,p=!1,g=!1,_=!1,v=!1,h,b,y,u=[],C=uF(U,t.interactiveDebounce),x,z=Koe++,P=null,F=Ioe(t.plugins),N={isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},M={id:z,reference:l,popper:Gc(),popperInstance:P,props:t,state:N,plugins:F,clearDelayTimeouts:kt,setProps:gt,setContent:Pt,show:Qt,hide:Jt,hideWithInteractivity:Lt,enable:Gt,disable:Wt,unmount:Ye,destroy:Te};if(!t.render)return M;var S=t.render(M),L=S.popper,E=S.onUpdate;L.setAttribute("data-tippy-root",""),L.id="tippy-"+M.id,M.popper=L,l._tippy=M,L._tippy=M;var f=F.map(function(Fe){return Fe.fn(M)}),T=l.hasAttribute("aria-expanded");return te(),ue(),K(),Q("onCreate",[M]),t.showOnCreate&&mt(),L.addEventListener("mouseenter",function(){M.props.interactive&&M.state.isVisible&&M.clearDelayTimeouts()}),L.addEventListener("mouseleave",function(){M.props.interactive&&M.props.trigger.indexOf("mouseenter")>=0&&ve().addEventListener("mousemove",C)}),M;function H(){var Fe=M.props.touch;return Array.isArray(Fe)?Fe:[Fe,0]}function O(){return H()[0]==="hold"}function W(){var Fe;return!!((Fe=M.props.render)!=null&&Fe.$$tippy)}function ie(){return x||l}function ve(){var Fe=ie().parentNode;return Fe?Uoe(Fe):document}function de(){return uI(L)}function re(Fe){return M.state.isMounted&&!M.state.isVisible||Nl.isTouch||h&&h.type==="focus"?0:OM(M.props.delay,Fe?0:1,kl.delay)}function K(Fe){Fe===void 0&&(Fe=!1),L.style.pointerEvents=M.props.interactive&&!Fe?"":"none",L.style.zIndex=""+M.props.zIndex}function Q(Fe,ze,Ie){if(Ie===void 0&&(Ie=!0),f.forEach(function(tt){tt[Fe]&&tt[Fe].apply(tt,ze)}),Ie){var Se;(Se=M.props)[Fe].apply(Se,ze)}}function se(){var Fe=M.props.aria;if(Fe.content){var ze="aria-"+Fe.content,Ie=L.id,Se=Uc(M.props.triggerTarget||l);Se.forEach(function(tt){var st=tt.getAttribute(ze);if(M.state.isVisible)tt.setAttribute(ze,st?st+" "+Ie:Ie);else{var ut=st&&st.replace(Ie,"").trim();ut?tt.setAttribute(ze,ut):tt.removeAttribute(ze)}})}}function ue(){if(!(T||!M.props.aria.expanded)){var Fe=Uc(M.props.triggerTarget||l);Fe.forEach(function(ze){M.props.interactive?ze.setAttribute("aria-expanded",M.state.isVisible&&ze===ie()?"true":"false"):ze.removeAttribute("aria-expanded")})}}function ke(){ve().removeEventListener("mousemove",C),um=um.filter(function(Fe){return Fe!==C})}function we(Fe){if(!(Nl.isTouch&&(_||Fe.type==="mousedown"))){var ze=Fe.composedPath&&Fe.composedPath()[0]||Fe.target;if(!(M.props.interactive&&mF(L,ze))){if(Uc(M.props.triggerTarget||l).some(function(Ie){return mF(Ie,ze)})){if(Nl.isTouch||M.state.isVisible&&M.props.trigger.indexOf("click")>=0)return}else Q("onClickOutside",[M,Fe]);M.props.hideOnClick===!0&&(M.clearDelayTimeouts(),M.hide(),g=!0,setTimeout(function(){g=!1}),M.state.isMounted||je())}}}function Ce(){_=!0}function $e(){_=!1}function he(){var Fe=ve();Fe.addEventListener("mousedown",we,!0),Fe.addEventListener("touchend",we,zi),Fe.addEventListener("touchstart",$e,zi),Fe.addEventListener("touchmove",Ce,zi)}function je(){var Fe=ve();Fe.removeEventListener("mousedown",we,!0),Fe.removeEventListener("touchend",we,zi),Fe.removeEventListener("touchstart",$e,zi),Fe.removeEventListener("touchmove",Ce,zi)}function me(Fe,ze){G(Fe,function(){!M.state.isVisible&&L.parentNode&&L.parentNode.contains(L)&&ze()})}function ce(Fe,ze){G(Fe,ze)}function G(Fe,ze){var Ie=de().box;function Se(tt){tt.target===Ie&&(NM(Ie,"remove",Se),ze())}if(Fe===0)return ze();NM(Ie,"remove",b),NM(Ie,"add",Se),b=Se}function q(Fe,ze,Ie){Ie===void 0&&(Ie=!1);var Se=Uc(M.props.triggerTarget||l);Se.forEach(function(tt){tt.addEventListener(Fe,ze,Ie),u.push({node:tt,eventType:Fe,handler:ze,options:Ie})})}function te(){O()&&(q("touchstart",Y,{passive:!0}),q("touchend",j,{passive:!0})),Loe(M.props.trigger).forEach(function(Fe){if(Fe!=="manual")switch(q(Fe,Y),Fe){case"mouseenter":q("mouseleave",j);break;case"focus":q(Hoe?"focusout":"blur",oe);break;case"focusin":q("focusout",oe);break}})}function _e(){u.forEach(function(Fe){var ze=Fe.node,Ie=Fe.eventType,Se=Fe.handler,tt=Fe.options;ze.removeEventListener(Ie,Se,tt)}),u=[]}function Y(Fe){var ze,Ie=!1;if(!(!M.state.isEnabled||Z(Fe)||g)){var Se=((ze=h)==null?void 0:ze.type)==="focus";h=Fe,x=Fe.currentTarget,ue(),!M.state.isVisible&&Toe(Fe)&&um.forEach(function(tt){return tt(Fe)}),Fe.type==="click"&&(M.props.trigger.indexOf("mouseenter")<0||p)&&M.props.hideOnClick!==!1&&M.state.isVisible?Ie=!0:mt(Fe),Fe.type==="click"&&(p=!Ie),Ie&&!Se&&Mt(Fe)}}function U(Fe){var ze=Fe.target,Ie=ie().contains(ze)||L.contains(ze);if(!(Fe.type==="mousemove"&&Ie)){var Se=Me().concat(L).map(function(tt){var st,ut=tt._tippy,St=(st=ut.popperInstance)==null?void 0:st.state;return St?{popperRect:tt.getBoundingClientRect(),popperState:St,props:t}:null}).filter(Boolean);Roe(Se,Fe)&&(ke(),Mt(Fe))}}function j(Fe){var ze=Z(Fe)||M.props.trigger.indexOf("click")>=0&&p;if(!ze){if(M.props.interactive){M.hideWithInteractivity(Fe);return}Mt(Fe)}}function oe(Fe){M.props.trigger.indexOf("focusin")<0&&Fe.target!==ie()||M.props.interactive&&Fe.relatedTarget&&L.contains(Fe.relatedTarget)||Mt(Fe)}function Z(Fe){return Nl.isTouch?O()!==Fe.type.indexOf("touch")>=0:!1}function X(){le();var Fe=M.props,ze=Fe.popperOptions,Ie=Fe.placement,Se=Fe.offset,tt=Fe.getReferenceClientRect,st=Fe.moveTransition,ut=W()?uI(L).arrow:null,St=tt?{getBoundingClientRect:tt,contextElement:tt.contextElement||ie()}:l,wt={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(et){var ot=et.state;if(W()){var ft=de(),dt=ft.box;["placement","reference-hidden","escaped"].forEach(function(it){it==="placement"?dt.setAttribute("data-placement",ot.placement):ot.attributes.popper["data-popper-"+it]?dt.setAttribute("data-"+it,""):dt.removeAttribute("data-"+it)}),ot.attributes.popper={}}}},pt=[{name:"offset",options:{offset:Se}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!st}},wt];W()&&ut&&pt.push({name:"arrow",options:{element:ut,padding:3}}),pt.push.apply(pt,(ze==null?void 0:ze.modifiers)||[]),M.popperInstance=Soe(St,L,Object.assign({},ze,{placement:Ie,onFirstUpdate:y,modifiers:pt}))}function le(){M.popperInstance&&(M.popperInstance.destroy(),M.popperInstance=null)}function fe(){var Fe=M.props.appendTo,ze,Ie=ie();M.props.interactive&&Fe===Sq||Fe==="parent"?ze=Ie.parentNode:ze=Eq(Fe,[Ie]),ze.contains(L)||ze.appendChild(L),M.state.isMounted=!0,X()}function Me(){return cI(L.querySelectorAll("[data-tippy-root]"))}function mt(Fe){M.clearDelayTimeouts(),Fe&&Q("onTrigger",[M,Fe]),he();var ze=re(!0),Ie=H(),Se=Ie[0],tt=Ie[1];Nl.isTouch&&Se==="hold"&&tt&&(ze=tt),ze?s=setTimeout(function(){M.show()},ze):M.show()}function Mt(Fe){if(M.clearDelayTimeouts(),Q("onUntrigger",[M,Fe]),!M.state.isVisible){je();return}if(!(M.props.trigger.indexOf("mouseenter")>=0&&M.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(Fe.type)>=0&&p)){var ze=re(!1);ze?d=setTimeout(function(){M.state.isVisible&&M.hide()},ze):c=requestAnimationFrame(function(){M.hide()})}}function Gt(){M.state.isEnabled=!0}function Wt(){M.hide(),M.state.isEnabled=!1}function kt(){clearTimeout(s),clearTimeout(d),cancelAnimationFrame(c)}function gt(Fe){if(!M.state.isDestroyed){Q("onBeforeUpdate",[M,Fe]),_e();var ze=M.props,Ie=hF(l,Object.assign({},ze,_F(Fe),{ignoreAttributes:!0}));M.props=Ie,te(),ze.interactiveDebounce!==Ie.interactiveDebounce&&(ke(),C=uF(U,Ie.interactiveDebounce)),ze.triggerTarget&&!Ie.triggerTarget?Uc(ze.triggerTarget).forEach(function(Se){Se.removeAttribute("aria-expanded")}):Ie.triggerTarget&&l.removeAttribute("aria-expanded"),ue(),K(),E&&E(ze,Ie),M.popperInstance&&(X(),Me().forEach(function(Se){requestAnimationFrame(Se._tippy.popperInstance.forceUpdate)})),Q("onAfterUpdate",[M,Fe])}}function Pt(Fe){M.setProps({content:Fe})}function Qt(){var Fe=M.state.isVisible,ze=M.state.isDestroyed,Ie=!M.state.isEnabled,Se=Nl.isTouch&&!M.props.touch,tt=OM(M.props.duration,0,kl.duration);if(!(Fe||ze||Ie||Se)&&!ie().hasAttribute("disabled")&&(Q("onShow",[M],!1),M.props.onShow(M)!==!1)){if(M.state.isVisible=!0,W()&&(L.style.visibility="visible"),K(),he(),M.state.isMounted||(L.style.transition="none"),W()){var st=de(),ut=st.box,St=st.content;FM([ut,St],0)}y=function(){var pt;if(!(!M.state.isVisible||v)){if(v=!0,L.offsetHeight,L.style.transition=M.props.moveTransition,W()&&M.props.animation){var bt=de(),et=bt.box,ot=bt.content;FM([et,ot],tt),kp([et,ot],"visible")}se(),ue(),pF(jM,M),(pt=M.popperInstance)==null||pt.forceUpdate(),Q("onMount",[M]),M.props.animation&&W()&&ce(tt,function(){M.state.isShown=!0,Q("onShown",[M])})}},fe()}}function Jt(){var Fe=!M.state.isVisible,ze=M.state.isDestroyed,Ie=!M.state.isEnabled,Se=OM(M.props.duration,1,kl.duration);if(!(Fe||ze||Ie)&&(Q("onHide",[M],!1),M.props.onHide(M)!==!1)){if(M.state.isVisible=!1,M.state.isShown=!1,v=!1,p=!1,W()&&(L.style.visibility="hidden"),ke(),je(),K(!0),W()){var tt=de(),st=tt.box,ut=tt.content;M.props.animation&&(FM([st,ut],Se),kp([st,ut],"hidden"))}se(),ue(),M.props.animation?W()&&me(Se,M.unmount):M.unmount()}}function Lt(Fe){ve().addEventListener("mousemove",C),pF(um,C),C(Fe)}function Ye(){M.state.isVisible&&M.hide(),M.state.isMounted&&(le(),Me().forEach(function(Fe){Fe._tippy.unmount()}),L.parentNode&&L.parentNode.removeChild(L),jM=jM.filter(function(Fe){return Fe!==M}),M.state.isMounted=!1,Q("onHidden",[M]))}function Te(){M.state.isDestroyed||(M.clearDelayTimeouts(),M.unmount(),_e(),delete l._tippy,M.state.isDestroyed=!0,Q("onDestroy",[M]))}}function Op(l,a){a===void 0&&(a={});var t=kl.plugins.concat(a.plugins||[]);Noe();var s=Object.assign({},a,{plugins:t}),d=Poe(l),c=d.reduce(function(p,g){var _=g&&Yoe(g,s);return _&&p.push(_),p},[]);return BI(l)?c[0]:c}Op.defaultProps=kl;Op.setDefaultProps=Goe;Op.currentInput=Nl;Object.assign({},mq,{effect:function(a){var t=a.state,s={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,s.popper),t.styles=s,t.elements.arrow&&Object.assign(t.elements.arrow.style,s.arrow)}});var Xoe={name:"animateFill",defaultValue:!1,fn:function(a){var t;if(!((t=a.props.render)!=null&&t.$$tippy))return{};var s=uI(a.popper),d=s.box,c=s.content,p=a.props.animateFill?Qoe():null;return{onCreate:function(){p&&(d.insertBefore(p,d.firstElementChild),d.setAttribute("data-animatefill",""),d.style.overflow="hidden",a.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(p){var _=d.style.transitionDuration,v=Number(_.replace("ms",""));c.style.transitionDelay=Math.round(v/10)+"ms",p.style.transitionDuration=_,kp([p],"visible")}},onShow:function(){p&&(p.style.transitionDuration="0ms")},onHide:function(){p&&kp([p],"hidden")}}}};function Qoe(){var l=Gc();return l.className=xq,kp([l],"hidden"),l}Op.setDefaultProps({render:Iq});const fo=lt({__name:"Tippy",props:{refKey:{},content:{},disable:{type:Boolean,default:!1},as:{default:"span"},options:{}},setup(l){const a=l,t=$(),s=(g,_)=>{Op(g,{plugins:[Xoe],content:_.content,arrow:Eoe,popperOptions:{modifiers:[{name:"preventOverflow",options:{rootBoundary:"viewport"}}]},animateFill:!1,animation:"shift-away",..._.options})},d=g=>{if(a.refKey){const _=Ba(`bind[${a.refKey}]`,()=>{});_&&_(g)}},c={mounted(g){t.value=g}},p=()=>{t.value&&t.value._tippy!==void 0&&(a.disable?t.value._tippy.disable():t.value._tippy.enable())};return ra(a,()=>{p()}),zt(()=>{t.value&&(s(t.value,a),d(t.value),p())}),(g,_)=>xn((k(),Be(Js(g.as),{class:"cursor-pointer"},{default:i(()=>[Ya(g.$slots,"default")]),_:3})),[[c]])}});/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var pm={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Joe=l=>l.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),R=(l,a)=>({size:t,strokeWidth:s=2,absoluteStrokeWidth:d,color:c,class:p,...g},{attrs:_,slots:v})=>Os("svg",{...pm,width:t||pm.width,height:t||pm.height,stroke:c||pm.stroke,"stroke-width":d?Number(s)*24/Number(t):s,..._,class:["lucide",`lucide-${Joe(l)}`],...g},[...a.map(h=>Os(...h)),...v.default?[v.default()]:[]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lm=R("AArrowDownIcon",[["path",{d:"M3.5 13h6",key:"p1my2r"}],["path",{d:"m2 16 4.5-9 4.5 9",key:"ndf0b3"}],["path",{d:"M18 7v9",key:"pknjwm"}],["path",{d:"m14 12 4 4 4-4",key:"buelq4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Im=R("AArrowUpIcon",[["path",{d:"M3.5 13h6",key:"p1my2r"}],["path",{d:"m2 16 4.5-9 4.5 9",key:"ndf0b3"}],["path",{d:"M18 16V7",key:"ty0viw"}],["path",{d:"m14 11 4-4 4 4",key:"1pu57t"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vm=R("ALargeSmallIcon",[["path",{d:"M21 14h-5",key:"1vh23k"}],["path",{d:"M16 16v-3.5a2.5 2.5 0 0 1 5 0V16",key:"1wh10o"}],["path",{d:"M4.5 13h6",key:"dfilno"}],["path",{d:"m3 16 4.5-9 4.5 9",key:"2dxa0e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mm=R("AccessibilityIcon",[["circle",{cx:"16",cy:"4",r:"1",key:"1grugj"}],["path",{d:"m18 19 1-7-6 1",key:"r0i19z"}],["path",{d:"m5 8 3-3 5.5 3-2.36 3.5",key:"9ptxx2"}],["path",{d:"M4.24 14.5a5 5 0 0 0 6.88 6",key:"10kmtu"}],["path",{d:"M13.76 17.5a5 5 0 0 0-6.88-6",key:"2qq6rc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tm=R("ActivitySquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M17 12h-2l-2 5-2-10-2 5H7",key:"15hlnc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dm=R("ActivityIcon",[["path",{d:"M22 12h-4l-3 9L9 3l-3 9H2",key:"d5dnw9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pm=R("AirVentIcon",[["path",{d:"M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"larmp2"}],["path",{d:"M6 8h12",key:"6g4wlu"}],["path",{d:"M18.3 17.7a2.5 2.5 0 0 1-3.16 3.83 2.53 2.53 0 0 1-1.14-2V12",key:"1bo8pg"}],["path",{d:"M6.6 15.6A2 2 0 1 0 10 17v-5",key:"t9h90c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Um=R("AirplayIcon",[["path",{d:"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1",key:"ns4c3b"}],["polygon",{points:"12 15 17 21 7 21 12 15",key:"1sy95i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bi=R("AlarmClockCheckIcon",[["circle",{cx:"12",cy:"13",r:"8",key:"3y4lt7"}],["path",{d:"M5 3 2 6",key:"18tl5t"}],["path",{d:"m22 6-3-3",key:"1opdir"}],["path",{d:"M6.38 18.7 4 21",key:"17xu3x"}],["path",{d:"M17.64 18.67 20 21",key:"kv2oe2"}],["path",{d:"m9 13 2 2 4-4",key:"6343dt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gi=R("AlarmClockMinusIcon",[["circle",{cx:"12",cy:"13",r:"8",key:"3y4lt7"}],["path",{d:"M5 3 2 6",key:"18tl5t"}],["path",{d:"m22 6-3-3",key:"1opdir"}],["path",{d:"M6.38 18.7 4 21",key:"17xu3x"}],["path",{d:"M17.64 18.67 20 21",key:"kv2oe2"}],["path",{d:"M9 13h6",key:"1uhe8q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rm=R("AlarmClockOffIcon",[["path",{d:"M6.87 6.87a8 8 0 1 0 11.26 11.26",key:"3on8tj"}],["path",{d:"M19.9 14.25a8 8 0 0 0-9.15-9.15",key:"15ghsc"}],["path",{d:"m22 6-3-3",key:"1opdir"}],["path",{d:"M6.26 18.67 4 21",key:"yzmioq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M4 4 2 6",key:"1ycko6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wi=R("AlarmClockPlusIcon",[["circle",{cx:"12",cy:"13",r:"8",key:"3y4lt7"}],["path",{d:"M5 3 2 6",key:"18tl5t"}],["path",{d:"m22 6-3-3",key:"1opdir"}],["path",{d:"M6.38 18.7 4 21",key:"17xu3x"}],["path",{d:"M17.64 18.67 20 21",key:"kv2oe2"}],["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Om=R("AlarmClockIcon",[["circle",{cx:"12",cy:"13",r:"8",key:"3y4lt7"}],["path",{d:"M12 9v4l2 2",key:"1c63tq"}],["path",{d:"M5 3 2 6",key:"18tl5t"}],["path",{d:"m22 6-3-3",key:"1opdir"}],["path",{d:"M6.38 18.7 4 21",key:"17xu3x"}],["path",{d:"M17.64 18.67 20 21",key:"kv2oe2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fm=R("AlarmSmokeIcon",[["path",{d:"M4 8a2 2 0 0 1-2-2V3h20v3a2 2 0 0 1-2 2Z",key:"2c4fvq"}],["path",{d:"m19 8-.8 3c-.1.6-.6 1-1.2 1H7c-.6 0-1.1-.4-1.2-1L5 8",key:"1vrndv"}],["path",{d:"M16 21c0-2.5 2-2.5 2-5",key:"1o3eny"}],["path",{d:"M11 21c0-2.5 2-2.5 2-5",key:"1sicvv"}],["path",{d:"M6 21c0-2.5 2-2.5 2-5",key:"i3w1gp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nm=R("AlbumIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["polyline",{points:"11 3 11 11 14 8 17 11 17 3",key:"1wcwz3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jm=R("AlertCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hm=R("AlertOctagonIcon",[["polygon",{points:"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2",key:"h1p8hx"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qm=R("AlertTriangleIcon",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"c3ski4"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zm=R("AlignCenterHorizontalIcon",[["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"M10 16v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-4",key:"11f1s0"}],["path",{d:"M10 8V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v4",key:"t14dx9"}],["path",{d:"M20 16v1a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-1",key:"1w07xs"}],["path",{d:"M14 8V7c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v1",key:"1apec2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bm=R("AlignCenterVerticalIcon",[["path",{d:"M12 2v20",key:"t6zp3m"}],["path",{d:"M8 10H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h4",key:"14d6g8"}],["path",{d:"M16 10h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4",key:"1e2lrw"}],["path",{d:"M8 20H7a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2h1",key:"1fkdwx"}],["path",{d:"M16 14h1a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2h-1",key:"1euafb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gm=R("AlignCenterIcon",[["line",{x1:"21",x2:"3",y1:"6",y2:"6",key:"1fp77t"}],["line",{x1:"17",x2:"7",y1:"12",y2:"12",key:"rsh8ii"}],["line",{x1:"19",x2:"5",y1:"18",y2:"18",key:"1t0tuv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wm=R("AlignEndHorizontalIcon",[["rect",{width:"6",height:"16",x:"4",y:"2",rx:"2",key:"z5wdxg"}],["rect",{width:"6",height:"9",x:"14",y:"9",rx:"2",key:"um7a8w"}],["path",{d:"M22 22H2",key:"19qnx5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zm=R("AlignEndVerticalIcon",[["rect",{width:"16",height:"6",x:"2",y:"4",rx:"2",key:"10wcwx"}],["rect",{width:"9",height:"6",x:"9",y:"14",rx:"2",key:"4p5bwg"}],["path",{d:"M22 22V2",key:"12ipfv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Km=R("AlignHorizontalDistributeCenterIcon",[["rect",{width:"6",height:"14",x:"4",y:"5",rx:"2",key:"1wwnby"}],["rect",{width:"6",height:"10",x:"14",y:"7",rx:"2",key:"1fe6j6"}],["path",{d:"M17 22v-5",key:"4b6g73"}],["path",{d:"M17 7V2",key:"hnrr36"}],["path",{d:"M7 22v-3",key:"1r4jpn"}],["path",{d:"M7 5V2",key:"liy1u9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ym=R("AlignHorizontalDistributeEndIcon",[["rect",{width:"6",height:"14",x:"4",y:"5",rx:"2",key:"1wwnby"}],["rect",{width:"6",height:"10",x:"14",y:"7",rx:"2",key:"1fe6j6"}],["path",{d:"M10 2v20",key:"uyc634"}],["path",{d:"M20 2v20",key:"1tx262"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xm=R("AlignHorizontalDistributeStartIcon",[["rect",{width:"6",height:"14",x:"4",y:"5",rx:"2",key:"1wwnby"}],["rect",{width:"6",height:"10",x:"14",y:"7",rx:"2",key:"1fe6j6"}],["path",{d:"M4 2v20",key:"gtpd5x"}],["path",{d:"M14 2v20",key:"tg6bpw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qm=R("AlignHorizontalJustifyCenterIcon",[["rect",{width:"6",height:"14",x:"2",y:"5",rx:"2",key:"dy24zr"}],["rect",{width:"6",height:"10",x:"16",y:"7",rx:"2",key:"13zkjt"}],["path",{d:"M12 2v20",key:"t6zp3m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jm=R("AlignHorizontalJustifyEndIcon",[["rect",{width:"6",height:"14",x:"2",y:"5",rx:"2",key:"dy24zr"}],["rect",{width:"6",height:"10",x:"12",y:"7",rx:"2",key:"1ht384"}],["path",{d:"M22 2v20",key:"40qfg1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ev=R("AlignHorizontalJustifyStartIcon",[["rect",{width:"6",height:"14",x:"6",y:"5",rx:"2",key:"hsirpf"}],["rect",{width:"6",height:"10",x:"16",y:"7",rx:"2",key:"13zkjt"}],["path",{d:"M2 2v20",key:"1ivd8o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tv=R("AlignHorizontalSpaceAroundIcon",[["rect",{width:"6",height:"10",x:"9",y:"7",rx:"2",key:"yn7j0q"}],["path",{d:"M4 22V2",key:"tsjzd3"}],["path",{d:"M20 22V2",key:"1bnhr8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const av=R("AlignHorizontalSpaceBetweenIcon",[["rect",{width:"6",height:"14",x:"3",y:"5",rx:"2",key:"j77dae"}],["rect",{width:"6",height:"10",x:"15",y:"7",rx:"2",key:"bq30hj"}],["path",{d:"M3 2v20",key:"1d2pfg"}],["path",{d:"M21 2v20",key:"p059bm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sv=R("AlignJustifyIcon",[["line",{x1:"3",x2:"21",y1:"6",y2:"6",key:"4m8b97"}],["line",{x1:"3",x2:"21",y1:"12",y2:"12",key:"10d38w"}],["line",{x1:"3",x2:"21",y1:"18",y2:"18",key:"kwyyxn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ov=R("AlignLeftIcon",[["line",{x1:"21",x2:"3",y1:"6",y2:"6",key:"1fp77t"}],["line",{x1:"15",x2:"3",y1:"12",y2:"12",key:"v6grx8"}],["line",{x1:"17",x2:"3",y1:"18",y2:"18",key:"1awlsn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nv=R("AlignRightIcon",[["line",{x1:"21",x2:"3",y1:"6",y2:"6",key:"1fp77t"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}],["line",{x1:"21",x2:"7",y1:"18",y2:"18",key:"1g9eri"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lv=R("AlignStartHorizontalIcon",[["rect",{width:"6",height:"16",x:"4",y:"6",rx:"2",key:"1n4dg1"}],["rect",{width:"6",height:"9",x:"14",y:"6",rx:"2",key:"17khns"}],["path",{d:"M22 2H2",key:"fhrpnj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rv=R("AlignStartVerticalIcon",[["rect",{width:"9",height:"6",x:"6",y:"14",rx:"2",key:"lpm2y7"}],["rect",{width:"16",height:"6",x:"6",y:"4",rx:"2",key:"rdj6ps"}],["path",{d:"M2 2v20",key:"1ivd8o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iv=R("AlignVerticalDistributeCenterIcon",[["rect",{width:"14",height:"6",x:"5",y:"14",rx:"2",key:"jmoj9s"}],["rect",{width:"10",height:"6",x:"7",y:"4",rx:"2",key:"aza5on"}],["path",{d:"M22 7h-5",key:"o2endc"}],["path",{d:"M7 7H1",key:"105l6j"}],["path",{d:"M22 17h-3",key:"1lwga1"}],["path",{d:"M5 17H2",key:"1gx9xc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dv=R("AlignVerticalDistributeEndIcon",[["rect",{width:"14",height:"6",x:"5",y:"14",rx:"2",key:"jmoj9s"}],["rect",{width:"10",height:"6",x:"7",y:"4",rx:"2",key:"aza5on"}],["path",{d:"M2 20h20",key:"owomy5"}],["path",{d:"M2 10h20",key:"1ir3d8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cv=R("AlignVerticalDistributeStartIcon",[["rect",{width:"14",height:"6",x:"5",y:"14",rx:"2",key:"jmoj9s"}],["rect",{width:"10",height:"6",x:"7",y:"4",rx:"2",key:"aza5on"}],["path",{d:"M2 14h20",key:"myj16y"}],["path",{d:"M2 4h20",key:"mda7wb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uv=R("AlignVerticalJustifyCenterIcon",[["rect",{width:"14",height:"6",x:"5",y:"16",rx:"2",key:"1i8z2d"}],["rect",{width:"10",height:"6",x:"7",y:"2",rx:"2",key:"ypihtt"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pv=R("AlignVerticalJustifyEndIcon",[["rect",{width:"14",height:"6",x:"5",y:"12",rx:"2",key:"4l4tp2"}],["rect",{width:"10",height:"6",x:"7",y:"2",rx:"2",key:"ypihtt"}],["path",{d:"M2 22h20",key:"272qi7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _v=R("AlignVerticalJustifyStartIcon",[["rect",{width:"14",height:"6",x:"5",y:"16",rx:"2",key:"1i8z2d"}],["rect",{width:"10",height:"6",x:"7",y:"6",rx:"2",key:"13squh"}],["path",{d:"M2 2h20",key:"1ennik"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mv=R("AlignVerticalSpaceAroundIcon",[["rect",{width:"10",height:"6",x:"7",y:"9",rx:"2",key:"b1zbii"}],["path",{d:"M22 20H2",key:"1p1f7z"}],["path",{d:"M22 4H2",key:"1b7qnq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vv=R("AlignVerticalSpaceBetweenIcon",[["rect",{width:"14",height:"6",x:"5",y:"15",rx:"2",key:"1w91an"}],["rect",{width:"10",height:"6",x:"7",y:"3",rx:"2",key:"17wqzy"}],["path",{d:"M2 21h20",key:"1nyx9w"}],["path",{d:"M2 3h20",key:"91anmk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hv=R("AmpersandIcon",[["path",{d:"M17.5 12c0 4.4-3.6 8-8 8A4.5 4.5 0 0 1 5 15.5c0-6 8-4 8-8.5a3 3 0 1 0-6 0c0 3 2.5 8.5 12 13",key:"1o9ehi"}],["path",{d:"M16 12h3",key:"4uvgyw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fv=R("AmpersandsIcon",[["path",{d:"M10 17c-5-3-7-7-7-9a2 2 0 0 1 4 0c0 2.5-5 2.5-5 6 0 1.7 1.3 3 3 3 2.8 0 5-2.2 5-5",key:"12lh1k"}],["path",{d:"M22 17c-5-3-7-7-7-9a2 2 0 0 1 4 0c0 2.5-5 2.5-5 6 0 1.7 1.3 3 3 3 2.8 0 5-2.2 5-5",key:"173c68"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gv=R("AnchorIcon",[["circle",{cx:"12",cy:"5",r:"3",key:"rqqgnr"}],["line",{x1:"12",x2:"12",y1:"22",y2:"8",key:"abakz7"}],["path",{d:"M5 12H2a10 10 0 0 0 20 0h-3",key:"1hv3nh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yv=R("AngryIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 16s-1.5-2-4-2-4 2-4 2",key:"epbg0q"}],["path",{d:"M7.5 8 10 9",key:"olxxln"}],["path",{d:"m14 9 2.5-1",key:"1j6cij"}],["path",{d:"M9 10h0",key:"1vxvly"}],["path",{d:"M15 10h0",key:"1j6oav"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bv=R("AnnoyedIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 15h8",key:"45n4r"}],["path",{d:"M8 9h2",key:"1g203m"}],["path",{d:"M14 9h2",key:"116p9w"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wv=R("AntennaIcon",[["path",{d:"M2 12 7 2",key:"117k30"}],["path",{d:"m7 12 5-10",key:"1tvx22"}],["path",{d:"m12 12 5-10",key:"ev1o1a"}],["path",{d:"m17 12 5-10",key:"1e4ti3"}],["path",{d:"M4.5 7h15",key:"vlsxkz"}],["path",{d:"M12 16v6",key:"c8a4gj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kv=R("AnvilIcon",[["path",{d:"M7 10c-2.8 0-5-2.2-5-5h5",key:"1d6adc"}],["path",{d:"M7 4v8h7a8 8 0 0 0 8-8Z",key:"uu98hv"}],["path",{d:"M9 12v5",key:"3anwtq"}],["path",{d:"M15 12v5",key:"5xh3zn"}],["path",{d:"M5 20a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v1H5Z",key:"10a9tj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xv=R("ApertureIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"14.31",x2:"20.05",y1:"8",y2:"17.94",key:"jdes2e"}],["line",{x1:"9.69",x2:"21.17",y1:"8",y2:"8",key:"1gubuk"}],["line",{x1:"7.38",x2:"13.12",y1:"12",y2:"2.06",key:"1m4d1n"}],["line",{x1:"9.69",x2:"3.95",y1:"16",y2:"6.06",key:"1wye2p"}],["line",{x1:"14.31",x2:"2.83",y1:"16",y2:"16",key:"1l9f4x"}],["line",{x1:"16.62",x2:"10.88",y1:"12",y2:"21.94",key:"1jjvfs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $v=R("AppWindowIcon",[["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}],["path",{d:"M10 4v4",key:"pp8u80"}],["path",{d:"M2 8h20",key:"d11cs7"}],["path",{d:"M6 4v4",key:"1svtjw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cv=R("AppleIcon",[["path",{d:"M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z",key:"3s7exb"}],["path",{d:"M10 2c1 .5 2 2 2 5",key:"fcco2y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sv=R("ArchiveRestoreIcon",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h2",key:"tvwodi"}],["path",{d:"M20 8v11a2 2 0 0 1-2 2h-2",key:"1gkqxj"}],["path",{d:"m9 15 3-3 3 3",key:"1pd0qc"}],["path",{d:"M12 12v9",key:"192myk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ev=R("ArchiveXIcon",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"m9.5 17 5-5",key:"nakeu6"}],["path",{d:"m9.5 12 5 5",key:"1hccrj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Av=R("ArchiveIcon",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lv=R("AreaChartIcon",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["path",{d:"M7 12v5h12V8l-5 5-4-4Z",key:"zxz28u"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Iv=R("ArmchairIcon",[["path",{d:"M19 9V6a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v3",key:"irtipd"}],["path",{d:"M3 16a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v2H7v-2a2 2 0 0 0-4 0Z",key:"1e01m0"}],["path",{d:"M5 18v2",key:"ppbyun"}],["path",{d:"M19 18v2",key:"gy7782"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vv=R("ArrowBigDownDashIcon",[["path",{d:"M15 5H9",key:"1tp3ed"}],["path",{d:"M15 9v3h4l-7 7-7-7h4V9h6z",key:"oscb9h"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mv=R("ArrowBigDownIcon",[["path",{d:"M15 6v6h4l-7 7-7-7h4V6h6z",key:"1thax2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tv=R("ArrowBigLeftDashIcon",[["path",{d:"M19 15V9",key:"1hci5f"}],["path",{d:"M15 15h-3v4l-7-7 7-7v4h3v6z",key:"16tjna"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dv=R("ArrowBigLeftIcon",[["path",{d:"M18 15h-6v4l-7-7 7-7v4h6v6z",key:"lbrdak"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pv=R("ArrowBigRightDashIcon",[["path",{d:"M5 9v6",key:"158jrl"}],["path",{d:"M9 9h3V5l7 7-7 7v-4H9V9z",key:"1sg2xn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Uv=R("ArrowBigRightIcon",[["path",{d:"M6 9h6V5l7 7-7 7v-4H6V9z",key:"7fvt9c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rv=R("ArrowBigUpDashIcon",[["path",{d:"M9 19h6",key:"456am0"}],["path",{d:"M9 15v-3H5l7-7 7 7h-4v3H9z",key:"1r2uve"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ov=R("ArrowBigUpIcon",[["path",{d:"M9 18v-6H5l7-7 7 7h-4v6H9z",key:"1x06kx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fv=R("ArrowDown01Icon",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["rect",{x:"15",y:"4",width:"4",height:"6",ry:"2",key:"1bwicg"}],["path",{d:"M17 20v-6h-2",key:"1qp1so"}],["path",{d:"M15 20h4",key:"1j968p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nv=R("ArrowDown10Icon",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M17 10V4h-2",key:"zcsr5x"}],["path",{d:"M15 10h4",key:"id2lce"}],["rect",{x:"15",y:"14",width:"4",height:"6",ry:"2",key:"33xykx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zi=R("ArrowDownAZIcon",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M20 8h-5",key:"1vsyxs"}],["path",{d:"M15 10V6.5a2.5 2.5 0 0 1 5 0V10",key:"ag13bf"}],["path",{d:"M15 14h5l-5 6h5",key:"ur5jdg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jv=R("ArrowDownCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"m8 12 4 4 4-4",key:"k98ssh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hv=R("ArrowDownFromLineIcon",[["path",{d:"M19 3H5",key:"1236rx"}],["path",{d:"M12 21V7",key:"gj6g52"}],["path",{d:"m6 15 6 6 6-6",key:"h15q88"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qv=R("ArrowDownLeftFromCircleIcon",[["path",{d:"M2 12a10 10 0 1 1 10 10",key:"1yn6ov"}],["path",{d:"m2 22 10-10",key:"28ilpk"}],["path",{d:"M8 22H2v-6",key:"sulq54"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zv=R("ArrowDownLeftSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m16 8-8 8",key:"166keh"}],["path",{d:"M16 16H8V8",key:"1w2ppm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bv=R("ArrowDownLeftIcon",[["path",{d:"M17 7 7 17",key:"15tmo1"}],["path",{d:"M17 17H7V7",key:"1org7z"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gv=R("ArrowDownNarrowWideIcon",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h4",key:"6d7r33"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h10",key:"1438ji"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wv=R("ArrowDownRightFromCircleIcon",[["path",{d:"M12 22a10 10 0 1 1 10-10",key:"130bv5"}],["path",{d:"M22 22 12 12",key:"131aw7"}],["path",{d:"M22 16v6h-6",key:"1gvm70"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zv=R("ArrowDownRightSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m8 8 8 8",key:"1imecy"}],["path",{d:"M16 8v8H8",key:"1lbpgo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kv=R("ArrowDownRightIcon",[["path",{d:"m7 7 10 10",key:"1fmybs"}],["path",{d:"M17 7v10H7",key:"6fjiku"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yv=R("ArrowDownSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"m8 12 4 4 4-4",key:"k98ssh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xv=R("ArrowDownToDotIcon",[["path",{d:"M12 2v14",key:"jyx4ut"}],["path",{d:"m19 9-7 7-7-7",key:"1oe3oy"}],["circle",{cx:"12",cy:"21",r:"1",key:"o0uj5v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qv=R("ArrowDownToLineIcon",[["path",{d:"M12 17V3",key:"1cwfxf"}],["path",{d:"m6 11 6 6 6-6",key:"12ii2o"}],["path",{d:"M19 21H5",key:"150jfl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jv=R("ArrowDownUpIcon",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"m21 8-4-4-4 4",key:"1c9v7m"}],["path",{d:"M17 4v16",key:"7dpous"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ki=R("ArrowDownWideNarrowIcon",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yi=R("ArrowDownZAIcon",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M15 4h5l-5 6h5",key:"8asdl1"}],["path",{d:"M15 20v-3.5a2.5 2.5 0 0 1 5 0V20",key:"r6l5cz"}],["path",{d:"M20 18h-5",key:"18j1r2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e1=R("ArrowDownIcon",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t1=R("ArrowLeftCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 12H8",key:"1fr5h0"}],["path",{d:"m12 8-4 4 4 4",key:"15vm53"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a1=R("ArrowLeftFromLineIcon",[["path",{d:"m9 6-6 6 6 6",key:"7v63n9"}],["path",{d:"M3 12h14",key:"13k4hi"}],["path",{d:"M21 19V5",key:"b4bplr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s1=R("ArrowLeftRightIcon",[["path",{d:"M8 3 4 7l4 4",key:"9rb6wj"}],["path",{d:"M4 7h16",key:"6tx8e3"}],["path",{d:"m16 21 4-4-4-4",key:"siv7j2"}],["path",{d:"M20 17H4",key:"h6l3hr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o1=R("ArrowLeftSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m12 8-4 4 4 4",key:"15vm53"}],["path",{d:"M16 12H8",key:"1fr5h0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n1=R("ArrowLeftToLineIcon",[["path",{d:"M3 19V5",key:"rwsyhb"}],["path",{d:"m13 6-6 6 6 6",key:"1yhaz7"}],["path",{d:"M7 12h14",key:"uoisry"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l1=R("ArrowLeftIcon",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r1=R("ArrowRightCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"m12 16 4-4-4-4",key:"1i9zcv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i1=R("ArrowRightFromLineIcon",[["path",{d:"M3 5v14",key:"1nt18q"}],["path",{d:"M21 12H7",key:"13ipq5"}],["path",{d:"m15 18 6-6-6-6",key:"6tx3qv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d1=R("ArrowRightLeftIcon",[["path",{d:"m16 3 4 4-4 4",key:"1x1c3m"}],["path",{d:"M20 7H4",key:"zbl0bi"}],["path",{d:"m8 21-4-4 4-4",key:"h9nckh"}],["path",{d:"M4 17h16",key:"g4d7ey"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c1=R("ArrowRightSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"m12 16 4-4-4-4",key:"1i9zcv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u1=R("ArrowRightToLineIcon",[["path",{d:"M17 12H3",key:"8awo09"}],["path",{d:"m11 18 6-6-6-6",key:"8c2y43"}],["path",{d:"M21 5v14",key:"nzette"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p1=R("ArrowRightIcon",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _1=R("ArrowUp01Icon",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["rect",{x:"15",y:"4",width:"4",height:"6",ry:"2",key:"1bwicg"}],["path",{d:"M17 20v-6h-2",key:"1qp1so"}],["path",{d:"M15 20h4",key:"1j968p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m1=R("ArrowUp10Icon",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M17 10V4h-2",key:"zcsr5x"}],["path",{d:"M15 10h4",key:"id2lce"}],["rect",{x:"15",y:"14",width:"4",height:"6",ry:"2",key:"33xykx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xi=R("ArrowUpAZIcon",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M20 8h-5",key:"1vsyxs"}],["path",{d:"M15 10V6.5a2.5 2.5 0 0 1 5 0V10",key:"ag13bf"}],["path",{d:"M15 14h5l-5 6h5",key:"ur5jdg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v1=R("ArrowUpCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h1=R("ArrowUpDownIcon",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f1=R("ArrowUpFromDotIcon",[["path",{d:"m5 9 7-7 7 7",key:"1hw5ic"}],["path",{d:"M12 16V2",key:"ywoabb"}],["circle",{cx:"12",cy:"21",r:"1",key:"o0uj5v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g1=R("ArrowUpFromLineIcon",[["path",{d:"m18 9-6-6-6 6",key:"kcunyi"}],["path",{d:"M12 3v14",key:"7cf3v8"}],["path",{d:"M5 21h14",key:"11awu3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y1=R("ArrowUpLeftFromCircleIcon",[["path",{d:"M2 8V2h6",key:"hiwtdz"}],["path",{d:"m2 2 10 10",key:"1oh8rs"}],["path",{d:"M12 2A10 10 0 1 1 2 12",key:"rrk4fa"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b1=R("ArrowUpLeftSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 16V8h8",key:"19xb1h"}],["path",{d:"M16 16 8 8",key:"1qdy8n"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w1=R("ArrowUpLeftIcon",[["path",{d:"M7 17V7h10",key:"11bw93"}],["path",{d:"M17 17 7 7",key:"2786uv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qi=R("ArrowUpNarrowWideIcon",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h4",key:"q8tih4"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h10",key:"jvxblo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k1=R("ArrowUpRightFromCircleIcon",[["path",{d:"M22 12A10 10 0 1 1 12 2",key:"1fm58d"}],["path",{d:"M22 2 12 12",key:"yg2myt"}],["path",{d:"M16 2h6v6",key:"zan5cs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x1=R("ArrowUpRightSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 8h8v8",key:"b65dnt"}],["path",{d:"m8 16 8-8",key:"13b9ih"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $1=R("ArrowUpRightIcon",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C1=R("ArrowUpSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S1=R("ArrowUpToLineIcon",[["path",{d:"M5 3h14",key:"7usisc"}],["path",{d:"m18 13-6-6-6 6",key:"1kf1n9"}],["path",{d:"M12 7v14",key:"1akyts"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E1=R("ArrowUpWideNarrowIcon",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ji=R("ArrowUpZAIcon",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M15 4h5l-5 6h5",key:"8asdl1"}],["path",{d:"M15 20v-3.5a2.5 2.5 0 0 1 5 0V20",key:"r6l5cz"}],["path",{d:"M20 18h-5",key:"18j1r2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A1=R("ArrowUpIcon",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L1=R("ArrowsUpFromLineIcon",[["path",{d:"m4 6 3-3 3 3",key:"9aidw8"}],["path",{d:"M7 17V3",key:"19qxw1"}],["path",{d:"m14 6 3-3 3 3",key:"6iy689"}],["path",{d:"M17 17V3",key:"o0fmgi"}],["path",{d:"M4 21h16",key:"1h09gz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I1=R("AsteriskIcon",[["path",{d:"M12 6v12",key:"1vza4d"}],["path",{d:"M17.196 9 6.804 15",key:"1ah31z"}],["path",{d:"m6.804 9 10.392 6",key:"1b6pxd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V1=R("AtSignIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8",key:"7n84p3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M1=R("AtomIcon",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z",key:"1l2ple"}],["path",{d:"M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z",key:"1wam0m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T1=R("AudioLinesIcon",[["path",{d:"M2 10v3",key:"1fnikh"}],["path",{d:"M6 6v11",key:"11sgs0"}],["path",{d:"M10 3v18",key:"yhl04a"}],["path",{d:"M14 8v7",key:"3a1oy3"}],["path",{d:"M18 5v13",key:"123xd1"}],["path",{d:"M22 10v3",key:"154ddg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D1=R("AudioWaveformIcon",[["path",{d:"M2 13a2 2 0 0 0 2-2V7a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0V4a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0v-4a2 2 0 0 1 2-2",key:"57tc96"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P1=R("AwardIcon",[["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}],["path",{d:"M15.477 12.89 17 22l-5-3-5 3 1.523-9.11",key:"em7aur"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U1=R("AxeIcon",[["path",{d:"m14 12-8.5 8.5a2.12 2.12 0 1 1-3-3L11 9",key:"csbz4o"}],["path",{d:"M15 13 9 7l4-4 6 6h3a8 8 0 0 1-7 7z",key:"113wfo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ed=R("Axis3dIcon",[["path",{d:"M4 4v16h16",key:"1s015l"}],["path",{d:"m4 20 7-7",key:"17qe9y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R1=R("BabyIcon",[["path",{d:"M9 12h.01",key:"157uk2"}],["path",{d:"M15 12h.01",key:"1k8ypt"}],["path",{d:"M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5",key:"1u7htd"}],["path",{d:"M19 6.3a9 9 0 0 1 1.8 3.9 2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1",key:"5yv0yz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O1=R("BackpackIcon",[["path",{d:"M4 10a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z",key:"wvr1b5"}],["path",{d:"M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2",key:"donm21"}],["path",{d:"M8 21v-5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v5",key:"xk3gvk"}],["path",{d:"M8 10h8",key:"c7uz4u"}],["path",{d:"M8 18h8",key:"1no2b1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F1=R("BadgeAlertIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N1=R("BadgeCentIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M12 7v10",key:"jspqdw"}],["path",{d:"M15.4 10a4 4 0 1 0 0 4",key:"2eqtx8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const td=R("BadgeCheckIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j1=R("BadgeDollarSignIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 18V6",key:"zqpxq5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H1=R("BadgeEuroIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M7 12h5",key:"gblrwe"}],["path",{d:"M15 9.4a4 4 0 1 0 0 5.2",key:"1makmb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q1=R("BadgeHelpIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["line",{x1:"12",x2:"12.01",y1:"17",y2:"17",key:"io3f8k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z1=R("BadgeIndianRupeeIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M8 8h8",key:"1bis0t"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"m13 17-5-1h1a4 4 0 0 0 0-8",key:"nu2bwa"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B1=R("BadgeInfoIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["line",{x1:"12",x2:"12",y1:"16",y2:"12",key:"1y1yb1"}],["line",{x1:"12",x2:"12.01",y1:"8",y2:"8",key:"110wyk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G1=R("BadgeJapaneseYenIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 8 3 3v7",key:"17yadx"}],["path",{d:"m12 11 3-3",key:"p4cfq1"}],["path",{d:"M9 12h6",key:"1c52cq"}],["path",{d:"M9 16h6",key:"8wimt3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W1=R("BadgeMinusIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z1=R("BadgePercentIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M9 9h.01",key:"1q5me6"}],["path",{d:"M15 15h.01",key:"lqbp3k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K1=R("BadgePlusIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["line",{x1:"12",x2:"12",y1:"8",y2:"16",key:"10p56q"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y1=R("BadgePoundSterlingIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M8 12h4",key:"qz6y1c"}],["path",{d:"M10 16V9.5a2.5 2.5 0 0 1 5 0",key:"3mlbjk"}],["path",{d:"M8 16h7",key:"sbedsn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X1=R("BadgeRussianRubleIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M9 16h5",key:"1syiyw"}],["path",{d:"M9 12h5a2 2 0 1 0 0-4h-3v9",key:"1ge9c1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q1=R("BadgeSwissFrancIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M11 17V8h4",key:"1bfq6y"}],["path",{d:"M11 12h3",key:"2eqnfz"}],["path",{d:"M9 16h4",key:"1skf3a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J1=R("BadgeXIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["line",{x1:"15",x2:"9",y1:"9",y2:"15",key:"f7djnv"}],["line",{x1:"9",x2:"15",y1:"9",y2:"15",key:"1shsy8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eh=R("BadgeIcon",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const th=R("BaggageClaimIcon",[["path",{d:"M22 18H6a2 2 0 0 1-2-2V7a2 2 0 0 0-2-2",key:"4irg2o"}],["path",{d:"M17 14V4a2 2 0 0 0-2-2h-1a2 2 0 0 0-2 2v10",key:"14fcyx"}],["rect",{width:"13",height:"8",x:"8",y:"6",rx:"1",key:"o6oiis"}],["circle",{cx:"18",cy:"20",r:"2",key:"t9985n"}],["circle",{cx:"9",cy:"20",r:"2",key:"e5v82j"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ah=R("BanIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sh=R("BananaIcon",[["path",{d:"M4 13c3.5-2 8-2 10 2a5.5 5.5 0 0 1 8 5",key:"1cscit"}],["path",{d:"M5.15 17.89c5.52-1.52 8.65-6.89 7-12C11.55 4 11.5 2 13 2c3.22 0 5 5.5 5 8 0 6.5-4.2 12-10.49 12C5.11 22 2 22 2 20c0-1.5 1.14-1.55 3.15-2.11Z",key:"1y1nbv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oh=R("BanknoteIcon",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M6 12h.01M18 12h.01",key:"113zkx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nh=R("BarChart2Icon",[["line",{x1:"18",x2:"18",y1:"20",y2:"10",key:"1xfpm4"}],["line",{x1:"12",x2:"12",y1:"20",y2:"4",key:"be30l9"}],["line",{x1:"6",x2:"6",y1:"20",y2:"14",key:"1r4le6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lh=R("BarChart3Icon",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rh=R("BarChart4Icon",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["path",{d:"M13 17V9",key:"1fwyjl"}],["path",{d:"M18 17V5",key:"sfb6ij"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ih=R("BarChartBigIcon",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["rect",{width:"4",height:"7",x:"7",y:"10",rx:"1",key:"14u6mf"}],["rect",{width:"4",height:"12",x:"15",y:"5",rx:"1",key:"b3pek6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dh=R("BarChartHorizontalBigIcon",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["rect",{width:"12",height:"4",x:"7",y:"5",rx:"1",key:"936jl1"}],["rect",{width:"7",height:"4",x:"7",y:"13",rx:"1",key:"jqfkpy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ch=R("BarChartHorizontalIcon",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["path",{d:"M7 16h8",key:"srdodz"}],["path",{d:"M7 11h12",key:"127s9w"}],["path",{d:"M7 6h3",key:"w9rmul"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uh=R("BarChartIcon",[["line",{x1:"12",x2:"12",y1:"20",y2:"10",key:"1vz5eb"}],["line",{x1:"18",x2:"18",y1:"20",y2:"4",key:"cun8e5"}],["line",{x1:"6",x2:"6",y1:"20",y2:"16",key:"hq0ia6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ph=R("BarcodeIcon",[["path",{d:"M3 5v14",key:"1nt18q"}],["path",{d:"M8 5v14",key:"1ybrkv"}],["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"M17 5v14",key:"ycjyhj"}],["path",{d:"M21 5v14",key:"nzette"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _h=R("BaselineIcon",[["path",{d:"M4 20h16",key:"14thso"}],["path",{d:"m6 16 6-12 6 12",key:"1b4byz"}],["path",{d:"M8 12h8",key:"1wcyev"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mh=R("BathIcon",[["path",{d:"M9 6 6.5 3.5a1.5 1.5 0 0 0-1-.5C4.683 3 4 3.683 4 4.5V17a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5",key:"1r8yf5"}],["line",{x1:"10",x2:"8",y1:"5",y2:"7",key:"h5g8z4"}],["line",{x1:"2",x2:"22",y1:"12",y2:"12",key:"1dnqot"}],["line",{x1:"7",x2:"7",y1:"19",y2:"21",key:"16jp00"}],["line",{x1:"17",x2:"17",y1:"19",y2:"21",key:"1pxrnk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vh=R("BatteryChargingIcon",[["path",{d:"M15 7h1a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-2",key:"1sdynx"}],["path",{d:"M6 7H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h1",key:"1gkd3k"}],["path",{d:"m11 7-3 5h4l-3 5",key:"b4a64w"}],["line",{x1:"22",x2:"22",y1:"11",y2:"13",key:"4dh1rd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hh=R("BatteryFullIcon",[["rect",{width:"16",height:"10",x:"2",y:"7",rx:"2",ry:"2",key:"1w10f2"}],["line",{x1:"22",x2:"22",y1:"11",y2:"13",key:"4dh1rd"}],["line",{x1:"6",x2:"6",y1:"11",y2:"13",key:"1wd6dw"}],["line",{x1:"10",x2:"10",y1:"11",y2:"13",key:"haxvl5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"13",key:"c6fn6x"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fh=R("BatteryLowIcon",[["rect",{width:"16",height:"10",x:"2",y:"7",rx:"2",ry:"2",key:"1w10f2"}],["line",{x1:"22",x2:"22",y1:"11",y2:"13",key:"4dh1rd"}],["line",{x1:"6",x2:"6",y1:"11",y2:"13",key:"1wd6dw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gh=R("BatteryMediumIcon",[["rect",{width:"16",height:"10",x:"2",y:"7",rx:"2",ry:"2",key:"1w10f2"}],["line",{x1:"22",x2:"22",y1:"11",y2:"13",key:"4dh1rd"}],["line",{x1:"6",x2:"6",y1:"11",y2:"13",key:"1wd6dw"}],["line",{x1:"10",x2:"10",y1:"11",y2:"13",key:"haxvl5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yh=R("BatteryWarningIcon",[["path",{d:"M14 7h2a2 2 0 0 1 2 2v6c0 1-1 2-2 2h-2",key:"1if82c"}],["path",{d:"M6 7H4a2 2 0 0 0-2 2v6c0 1 1 2 2 2h2",key:"2pdlyl"}],["line",{x1:"22",x2:"22",y1:"11",y2:"13",key:"4dh1rd"}],["line",{x1:"10",x2:"10",y1:"7",y2:"13",key:"1uzyus"}],["line",{x1:"10",x2:"10",y1:"17",y2:"17.01",key:"1y8k4g"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bh=R("BatteryIcon",[["rect",{width:"16",height:"10",x:"2",y:"7",rx:"2",ry:"2",key:"1w10f2"}],["line",{x1:"22",x2:"22",y1:"11",y2:"13",key:"4dh1rd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wh=R("BeakerIcon",[["path",{d:"M4.5 3h15",key:"c7n0jr"}],["path",{d:"M6 3v16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V3",key:"m1uhx7"}],["path",{d:"M6 14h12",key:"4cwo0f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kh=R("BeanOffIcon",[["path",{d:"M9 9c-.64.64-1.521.954-2.402 1.165A6 6 0 0 0 8 22a13.96 13.96 0 0 0 9.9-4.1",key:"bq3udt"}],["path",{d:"M10.75 5.093A6 6 0 0 1 22 8c0 2.411-.61 4.68-1.683 6.66",key:"17ccse"}],["path",{d:"M5.341 10.62a4 4 0 0 0 6.487 1.208M10.62 5.341a4.015 4.015 0 0 1 2.039 2.04",key:"18zqgq"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xh=R("BeanIcon",[["path",{d:"M10.165 6.598C9.954 7.478 9.64 8.36 9 9c-.64.64-1.521.954-2.402 1.165A6 6 0 0 0 8 22c7.732 0 14-6.268 14-14a6 6 0 0 0-11.835-1.402Z",key:"1tvzk7"}],["path",{d:"M5.341 10.62a4 4 0 1 0 5.279-5.28",key:"2cyri2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $h=R("BedDoubleIcon",[["path",{d:"M2 20v-8a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v8",key:"1k78r4"}],["path",{d:"M4 10V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4",key:"fb3tl2"}],["path",{d:"M12 4v6",key:"1dcgq2"}],["path",{d:"M2 18h20",key:"ajqnye"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ch=R("BedSingleIcon",[["path",{d:"M3 20v-8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v8",key:"1wm6mi"}],["path",{d:"M5 10V6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v4",key:"4k93s5"}],["path",{d:"M3 18h18",key:"1h113x"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sh=R("BedIcon",[["path",{d:"M2 4v16",key:"vw9hq8"}],["path",{d:"M2 8h18a2 2 0 0 1 2 2v10",key:"1dgv2r"}],["path",{d:"M2 17h20",key:"18nfp3"}],["path",{d:"M6 8v9",key:"1yriud"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Eh=R("BeefIcon",[["circle",{cx:"12.5",cy:"8.5",r:"2.5",key:"9738u8"}],["path",{d:"M12.5 2a6.5 6.5 0 0 0-6.22 4.6c-1.1 3.13-.78 3.9-3.18 6.08A3 3 0 0 0 5 18c4 0 8.4-1.8 11.4-4.3A6.5 6.5 0 0 0 12.5 2Z",key:"o0f6za"}],["path",{d:"m18.5 6 2.19 4.5a6.48 6.48 0 0 1 .31 2 6.49 6.49 0 0 1-2.6 5.2C15.4 20.2 11 22 7 22a3 3 0 0 1-2.68-1.66L2.4 16.5",key:"k7p6i0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ah=R("BeerIcon",[["path",{d:"M17 11h1a3 3 0 0 1 0 6h-1",key:"1yp76v"}],["path",{d:"M9 12v6",key:"1u1cab"}],["path",{d:"M13 12v6",key:"1sugkk"}],["path",{d:"M14 7.5c-1 0-1.44.5-3 .5s-2-.5-3-.5-1.72.5-2.5.5a2.5 2.5 0 0 1 0-5c.78 0 1.57.5 2.5.5S9.44 2 11 2s2 1.5 3 1.5 1.72-.5 2.5-.5a2.5 2.5 0 0 1 0 5c-.78 0-1.5-.5-2.5-.5Z",key:"1510fo"}],["path",{d:"M5 8v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"19jb7n"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lh=R("BellDotIcon",[["path",{d:"M19.4 14.9C20.2 16.4 21 17 21 17H3s3-2 3-9c0-3.3 2.7-6 6-6 .7 0 1.3.1 1.9.3",key:"xcehk"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}],["circle",{cx:"18",cy:"8",r:"3",key:"1g0gzu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ih=R("BellElectricIcon",[["path",{d:"M18.8 4A6.3 8.7 0 0 1 20 9",key:"xve1fh"}],["path",{d:"M9 9h.01",key:"1q5me6"}],["circle",{cx:"9",cy:"9",r:"7",key:"p2h5vp"}],["rect",{width:"10",height:"6",x:"4",y:"16",rx:"2",key:"17f3te"}],["path",{d:"M14 19c3 0 4.6-1.6 4.6-1.6",key:"n7odp6"}],["circle",{cx:"20",cy:"16",r:"2",key:"1v9bxh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vh=R("BellMinusIcon",[["path",{d:"M18.4 12c.8 3.8 2.6 5 2.6 5H3s3-2 3-9c0-3.3 2.7-6 6-6 1.8 0 3.4.8 4.5 2",key:"eck70s"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}],["path",{d:"M15 8h6",key:"8ybuxh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mh=R("BellOffIcon",[["path",{d:"M8.7 3A6 6 0 0 1 18 8a21.3 21.3 0 0 0 .6 5",key:"o7mx20"}],["path",{d:"M17 17H3s3-2 3-9a4.67 4.67 0 0 1 .3-1.7",key:"16f1lm"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Th=R("BellPlusIcon",[["path",{d:"M19.3 14.8C20.1 16.4 21 17 21 17H3s3-2 3-9c0-3.3 2.7-6 6-6 1 0 1.9.2 2.8.7",key:"guizqy"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}],["path",{d:"M15 8h6",key:"8ybuxh"}],["path",{d:"M18 5v6",key:"g5ayrv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dh=R("BellRingIcon",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}],["path",{d:"M4 2C2.8 3.7 2 5.7 2 8",key:"tap9e0"}],["path",{d:"M22 8c0-2.3-.8-4.3-2-6",key:"5bb3ad"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ph=R("BellIcon",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Uh=R("BikeIcon",[["circle",{cx:"18.5",cy:"17.5",r:"3.5",key:"15x4ox"}],["circle",{cx:"5.5",cy:"17.5",r:"3.5",key:"1noe27"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["path",{d:"M12 17.5V14l-3-3 4-3 2 3h2",key:"1npguv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rh=R("BinaryIcon",[["rect",{x:"14",y:"14",width:"4",height:"6",rx:"2",key:"p02svl"}],["rect",{x:"6",y:"4",width:"4",height:"6",rx:"2",key:"xm4xkj"}],["path",{d:"M6 20h4",key:"1i6q5t"}],["path",{d:"M14 10h4",key:"ru81e7"}],["path",{d:"M6 14h2v6",key:"16z9wg"}],["path",{d:"M14 4h2v6",key:"1idq9u"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Oh=R("BiohazardIcon",[["circle",{cx:"12",cy:"11.9",r:"2",key:"e8h31w"}],["path",{d:"M6.7 3.4c-.9 2.5 0 5.2 2.2 6.7C6.5 9 3.7 9.6 2 11.6",key:"17bolr"}],["path",{d:"m8.9 10.1 1.4.8",key:"15ezny"}],["path",{d:"M17.3 3.4c.9 2.5 0 5.2-2.2 6.7 2.4-1.2 5.2-.6 6.9 1.5",key:"wtwa5u"}],["path",{d:"m15.1 10.1-1.4.8",key:"1r0b28"}],["path",{d:"M16.7 20.8c-2.6-.4-4.6-2.6-4.7-5.3-.2 2.6-2.1 4.8-4.7 5.2",key:"m7qszh"}],["path",{d:"M12 13.9v1.6",key:"zfyyim"}],["path",{d:"M13.5 5.4c-1-.2-2-.2-3 0",key:"1bi9q0"}],["path",{d:"M17 16.4c.7-.7 1.2-1.6 1.5-2.5",key:"1rhjqw"}],["path",{d:"M5.5 13.9c.3.9.8 1.8 1.5 2.5",key:"8gsud3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fh=R("BirdIcon",[["path",{d:"M16 7h.01",key:"1kdx03"}],["path",{d:"M3.4 18H12a8 8 0 0 0 8-8V7a4 4 0 0 0-7.28-2.3L2 20",key:"oj1oa8"}],["path",{d:"m20 7 2 .5-2 .5",key:"12nv4d"}],["path",{d:"M10 18v3",key:"1yea0a"}],["path",{d:"M14 17.75V21",key:"1pymcb"}],["path",{d:"M7 18a6 6 0 0 0 3.84-10.61",key:"1npnn0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nh=R("BitcoinIcon",[["path",{d:"M11.767 19.089c4.924.868 6.14-6.025 1.216-6.894m-1.216 6.894L5.86 18.047m5.908 1.042-.347 1.97m1.563-8.864c4.924.869 6.14-6.025 1.215-6.893m-1.215 6.893-3.94-.694m5.155-6.2L8.29 4.26m5.908 1.042.348-1.97M7.48 20.364l3.126-17.727",key:"yr8idg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jh=R("BlindsIcon",[["path",{d:"M3 3h18",key:"o7r712"}],["path",{d:"M20 7H8",key:"gd2fo2"}],["path",{d:"M20 11H8",key:"1ynp89"}],["path",{d:"M10 19h10",key:"19hjk5"}],["path",{d:"M8 15h12",key:"1yqzne"}],["path",{d:"M4 3v14",key:"fggqzn"}],["circle",{cx:"4",cy:"19",r:"2",key:"p3m9r0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hh=R("BlocksIcon",[["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["path",{d:"M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3",key:"1fpvtg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qh=R("BluetoothConnectedIcon",[["path",{d:"m7 7 10 10-5 5V2l5 5L7 17",key:"1q5490"}],["line",{x1:"18",x2:"21",y1:"12",y2:"12",key:"1rsjjs"}],["line",{x1:"3",x2:"6",y1:"12",y2:"12",key:"11yl8c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zh=R("BluetoothOffIcon",[["path",{d:"m17 17-5 5V12l-5 5",key:"v5aci6"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M14.5 9.5 17 7l-5-5v4.5",key:"1kddfz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bh=R("BluetoothSearchingIcon",[["path",{d:"m7 7 10 10-5 5V2l5 5L7 17",key:"1q5490"}],["path",{d:"M20.83 14.83a4 4 0 0 0 0-5.66",key:"k8tn1j"}],["path",{d:"M18 12h.01",key:"yjnet6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gh=R("BluetoothIcon",[["path",{d:"m7 7 10 10-5 5V2l5 5L7 17",key:"1q5490"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wh=R("BoldIcon",[["path",{d:"M14 12a4 4 0 0 0 0-8H6v8",key:"v2sylx"}],["path",{d:"M15 20a4 4 0 0 0 0-8H6v8Z",key:"1ef5ya"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zh=R("BoltIcon",[["path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",key:"yt0hxn"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kh=R("BombIcon",[["circle",{cx:"11",cy:"13",r:"9",key:"hd149"}],["path",{d:"M14.35 4.65 16.3 2.7a2.41 2.41 0 0 1 3.4 0l1.6 1.6a2.4 2.4 0 0 1 0 3.4l-1.95 1.95",key:"jp4j1b"}],["path",{d:"m22 2-1.5 1.5",key:"ay92ug"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yh=R("BoneIcon",[["path",{d:"M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z",key:"w610uw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xh=R("BookAIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"m8 13 4-7 4 7",key:"4rari8"}],["path",{d:"M9.1 11h5.7",key:"1gkovt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qh=R("BookAudioIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"M8 8v3",key:"1qzp49"}],["path",{d:"M12 6v7",key:"1f6ttz"}],["path",{d:"M16 8v3",key:"gejaml"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jh=R("BookCheckIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"m9 9.5 2 2 4-4",key:"1dth82"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ef=R("BookCopyIcon",[["path",{d:"M2 16V4a2 2 0 0 1 2-2h11",key:"spzkk5"}],["path",{d:"M5 14H4a2 2 0 1 0 0 4h1",key:"16gqf9"}],["path",{d:"M22 18H11a2 2 0 1 0 0 4h11V6H11a2 2 0 0 0-2 2v12",key:"1owzki"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ad=R("BookDashedIcon",[["path",{d:"M20 22h-2",key:"1rpnb6"}],["path",{d:"M20 15v2h-2",key:"fph276"}],["path",{d:"M4 19.5V15",key:"6gr39e"}],["path",{d:"M20 8v3",key:"deu0bs"}],["path",{d:"M18 2h2v2",key:"180o53"}],["path",{d:"M4 11V9",key:"v3xsx8"}],["path",{d:"M12 2h2",key:"cvn524"}],["path",{d:"M12 22h2",key:"kn7ki6"}],["path",{d:"M12 17h2",key:"13u4lk"}],["path",{d:"M8 22H6.5a2.5 2.5 0 0 1 0-5H8",key:"fiseg2"}],["path",{d:"M4 5v-.5A2.5 2.5 0 0 1 6.5 2H8",key:"wywhs9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tf=R("BookDownIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"M12 13V7",key:"h0r20n"}],["path",{d:"m9 10 3 3 3-3",key:"zt5b4y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const af=R("BookHeadphonesIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["path",{d:"M8 12v-2a4 4 0 0 1 8 0v2",key:"1vsqkj"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sf=R("BookHeartIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"M16 8.2C16 7 15 6 13.8 6c-.8 0-1.4.3-1.8.9-.4-.6-1-.9-1.8-.9C9 6 8 7 8 8.2c0 .6.3 1.2.7 1.6h0C10 11.1 12 13 12 13s2-1.9 3.3-3.1h0c.4-.4.7-1 .7-1.7z",key:"1dlbw1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const of=R("BookImageIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["circle",{cx:"10",cy:"8",r:"2",key:"2qkj4p"}],["path",{d:"m20 13.7-2.1-2.1c-.8-.8-2-.8-2.8 0L9.7 17",key:"160say"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nf=R("BookKeyIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H14",key:"1gfsgw"}],["path",{d:"M20 8v14H6.5a2.5 2.5 0 0 1 0-5H20",key:"zb0ngp"}],["circle",{cx:"14",cy:"8",r:"2",key:"u49eql"}],["path",{d:"m20 2-4.5 4.5",key:"1sppr8"}],["path",{d:"m19 3 1 1",key:"ze14oc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lf=R("BookLockIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H10",key:"18wgow"}],["path",{d:"M20 15v7H6.5a2.5 2.5 0 0 1 0-5H20",key:"dpch1j"}],["rect",{width:"8",height:"5",x:"12",y:"6",rx:"1",key:"9nqwug"}],["path",{d:"M18 6V4a2 2 0 1 0-4 0v2",key:"1aquzs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rf=R("BookMarkedIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["polyline",{points:"10 2 10 10 13 7 16 10 16 2",key:"13o6vz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const df=R("BookMinusIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"M9 10h6",key:"9gxzsh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cf=R("BookOpenCheckIcon",[["path",{d:"M8 3H2v15h7c1.7 0 3 1.3 3 3V7c0-2.2-1.8-4-4-4Z",key:"1i8u0n"}],["path",{d:"m16 12 2 2 4-4",key:"mdajum"}],["path",{d:"M22 6V3h-6c-2.2 0-4 1.8-4 4v14c0-1.7 1.3-3 3-3h7v-2.3",key:"jb5l51"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uf=R("BookOpenTextIcon",[["path",{d:"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z",key:"vv98re"}],["path",{d:"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z",key:"1cyq3y"}],["path",{d:"M6 8h2",key:"30oboj"}],["path",{d:"M6 12h2",key:"32wvfc"}],["path",{d:"M16 8h2",key:"msurwy"}],["path",{d:"M16 12h2",key:"7q9ll5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pf=R("BookOpenIcon",[["path",{d:"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z",key:"vv98re"}],["path",{d:"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z",key:"1cyq3y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _f=R("BookPlusIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"M9 10h6",key:"9gxzsh"}],["path",{d:"M12 7v6",key:"lw1j43"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mf=R("BookTextIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"M8 7h6",key:"1f0q6e"}],["path",{d:"M8 11h8",key:"vwpz6n"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vf=R("BookTypeIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"M16 8V6H8v2",key:"x8j6u4"}],["path",{d:"M12 6v7",key:"1f6ttz"}],["path",{d:"M10 13h4",key:"ytezjc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hf=R("BookUp2Icon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2",key:"1lorq7"}],["path",{d:"M18 2h2v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"1nfm9i"}],["path",{d:"M12 13V7",key:"h0r20n"}],["path",{d:"m9 10 3-3 3 3",key:"11gsxs"}],["path",{d:"m9 5 3-3 3 3",key:"l8vdw6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ff=R("BookUpIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"M12 13V7",key:"h0r20n"}],["path",{d:"m9 10 3-3 3 3",key:"11gsxs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gf=R("BookUserIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["path",{d:"M15 13a3 3 0 1 0-6 0",key:"10j68g"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yf=R("BookXIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}],["path",{d:"m14.5 7-5 5",key:"dy991v"}],["path",{d:"m9.5 7 5 5",key:"s45iea"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bf=R("BookIcon",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wf=R("BookmarkCheckIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z",key:"169p4p"}],["path",{d:"m9 10 2 2 4-4",key:"1gnqz4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kf=R("BookmarkMinusIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}],["line",{x1:"15",x2:"9",y1:"10",y2:"10",key:"1gty7f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xf=R("BookmarkPlusIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}],["line",{x1:"12",x2:"12",y1:"7",y2:"13",key:"1cppfj"}],["line",{x1:"15",x2:"9",y1:"10",y2:"10",key:"1gty7f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $f=R("BookmarkXIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z",key:"169p4p"}],["path",{d:"m14.5 7.5-5 5",key:"3lb6iw"}],["path",{d:"m9.5 7.5 5 5",key:"ko136h"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cf=R("BookmarkIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sf=R("BoomBoxIcon",[["path",{d:"M4 9V5a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4",key:"vvzvr1"}],["path",{d:"M8 8v1",key:"xcqmfk"}],["path",{d:"M12 8v1",key:"1rj8u4"}],["path",{d:"M16 8v1",key:"1q12zr"}],["rect",{width:"20",height:"12",x:"2",y:"9",rx:"2",key:"igpb89"}],["circle",{cx:"8",cy:"15",r:"2",key:"fa4a8s"}],["circle",{cx:"16",cy:"15",r:"2",key:"14c3ya"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ef=R("BotIcon",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Af=R("BoxSelectIcon",[["path",{d:"M5 3a2 2 0 0 0-2 2",key:"y57alp"}],["path",{d:"M19 3a2 2 0 0 1 2 2",key:"18rm91"}],["path",{d:"M21 19a2 2 0 0 1-2 2",key:"1j7049"}],["path",{d:"M5 21a2 2 0 0 1-2-2",key:"sbafld"}],["path",{d:"M9 3h1",key:"1yesri"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M14 3h1",key:"1ec4yj"}],["path",{d:"M14 21h1",key:"v9vybs"}],["path",{d:"M3 9v1",key:"1r0deq"}],["path",{d:"M21 9v1",key:"mxsmne"}],["path",{d:"M3 14v1",key:"vnatye"}],["path",{d:"M21 14v1",key:"169vum"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lf=R("BoxIcon",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const If=R("BoxesIcon",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sd=R("BracesIcon",[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vf=R("BracketsIcon",[["path",{d:"M16 3h3v18h-3",key:"1yor1f"}],["path",{d:"M8 21H5V3h3",key:"1qrfwo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mf=R("BrainCircuitIcon",[["path",{d:"M12 4.5a2.5 2.5 0 0 0-4.96-.46 2.5 2.5 0 0 0-1.98 3 2.5 2.5 0 0 0-1.32 4.24 3 3 0 0 0 .34 5.58 2.5 2.5 0 0 0 2.96 3.08 2.5 2.5 0 0 0 4.91.05L12 20V4.5Z",key:"ixwj2a"}],["path",{d:"M16 8V5c0-1.1.9-2 2-2",key:"13dx7u"}],["path",{d:"M12 13h4",key:"1ku699"}],["path",{d:"M12 18h6a2 2 0 0 1 2 2v1",key:"105ag5"}],["path",{d:"M12 8h8",key:"1lhi5i"}],["path",{d:"M20.5 8a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z",key:"1s25gz"}],["path",{d:"M16.5 13a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z",key:"127460"}],["path",{d:"M20.5 21a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z",key:"fys062"}],["path",{d:"M18.5 3a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z",key:"1vib61"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tf=R("BrainCogIcon",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M12 4.5a2.5 2.5 0 0 0-4.96-.46 2.5 2.5 0 0 0-1.98 3 2.5 2.5 0 0 0-1.32 4.24 3 3 0 0 0 .34 5.58 2.5 2.5 0 0 0 2.96 3.08A2.5 2.5 0 0 0 12 19.5a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 12 4.5",key:"1f4le0"}],["path",{d:"m15.7 10.4-.9.4",key:"ayzo6p"}],["path",{d:"m9.2 13.2-.9.4",key:"1uzb3g"}],["path",{d:"m13.6 15.7-.4-.9",key:"11ifqf"}],["path",{d:"m10.8 9.2-.4-.9",key:"1pmk2v"}],["path",{d:"m15.7 13.5-.9-.4",key:"7ng02m"}],["path",{d:"m9.2 10.9-.9-.4",key:"1x66zd"}],["path",{d:"m10.5 15.7.4-.9",key:"3js94g"}],["path",{d:"m13.1 9.2.4-.9",key:"18n7mc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Df=R("BrainIcon",[["path",{d:"M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 1.98-3A2.5 2.5 0 0 1 9.5 2Z",key:"1mhkh5"}],["path",{d:"M14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 14.5 2Z",key:"1d6s00"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pf=R("BrickWallIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 9v6",key:"199k2o"}],["path",{d:"M16 15v6",key:"8rj2es"}],["path",{d:"M16 3v6",key:"1j6rpj"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M8 15v6",key:"1stoo3"}],["path",{d:"M8 3v6",key:"vlvjmk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Uf=R("BriefcaseIcon",[["rect",{width:"20",height:"14",x:"2",y:"7",rx:"2",ry:"2",key:"eto64e"}],["path",{d:"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"zwj3tp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rf=R("BringToFrontIcon",[["rect",{x:"8",y:"8",width:"8",height:"8",rx:"2",key:"yj20xf"}],["path",{d:"M4 10a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2",key:"1ltk23"}],["path",{d:"M14 20a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2",key:"1q24h9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Of=R("BrushIcon",[["path",{d:"m9.06 11.9 8.07-8.06a2.85 2.85 0 1 1 4.03 4.03l-8.06 8.08",key:"1styjt"}],["path",{d:"M7.07 14.94c-1.66 0-3 1.35-3 3.02 0 1.33-2.5 1.52-2 2.02 1.08 1.1 2.49 2.02 4 2.02 2.2 0 4-1.8 4-4.04a3.01 3.01 0 0 0-3-3.02z",key:"z0l1mu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ff=R("BugOffIcon",[["path",{d:"M15 7.13V6a3 3 0 0 0-5.14-2.1L8 2",key:"vl8zik"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M22 13h-4v-2a4 4 0 0 0-4-4h-1.3",key:"1ou0bd"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M7.7 7.7A4 4 0 0 0 6 11v3a6 6 0 0 0 11.13 3.13",key:"1njkjs"}],["path",{d:"M12 20v-8",key:"i3yub9"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nf=R("BugPlayIcon",[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M18 11a4 4 0 0 0-4-4h-4a4 4 0 0 0-4 4v3a6.1 6.1 0 0 0 2 4.5",key:"1tjixy"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"m12 12 8 5-8 5Z",key:"1ydf81"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jf=R("BugIcon",[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hf=R("Building2Icon",[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qf=R("BuildingIcon",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["path",{d:"M9 22v-4h6v4",key:"r93iot"}],["path",{d:"M8 6h.01",key:"1dz90k"}],["path",{d:"M16 6h.01",key:"1x0f13"}],["path",{d:"M12 6h.01",key:"1vi96p"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M8 14h.01",key:"6423bh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zf=R("BusFrontIcon",[["path",{d:"M4 6 2 7",key:"1mqr15"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"m22 7-2-1",key:"1umjhc"}],["rect",{width:"16",height:"16",x:"4",y:"3",rx:"2",key:"1wxw4b"}],["path",{d:"M4 11h16",key:"mpoxn0"}],["path",{d:"M8 15h.01",key:"a7atzg"}],["path",{d:"M16 15h.01",key:"rnfrdf"}],["path",{d:"M6 19v2",key:"1loha6"}],["path",{d:"M18 21v-2",key:"sqyl04"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bf=R("BusIcon",[["path",{d:"M8 6v6",key:"18i7km"}],["path",{d:"M15 6v6",key:"1sg6z9"}],["path",{d:"M2 12h19.6",key:"de5uta"}],["path",{d:"M18 18h3s.5-1.7.8-2.8c.1-.4.2-.8.2-1.2 0-.4-.1-.8-.2-1.2l-1.4-5C20.1 6.8 19.1 6 18 6H4a2 2 0 0 0-2 2v10h3",key:"1wwztk"}],["circle",{cx:"7",cy:"18",r:"2",key:"19iecd"}],["path",{d:"M9 18h5",key:"lrx6i"}],["circle",{cx:"16",cy:"18",r:"2",key:"1v4tcr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gf=R("CableCarIcon",[["path",{d:"M10 3h.01",key:"lbucoy"}],["path",{d:"M14 2h.01",key:"1k8aa1"}],["path",{d:"m2 9 20-5",key:"1kz0j5"}],["path",{d:"M12 12V6.5",key:"1vbrij"}],["rect",{width:"16",height:"10",x:"4",y:"12",rx:"3",key:"if91er"}],["path",{d:"M9 12v5",key:"3anwtq"}],["path",{d:"M15 12v5",key:"5xh3zn"}],["path",{d:"M4 17h16",key:"g4d7ey"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wf=R("CableIcon",[["path",{d:"M4 9a2 2 0 0 1-2-2V5h6v2a2 2 0 0 1-2 2Z",key:"1s6oa5"}],["path",{d:"M3 5V3",key:"1k5hjh"}],["path",{d:"M7 5V3",key:"1t1388"}],["path",{d:"M19 15V6.5a3.5 3.5 0 0 0-7 0v11a3.5 3.5 0 0 1-7 0V9",key:"1ytv72"}],["path",{d:"M17 21v-2",key:"ds4u3f"}],["path",{d:"M21 21v-2",key:"eo0ou"}],["path",{d:"M22 19h-6v-2a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2Z",key:"sdz6o8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zf=R("CakeSliceIcon",[["circle",{cx:"9",cy:"7",r:"2",key:"1305pl"}],["path",{d:"M7.2 7.9 3 11v9c0 .6.4 1 1 1h16c.6 0 1-.4 1-1v-9c0-2-3-6-7-8l-3.6 2.6",key:"xle13f"}],["path",{d:"M16 13H3",key:"1wpj08"}],["path",{d:"M16 17H3",key:"3lvfcd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kf=R("CakeIcon",[["path",{d:"M20 21v-8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8",key:"1w3rig"}],["path",{d:"M4 16s.5-1 2-1 2.5 2 4 2 2.5-2 4-2 2.5 2 4 2 2-1 2-1",key:"n2jgmb"}],["path",{d:"M2 21h20",key:"1nyx9w"}],["path",{d:"M7 8v3",key:"1qtyvj"}],["path",{d:"M12 8v3",key:"hwp4zt"}],["path",{d:"M17 8v3",key:"1i6e5u"}],["path",{d:"M7 4h0.01",key:"hsw7lv"}],["path",{d:"M12 4h0.01",key:"1e3d8f"}],["path",{d:"M17 4h0.01",key:"p7cxgy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yf=R("CalculatorIcon",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["line",{x1:"8",x2:"16",y1:"6",y2:"6",key:"x4nwl0"}],["line",{x1:"16",x2:"16",y1:"14",y2:"18",key:"wjye3r"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M8 18h.01",key:"lrp35t"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xf=R("CalendarCheck2Icon",[["path",{d:"M21 14V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8",key:"bce9hv"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}],["path",{d:"m16 20 2 2 4-4",key:"13tcca"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qf=R("CalendarCheckIcon",[["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",ry:"2",key:"eu3xkr"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}],["path",{d:"m9 16 2 2 4-4",key:"19s6y9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jf=R("CalendarClockIcon",[["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M17.5 17.5 16 16.25V14",key:"re2vv1"}],["path",{d:"M22 16a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z",key:"ame013"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eg=R("CalendarDaysIcon",[["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",ry:"2",key:"eu3xkr"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tg=R("CalendarHeartIcon",[["path",{d:"M21 10V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h7",key:"1sfrvf"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M21.29 14.7a2.43 2.43 0 0 0-2.65-.52c-.3.12-.57.3-.8.53l-.34.34-.35-.34a2.43 2.43 0 0 0-2.65-.53c-.3.12-.56.3-.79.53-.95.94-1 2.53.2 3.74L17.5 22l3.6-3.55c1.2-1.21 1.14-2.8.19-3.74Z",key:"1t7hil"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ag=R("CalendarMinusIcon",[["path",{d:"M21 13V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8",key:"3spt84"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}],["line",{x1:"16",x2:"22",y1:"19",y2:"19",key:"1g9955"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sg=R("CalendarOffIcon",[["path",{d:"M4.18 4.18A2 2 0 0 0 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 1.82-1.18",key:"1feomx"}],["path",{d:"M21 15.5V6a2 2 0 0 0-2-2H9.5",key:"yhw86o"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M3 10h7",key:"1wap6i"}],["path",{d:"M21 10h-5.5",key:"quycpq"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const og=R("CalendarPlusIcon",[["path",{d:"M21 13V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8",key:"3spt84"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}],["line",{x1:"19",x2:"19",y1:"16",y2:"22",key:"1ttwzi"}],["line",{x1:"16",x2:"22",y1:"19",y2:"19",key:"1g9955"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ng=R("CalendarRangeIcon",[["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",ry:"2",key:"eu3xkr"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}],["path",{d:"M17 14h-6",key:"bkmgh3"}],["path",{d:"M13 18H7",key:"bb0bb7"}],["path",{d:"M7 14h.01",key:"1qa3f1"}],["path",{d:"M17 18h.01",key:"1bdyru"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lg=R("CalendarSearchIcon",[["path",{d:"M21 12V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h7.5",key:"18ncp8"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M18 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6v0Z",key:"mgbru4"}],["path",{d:"m22 22-1.5-1.5",key:"1x83k4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rg=R("CalendarX2Icon",[["path",{d:"M21 13V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8",key:"3spt84"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}],["line",{x1:"17",x2:"22",y1:"17",y2:"22",key:"xa9o8b"}],["line",{x1:"17",x2:"22",y1:"22",y2:"17",key:"18nitg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ig=R("CalendarXIcon",[["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",ry:"2",key:"eu3xkr"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}],["line",{x1:"10",x2:"14",y1:"14",y2:"18",key:"1g3qc0"}],["line",{x1:"14",x2:"10",y1:"14",y2:"18",key:"1az83m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dg=R("CalendarIcon",[["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",ry:"2",key:"eu3xkr"}],["line",{x1:"16",x2:"16",y1:"2",y2:"6",key:"m3sa8f"}],["line",{x1:"8",x2:"8",y1:"2",y2:"6",key:"18kwsl"}],["line",{x1:"3",x2:"21",y1:"10",y2:"10",key:"xt86sb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cg=R("CameraOffIcon",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16",key:"qmtpty"}],["path",{d:"M9.5 4h5L17 7h3a2 2 0 0 1 2 2v7.5",key:"1ufyfc"}],["path",{d:"M14.121 15.121A3 3 0 1 1 9.88 10.88",key:"11zox6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ug=R("CameraIcon",[["path",{d:"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z",key:"1tc9qg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pg=R("CandlestickChartIcon",[["path",{d:"M9 5v4",key:"14uxtq"}],["rect",{width:"4",height:"6",x:"7",y:"9",rx:"1",key:"f4fvz0"}],["path",{d:"M9 15v2",key:"r5rk32"}],["path",{d:"M17 3v2",key:"1l2re6"}],["rect",{width:"4",height:"8",x:"15",y:"5",rx:"1",key:"z38je5"}],["path",{d:"M17 13v3",key:"5l0wba"}],["path",{d:"M3 3v18h18",key:"1s2lah"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _g=R("CandyCaneIcon",[["path",{d:"M5.7 21a2 2 0 0 1-3.5-2l8.6-14a6 6 0 0 1 10.4 6 2 2 0 1 1-3.464-2 2 2 0 1 0-3.464-2Z",key:"isaq8g"}],["path",{d:"M17.75 7 15 2.1",key:"12x7e8"}],["path",{d:"M10.9 4.8 13 9",key:"100a87"}],["path",{d:"m7.9 9.7 2 4.4",key:"ntfhaj"}],["path",{d:"M4.9 14.7 7 18.9",key:"1x43jy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mg=R("CandyOffIcon",[["path",{d:"m8.5 8.5-1 1a4.95 4.95 0 0 0 7 7l1-1",key:"1ff4ui"}],["path",{d:"M11.843 6.187A4.947 4.947 0 0 1 16.5 7.5a4.947 4.947 0 0 1 1.313 4.657",key:"1sbrv4"}],["path",{d:"M14 16.5V14",key:"1maf8j"}],["path",{d:"M14 6.5v1.843",key:"1a6u6t"}],["path",{d:"M10 10v7.5",key:"80pj65"}],["path",{d:"m16 7 1-5 1.367.683A3 3 0 0 0 19.708 3H21v1.292a3 3 0 0 0 .317 1.341L22 7l-5 1",key:"11a9mt"}],["path",{d:"m8 17-1 5-1.367-.683A3 3 0 0 0 4.292 21H3v-1.292a3 3 0 0 0-.317-1.341L2 17l5-1",key:"3mjmon"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vg=R("CandyIcon",[["path",{d:"m9.5 7.5-2 2a4.95 4.95 0 1 0 7 7l2-2a4.95 4.95 0 1 0-7-7Z",key:"ue6khb"}],["path",{d:"M14 6.5v10",key:"5xnk7c"}],["path",{d:"M10 7.5v10",key:"1uew51"}],["path",{d:"m16 7 1-5 1.37.68A3 3 0 0 0 19.7 3H21v1.3c0 .46.1.92.32 1.33L22 7l-5 1",key:"b9cp6k"}],["path",{d:"m8 17-1 5-1.37-.68A3 3 0 0 0 4.3 21H3v-1.3a3 3 0 0 0-.32-1.33L2 17l5-1",key:"5lney8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hg=R("CarFrontIcon",[["path",{d:"m21 8-2 2-1.5-3.7A2 2 0 0 0 15.646 5H8.4a2 2 0 0 0-1.903 1.257L5 10 3 8",key:"1imjwt"}],["path",{d:"M7 14h.01",key:"1qa3f1"}],["path",{d:"M17 14h.01",key:"7oqj8z"}],["rect",{width:"18",height:"8",x:"3",y:"10",rx:"2",key:"a7itu8"}],["path",{d:"M5 18v2",key:"ppbyun"}],["path",{d:"M19 18v2",key:"gy7782"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fg=R("CarTaxiFrontIcon",[["path",{d:"M10 2h4",key:"n1abiw"}],["path",{d:"m21 8-2 2-1.5-3.7A2 2 0 0 0 15.646 5H8.4a2 2 0 0 0-1.903 1.257L5 10 3 8",key:"1imjwt"}],["path",{d:"M7 14h.01",key:"1qa3f1"}],["path",{d:"M17 14h.01",key:"7oqj8z"}],["rect",{width:"18",height:"8",x:"3",y:"10",rx:"2",key:"a7itu8"}],["path",{d:"M5 18v2",key:"ppbyun"}],["path",{d:"M19 18v2",key:"gy7782"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gg=R("CarIcon",[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yg=R("CaravanIcon",[["rect",{width:"4",height:"4",x:"2",y:"9",key:"1vcvhd"}],["rect",{width:"4",height:"10",x:"10",y:"9",key:"1b7ev2"}],["path",{d:"M18 19V9a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v8a2 2 0 0 0 2 2h2",key:"19jm3t"}],["circle",{cx:"8",cy:"19",r:"2",key:"t8fc5s"}],["path",{d:"M10 19h12v-2",key:"1yu2qx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bg=R("CarrotIcon",[["path",{d:"M2.27 21.7s9.87-3.5 12.73-6.36a4.5 4.5 0 0 0-6.36-6.37C5.77 11.84 2.27 21.7 2.27 21.7zM8.64 14l-2.05-2.04M15.34 15l-2.46-2.46",key:"rfqxbe"}],["path",{d:"M22 9s-1.33-2-3.5-2C16.86 7 15 9 15 9s1.33 2 3.5 2S22 9 22 9z",key:"6b25w4"}],["path",{d:"M15 2s-2 1.33-2 3.5S15 9 15 9s2-1.84 2-3.5C17 3.33 15 2 15 2z",key:"fn65lo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wg=R("CaseLowerIcon",[["circle",{cx:"7",cy:"12",r:"3",key:"12clwm"}],["path",{d:"M10 9v6",key:"17i7lo"}],["circle",{cx:"17",cy:"12",r:"3",key:"gl7c2s"}],["path",{d:"M14 7v8",key:"dl84cr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kg=R("CaseSensitiveIcon",[["path",{d:"m3 15 4-8 4 8",key:"1vwr6u"}],["path",{d:"M4 13h6",key:"1r9ots"}],["circle",{cx:"18",cy:"12",r:"3",key:"1kchzo"}],["path",{d:"M21 9v6",key:"anns31"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xg=R("CaseUpperIcon",[["path",{d:"m3 15 4-8 4 8",key:"1vwr6u"}],["path",{d:"M4 13h6",key:"1r9ots"}],["path",{d:"M15 11h4.5a2 2 0 0 1 0 4H15V7h4a2 2 0 0 1 0 4",key:"1sqfas"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $g=R("CassetteTapeIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["circle",{cx:"8",cy:"10",r:"2",key:"1xl4ub"}],["path",{d:"M8 12h8",key:"1wcyev"}],["circle",{cx:"16",cy:"10",r:"2",key:"r14t7q"}],["path",{d:"m6 20 .7-2.9A1.4 1.4 0 0 1 8.1 16h7.8a1.4 1.4 0 0 1 1.4 1l.7 3",key:"l01ucn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cg=R("CastIcon",[["path",{d:"M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6",key:"3zrzxg"}],["path",{d:"M2 12a9 9 0 0 1 8 8",key:"g6cvee"}],["path",{d:"M2 16a5 5 0 0 1 4 4",key:"1y1dii"}],["line",{x1:"2",x2:"2.01",y1:"20",y2:"20",key:"xu2jvo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sg=R("CastleIcon",[["path",{d:"M22 20v-9H2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2Z",key:"109fe4"}],["path",{d:"M18 11V4H6v7",key:"mon5oj"}],["path",{d:"M15 22v-4a3 3 0 0 0-3-3v0a3 3 0 0 0-3 3v4",key:"jdggr9"}],["path",{d:"M22 11V9",key:"3zbp94"}],["path",{d:"M2 11V9",key:"1x5rnq"}],["path",{d:"M6 4V2",key:"1rsq15"}],["path",{d:"M18 4V2",key:"1jsdo1"}],["path",{d:"M10 4V2",key:"75d9ly"}],["path",{d:"M14 4V2",key:"8nj3z6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Eg=R("CatIcon",[["path",{d:"M12 5c.67 0 1.35.09 2 .26 1.78-2 5.03-2.84 6.42-2.26 1.4.58-.42 7-.42 7 .57 1.07 1 2.24 1 3.44C21 17.9 16.97 21 12 21s-9-3-9-7.56c0-1.25.5-2.4 1-3.44 0 0-1.89-6.42-.5-7 1.39-.58 4.72.23 6.5 2.23A9.04 9.04 0 0 1 12 5Z",key:"x6xyqk"}],["path",{d:"M8 14v.5",key:"1nzgdb"}],["path",{d:"M16 14v.5",key:"1lajdz"}],["path",{d:"M11.25 16.25h1.5L12 17l-.75-.75Z",key:"12kq1m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ag=R("CctvIcon",[["path",{d:"M7 9h.01",key:"19b3jx"}],["path",{d:"M16.75 12H22l-3.5 7-3.09-4.32",key:"1h9vqe"}],["path",{d:"M18 9.5l-4 8-10.39-5.2a2.92 2.92 0 0 1-1.3-3.91L3.69 5.6a2.92 2.92 0 0 1 3.92-1.3Z",key:"q5d122"}],["path",{d:"M2 19h3.76a2 2 0 0 0 1.8-1.1L9 15",key:"19bib8"}],["path",{d:"M2 21v-4",key:"l40lih"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lg=R("CheckCheckIcon",[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ig=R("CheckCircle2Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vg=R("CheckCircleIcon",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mg=R("CheckSquare2Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tg=R("CheckSquareIcon",[["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}],["path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11",key:"1jnkn4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dg=R("CheckIcon",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pg=R("ChefHatIcon",[["path",{d:"M6 13.87A4 4 0 0 1 7.41 6a5.11 5.11 0 0 1 1.05-1.54 5 5 0 0 1 7.08 0A5.11 5.11 0 0 1 16.59 6 4 4 0 0 1 18 13.87V21H6Z",key:"z3ra2g"}],["line",{x1:"6",x2:"18",y1:"17",y2:"17",key:"12q60k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ug=R("CherryIcon",[["path",{d:"M2 17a5 5 0 0 0 10 0c0-2.76-2.5-5-5-3-2.5-2-5 .24-5 3Z",key:"cvxqlc"}],["path",{d:"M12 17a5 5 0 0 0 10 0c0-2.76-2.5-5-5-3-2.5-2-5 .24-5 3Z",key:"1ostrc"}],["path",{d:"M7 14c3.22-2.91 4.29-8.75 5-12 1.66 2.38 4.94 9 5 12",key:"hqx58h"}],["path",{d:"M22 9c-4.29 0-7.14-2.33-10-7 5.71 0 10 4.67 10 7Z",key:"eykp1o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rg=R("ChevronDownCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 10-4 4-4-4",key:"894hmk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Og=R("ChevronDownSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m16 10-4 4-4-4",key:"894hmk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fg=R("ChevronDownIcon",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ng=R("ChevronFirstIcon",[["path",{d:"m17 18-6-6 6-6",key:"1yerx2"}],["path",{d:"M7 6v12",key:"1p53r6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jg=R("ChevronLastIcon",[["path",{d:"m7 18 6-6-6-6",key:"lwmzdw"}],["path",{d:"M17 6v12",key:"1o0aio"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hg=R("ChevronLeftCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m14 16-4-4 4-4",key:"ojs7w8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qg=R("ChevronLeftSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m14 16-4-4 4-4",key:"ojs7w8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zg=R("ChevronLeftIcon",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bg=R("ChevronRightCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m10 8 4 4-4 4",key:"1wy4r4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gg=R("ChevronRightSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m10 8 4 4-4 4",key:"1wy4r4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wg=R("ChevronRightIcon",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zg=R("ChevronUpCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m8 14 4-4 4 4",key:"fy2ptz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kg=R("ChevronUpSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m8 14 4-4 4 4",key:"fy2ptz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yg=R("ChevronUpIcon",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xg=R("ChevronsDownUpIcon",[["path",{d:"m7 20 5-5 5 5",key:"13a0gw"}],["path",{d:"m7 4 5 5 5-5",key:"1kwcof"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qg=R("ChevronsDownIcon",[["path",{d:"m7 6 5 5 5-5",key:"1lc07p"}],["path",{d:"m7 13 5 5 5-5",key:"1d48rs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jg=R("ChevronsLeftRightIcon",[["path",{d:"m9 7-5 5 5 5",key:"j5w590"}],["path",{d:"m15 7 5 5-5 5",key:"1bl6da"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ey=R("ChevronsLeftIcon",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ty=R("ChevronsRightLeftIcon",[["path",{d:"m20 17-5-5 5-5",key:"30x0n2"}],["path",{d:"m4 17 5-5-5-5",key:"16spf4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ay=R("ChevronsRightIcon",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sy=R("ChevronsUpDownIcon",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oy=R("ChevronsUpIcon",[["path",{d:"m17 11-5-5-5 5",key:"e8nh98"}],["path",{d:"m17 18-5-5-5 5",key:"2avn1x"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ny=R("ChromeIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["line",{x1:"21.17",x2:"12",y1:"8",y2:"8",key:"a0cw5f"}],["line",{x1:"3.95",x2:"8.54",y1:"6.06",y2:"14",key:"1kftof"}],["line",{x1:"10.88",x2:"15.46",y1:"21.94",y2:"14",key:"1ymyh8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ly=R("ChurchIcon",[["path",{d:"m18 7 4 2v11a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9l4-2",key:"gy5gyo"}],["path",{d:"M14 22v-4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v4",key:"cpkuc4"}],["path",{d:"M18 22V5l-6-3-6 3v17",key:"1hsnhq"}],["path",{d:"M12 7v5",key:"ma6bk"}],["path",{d:"M10 9h4",key:"u4k05v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ry=R("CigaretteOffIcon",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M12 12H2v4h14",key:"91gsaq"}],["path",{d:"M22 12v4",key:"142cbu"}],["path",{d:"M18 12h-.5",key:"12ymji"}],["path",{d:"M7 12v4",key:"jqww69"}],["path",{d:"M18 8c0-2.5-2-2.5-2-5",key:"1il607"}],["path",{d:"M22 8c0-2.5-2-2.5-2-5",key:"1gah44"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iy=R("CigaretteIcon",[["path",{d:"M18 12H2v4h16",key:"2rt1hm"}],["path",{d:"M22 12v4",key:"142cbu"}],["path",{d:"M7 12v4",key:"jqww69"}],["path",{d:"M18 8c0-2.5-2-2.5-2-5",key:"1il607"}],["path",{d:"M22 8c0-2.5-2-2.5-2-5",key:"1gah44"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dy=R("CircleDashedIcon",[["path",{d:"M10.1 2.18a9.93 9.93 0 0 1 3.8 0",key:"1qdqn0"}],["path",{d:"M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7",key:"1bq7p6"}],["path",{d:"M21.82 10.1a9.93 9.93 0 0 1 0 3.8",key:"1rlaqf"}],["path",{d:"M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69",key:"1xk03u"}],["path",{d:"M13.9 21.82a9.94 9.94 0 0 1-3.8 0",key:"l7re25"}],["path",{d:"M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7",key:"1v18p6"}],["path",{d:"M2.18 13.9a9.93 9.93 0 0 1 0-3.8",key:"xdo6bj"}],["path",{d:"M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69",key:"1jjmaz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cy=R("CircleDollarSignIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 18V6",key:"zqpxq5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uy=R("CircleDotDashedIcon",[["path",{d:"M10.1 2.18a9.93 9.93 0 0 1 3.8 0",key:"1qdqn0"}],["path",{d:"M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7",key:"1bq7p6"}],["path",{d:"M21.82 10.1a9.93 9.93 0 0 1 0 3.8",key:"1rlaqf"}],["path",{d:"M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69",key:"1xk03u"}],["path",{d:"M13.9 21.82a9.94 9.94 0 0 1-3.8 0",key:"l7re25"}],["path",{d:"M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7",key:"1v18p6"}],["path",{d:"M2.18 13.9a9.93 9.93 0 0 1 0-3.8",key:"xdo6bj"}],["path",{d:"M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69",key:"1jjmaz"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const py=R("CircleDotIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _y=R("CircleEllipsisIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M17 12h.01",key:"1m0b6t"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M7 12h.01",key:"eqddd0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const my=R("CircleEqualIcon",[["path",{d:"M7 10h10",key:"1101jm"}],["path",{d:"M7 14h10",key:"1mhdw3"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vy=R("CircleOffIcon",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.35 2.69A10 10 0 0 1 21.3 15.65",key:"1pfsoa"}],["path",{d:"M19.08 19.08A10 10 0 1 1 4.92 4.92",key:"1ablyi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const od=R("CircleSlash2Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M22 2 2 22",key:"y4kqgn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hy=R("CircleSlashIcon",[["line",{x1:"9",x2:"15",y1:"15",y2:"9",key:"1dfufj"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nd=R("CircleUserRoundIcon",[["path",{d:"M18 20a6 6 0 0 0-12 0",key:"1qehca"}],["circle",{cx:"12",cy:"10",r:"4",key:"1h16sb"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ld=R("CircleUserIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fy=R("CircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gy=R("CircuitBoardIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M11 9h4a2 2 0 0 0 2-2V3",key:"1ve2rv"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"M7 21v-4a2 2 0 0 1 2-2h4",key:"1fwkro"}],["circle",{cx:"15",cy:"15",r:"2",key:"3i40o0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yy=R("CitrusIcon",[["path",{d:"M21.66 17.67a1.08 1.08 0 0 1-.04 1.6A12 12 0 0 1 4.73 2.38a1.1 1.1 0 0 1 1.61-.04z",key:"4ite01"}],["path",{d:"M19.65 15.66A8 8 0 0 1 8.35 4.34",key:"1gxipu"}],["path",{d:"m14 10-5.5 5.5",key:"92pfem"}],["path",{d:"M14 17.85V10H6.15",key:"xqmtsk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const by=R("ClapperboardIcon",[["path",{d:"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z",key:"1tn4o7"}],["path",{d:"m6.2 5.3 3.1 3.9",key:"iuk76l"}],["path",{d:"m12.4 3.4 3.1 4",key:"6hsd6n"}],["path",{d:"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z",key:"ltgou9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wy=R("ClipboardCheckIcon",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"m9 14 2 2 4-4",key:"df797q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ky=R("ClipboardCopyIcon",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xy=R("ClipboardEditIcon",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M10.42 12.61a2.1 2.1 0 1 1 2.97 2.97L7.95 21 4 22l.99-3.95 5.43-5.44Z",key:"1rgxu8"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-5.5",key:"cereej"}],["path",{d:"M4 13.5V6a2 2 0 0 1 2-2h2",key:"5ua5vh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $y=R("ClipboardListIcon",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cy=R("ClipboardPasteIcon",[["path",{d:"M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z",key:"1pp7kr"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10",key:"2ik1ml"}],["path",{d:"m17 10 4 4-4 4",key:"vp2hj1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sy=R("ClipboardSignatureIcon",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-.5",key:"1but9f"}],["path",{d:"M16 4h2a2 2 0 0 1 1.73 1",key:"1p8n7l"}],["path",{d:"M18.42 9.61a2.1 2.1 0 1 1 2.97 2.97L16.95 17 13 18l.99-3.95 4.43-4.44Z",key:"johvi5"}],["path",{d:"M8 18h1",key:"13wk12"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ey=R("ClipboardTypeIcon",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M9 12v-1h6v1",key:"iehl6m"}],["path",{d:"M11 17h2",key:"12w5me"}],["path",{d:"M12 11v6",key:"1bwqyc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ay=R("ClipboardXIcon",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"m15 11-6 6",key:"1toa9n"}],["path",{d:"m9 11 6 6",key:"wlibny"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ly=R("ClipboardIcon",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Iy=R("Clock1Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 14.5 8",key:"12zbmj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vy=R("Clock10Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 8 10",key:"atfzqc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const My=R("Clock11Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 9.5 8",key:"l5bg6f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ty=R("Clock12Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12",key:"1fub01"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dy=R("Clock2Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 10",key:"1g230d"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Py=R("Clock3Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16.5 12",key:"1aq6pp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Uy=R("Clock4Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ry=R("Clock5Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 14.5 16",key:"1pcbox"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Oy=R("Clock6Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 12 16.5",key:"hb2qv6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fy=R("Clock7Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 9.5 16",key:"ka3394"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ny=R("Clock8Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 8 14",key:"tmc9b4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jy=R("Clock9Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 7.5 12",key:"1k60p0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hy=R("ClockIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qy=R("CloudCogIcon",[["circle",{cx:"12",cy:"17",r:"3",key:"1spfwm"}],["path",{d:"M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2",key:"zaobp"}],["path",{d:"m15.7 18.4-.9-.3",key:"4qxpbn"}],["path",{d:"m9.2 15.9-.9-.3",key:"17q7o2"}],["path",{d:"m10.6 20.7.3-.9",key:"1pf4s2"}],["path",{d:"m13.1 14.2.3-.9",key:"1mnuqm"}],["path",{d:"m13.6 20.7-.4-1",key:"1jpd1m"}],["path",{d:"m10.8 14.3-.4-1",key:"17ugyy"}],["path",{d:"m8.3 18.6 1-.4",key:"s42vdx"}],["path",{d:"m14.7 15.8 1-.4",key:"2wizun"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zy=R("CloudDrizzleIcon",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M8 19v1",key:"1dk2by"}],["path",{d:"M8 14v1",key:"84yxot"}],["path",{d:"M16 19v1",key:"v220m7"}],["path",{d:"M16 14v1",key:"g12gj6"}],["path",{d:"M12 21v1",key:"q8vafk"}],["path",{d:"M12 16v1",key:"1mx6rx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const By=R("CloudFogIcon",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M16 17H7",key:"pygtm1"}],["path",{d:"M17 21H9",key:"1u2q02"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gy=R("CloudHailIcon",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M16 14v2",key:"a1is7l"}],["path",{d:"M8 14v2",key:"1e9m6t"}],["path",{d:"M16 20h.01",key:"xwek51"}],["path",{d:"M8 20h.01",key:"1vjney"}],["path",{d:"M12 16v2",key:"z66u1j"}],["path",{d:"M12 22h.01",key:"1urd7a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wy=R("CloudLightningIcon",[["path",{d:"M6 16.326A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 .5 8.973",key:"1cez44"}],["path",{d:"m13 12-3 5h4l-3 5",key:"1t22er"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zy=R("CloudMoonRainIcon",[["path",{d:"M10.083 9A6.002 6.002 0 0 1 16 4a4.243 4.243 0 0 0 6 6c0 2.22-1.206 4.16-3 5.197",key:"u82z8m"}],["path",{d:"M3 20a5 5 0 1 1 8.9-4H13a3 3 0 0 1 2 5.24",key:"1qmrp3"}],["path",{d:"M11 20v2",key:"174qtz"}],["path",{d:"M7 19v2",key:"12npes"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ky=R("CloudMoonIcon",[["path",{d:"M13 16a3 3 0 1 1 0 6H7a5 5 0 1 1 4.9-6Z",key:"p44pc9"}],["path",{d:"M10.1 9A6 6 0 0 1 16 4a4.24 4.24 0 0 0 6 6 6 6 0 0 1-3 5.197",key:"16nha0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yy=R("CloudOffIcon",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193",key:"yfwify"}],["path",{d:"M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07",key:"jlfiyv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xy=R("CloudRainWindIcon",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"m9.2 22 3-7",key:"sb5f6j"}],["path",{d:"m9 13-3 7",key:"500co5"}],["path",{d:"m17 13-3 7",key:"8t2fiy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qy=R("CloudRainIcon",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M16 14v6",key:"1j4efv"}],["path",{d:"M8 14v6",key:"17c4r9"}],["path",{d:"M12 16v6",key:"c8a4gj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jy=R("CloudSnowIcon",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M8 15h.01",key:"a7atzg"}],["path",{d:"M8 19h.01",key:"puxtts"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M12 21h.01",key:"h35vbk"}],["path",{d:"M16 15h.01",key:"rnfrdf"}],["path",{d:"M16 19h.01",key:"1vcnzz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e0=R("CloudSunRainIcon",[["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}],["path",{d:"M15.947 12.65a4 4 0 0 0-5.925-4.128",key:"dpwdj0"}],["path",{d:"M3 20a5 5 0 1 1 8.9-4H13a3 3 0 0 1 2 5.24",key:"1qmrp3"}],["path",{d:"M11 20v2",key:"174qtz"}],["path",{d:"M7 19v2",key:"12npes"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t0=R("CloudSunIcon",[["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}],["path",{d:"M15.947 12.65a4 4 0 0 0-5.925-4.128",key:"dpwdj0"}],["path",{d:"M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z",key:"s09mg5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a0=R("CloudIcon",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s0=R("CloudyIcon",[["path",{d:"M17.5 21H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"gqqjvc"}],["path",{d:"M22 10a3 3 0 0 0-3-3h-2.207a5.502 5.502 0 0 0-10.702.5",key:"1p2s76"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o0=R("CloverIcon",[["path",{d:"M16.2 3.8a2.7 2.7 0 0 0-3.81 0l-.4.38-.4-.4a2.7 2.7 0 0 0-3.82 0C6.73 4.85 6.67 6.64 8 8l4 4 4-4c1.33-1.36 1.27-3.15.2-4.2z",key:"1gxwox"}],["path",{d:"M8 8c-1.36-1.33-3.15-1.27-4.2-.2a2.7 2.7 0 0 0 0 3.81l.38.4-.4.4a2.7 2.7 0 0 0 0 3.82C4.85 17.27 6.64 17.33 8 16",key:"il7z7z"}],["path",{d:"M16 16c1.36 1.33 3.15 1.27 4.2.2a2.7 2.7 0 0 0 0-3.81l-.38-.4.4-.4a2.7 2.7 0 0 0 0-3.82C19.15 6.73 17.36 6.67 16 8",key:"15bpx2"}],["path",{d:"M7.8 20.2a2.7 2.7 0 0 0 3.81 0l.4-.38.4.4a2.7 2.7 0 0 0 3.82 0c1.06-1.06 1.12-2.85-.21-4.21l-4-4-4 4c-1.33 1.36-1.27 3.15-.2 4.2z",key:"v9mug8"}],["path",{d:"m7 17-5 5",key:"1py3mz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n0=R("ClubIcon",[["path",{d:"M17.28 9.05a5.5 5.5 0 1 0-10.56 0A5.5 5.5 0 1 0 12 17.66a5.5 5.5 0 1 0 5.28-8.6Z",key:"27yuqz"}],["path",{d:"M12 17.66L12 22",key:"ogfahf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l0=R("Code2Icon",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r0=R("CodeIcon",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i0=R("CodepenIcon",[["polygon",{points:"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2",key:"srzb37"}],["line",{x1:"12",x2:"12",y1:"22",y2:"15.5",key:"1t73f2"}],["polyline",{points:"22 8.5 12 15.5 2 8.5",key:"ajlxae"}],["polyline",{points:"2 15.5 12 8.5 22 15.5",key:"susrui"}],["line",{x1:"12",x2:"12",y1:"2",y2:"8.5",key:"2cldga"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d0=R("CodesandboxIcon",[["path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",key:"yt0hxn"}],["polyline",{points:"7.5 4.21 12 6.81 16.5 4.21",key:"fabo96"}],["polyline",{points:"7.5 19.79 7.5 14.6 3 12",key:"z377f1"}],["polyline",{points:"21 12 16.5 14.6 16.5 19.79",key:"9nrev1"}],["polyline",{points:"3.27 6.96 12 12.01 20.73 6.96",key:"1180pa"}],["line",{x1:"12",x2:"12",y1:"22.08",y2:"12",key:"3z3uq6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c0=R("CoffeeIcon",[["path",{d:"M17 8h1a4 4 0 1 1 0 8h-1",key:"jx4kbh"}],["path",{d:"M3 8h14v9a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z",key:"1bxrl0"}],["line",{x1:"6",x2:"6",y1:"2",y2:"4",key:"1cr9l3"}],["line",{x1:"10",x2:"10",y1:"2",y2:"4",key:"170wym"}],["line",{x1:"14",x2:"14",y1:"2",y2:"4",key:"1c5f70"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u0=R("CogIcon",[["path",{d:"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z",key:"sobvz5"}],["path",{d:"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",key:"11i496"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p0=R("CoinsIcon",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rd=R("Columns2Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const id=R("Columns3Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _0=R("Columns4Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7.5 3v18",key:"w0wo6v"}],["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M16.5 3v18",key:"10tjh1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m0=R("CombineIcon",[["rect",{width:"8",height:"8",x:"2",y:"2",rx:"2",key:"z1hh3n"}],["path",{d:"M14 2c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2",key:"83orz6"}],["path",{d:"M20 2c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2",key:"k86dmt"}],["path",{d:"M10 18H5c-1.7 0-3-1.3-3-3v-1",key:"6vokjl"}],["polyline",{points:"7 21 10 18 7 15",key:"1k02g0"}],["rect",{width:"8",height:"8",x:"14",y:"14",rx:"2",key:"1fa9i4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v0=R("CommandIcon",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h0=R("CompassIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76",key:"m9r19z"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f0=R("ComponentIcon",[["path",{d:"M5.5 8.5 9 12l-3.5 3.5L2 12l3.5-3.5Z",key:"1kciei"}],["path",{d:"m12 2 3.5 3.5L12 9 8.5 5.5 12 2Z",key:"1ome0g"}],["path",{d:"M18.5 8.5 22 12l-3.5 3.5L15 12l3.5-3.5Z",key:"vbupec"}],["path",{d:"m12 15 3.5 3.5L12 22l-3.5-3.5L12 15Z",key:"16csic"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g0=R("ComputerIcon",[["rect",{width:"14",height:"8",x:"5",y:"2",rx:"2",key:"wc9tft"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",key:"w68u3i"}],["path",{d:"M6 18h2",key:"rwmk9e"}],["path",{d:"M12 18h6",key:"aqd8w3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y0=R("ConciergeBellIcon",[["path",{d:"M2 18a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v2H2v-2Z",key:"1co3i8"}],["path",{d:"M20 16a8 8 0 1 0-16 0",key:"1pa543"}],["path",{d:"M12 4v4",key:"1bq03y"}],["path",{d:"M10 4h4",key:"1xpv9s"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b0=R("ConeIcon",[["path",{d:"m20.9 18.55-8-15.98a1 1 0 0 0-1.8 0l-8 15.98",key:"53pte7"}],["ellipse",{cx:"12",cy:"19",rx:"9",ry:"3",key:"1ji25f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w0=R("ConstructionIcon",[["rect",{x:"2",y:"6",width:"20",height:"8",rx:"1",key:"1estib"}],["path",{d:"M17 14v7",key:"7m2elx"}],["path",{d:"M7 14v7",key:"1cm7wv"}],["path",{d:"M17 3v3",key:"1v4jwn"}],["path",{d:"M7 3v3",key:"7o6guu"}],["path",{d:"M10 14 2.3 6.3",key:"1023jk"}],["path",{d:"m14 6 7.7 7.7",key:"1s8pl2"}],["path",{d:"m8 6 8 8",key:"hl96qh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k0=R("Contact2Icon",[["path",{d:"M16 18a4 4 0 0 0-8 0",key:"1lzouq"}],["circle",{cx:"12",cy:"11",r:"3",key:"itu57m"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["line",{x1:"8",x2:"8",y1:"2",y2:"4",key:"1ff9gb"}],["line",{x1:"16",x2:"16",y1:"2",y2:"4",key:"1ufoma"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x0=R("ContactIcon",[["path",{d:"M17 18a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2",key:"1mghuy"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["circle",{cx:"12",cy:"10",r:"2",key:"1yojzk"}],["line",{x1:"8",x2:"8",y1:"2",y2:"4",key:"1ff9gb"}],["line",{x1:"16",x2:"16",y1:"2",y2:"4",key:"1ufoma"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $0=R("ContainerIcon",[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C0=R("ContrastIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 18a6 6 0 0 0 0-12v12z",key:"j4l70d"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S0=R("CookieIcon",[["path",{d:"M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5",key:"laymnq"}],["path",{d:"M8.5 8.5v.01",key:"ue8clq"}],["path",{d:"M16 15.5v.01",key:"14dtrp"}],["path",{d:"M12 12v.01",key:"u5ubse"}],["path",{d:"M11 17v.01",key:"1hyl5a"}],["path",{d:"M7 14v.01",key:"uct60s"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E0=R("CookingPotIcon",[["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"M20 12v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8",key:"u0tga0"}],["path",{d:"m4 8 16-4",key:"16g0ng"}],["path",{d:"m8.86 6.78-.45-1.81a2 2 0 0 1 1.45-2.43l1.94-.48a2 2 0 0 1 2.43 1.46l.45 1.8",key:"12cejc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A0=R("CopyCheckIcon",[["path",{d:"m12 15 2 2 4-4",key:"2c609p"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L0=R("CopyMinusIcon",[["line",{x1:"12",x2:"18",y1:"15",y2:"15",key:"1nscbv"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I0=R("CopyPlusIcon",[["line",{x1:"15",x2:"15",y1:"12",y2:"18",key:"1p7wdc"}],["line",{x1:"12",x2:"18",y1:"15",y2:"15",key:"1nscbv"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V0=R("CopySlashIcon",[["line",{x1:"12",x2:"18",y1:"18",y2:"12",key:"ebkxgr"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M0=R("CopyXIcon",[["line",{x1:"12",x2:"18",y1:"12",y2:"18",key:"1rg63v"}],["line",{x1:"12",x2:"18",y1:"18",y2:"12",key:"ebkxgr"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T0=R("CopyIcon",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D0=R("CopyleftIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.17 14.83a4 4 0 1 0 0-5.66",key:"1sveal"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P0=R("CopyrightIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M14.83 14.83a4 4 0 1 1 0-5.66",key:"1i56pz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U0=R("CornerDownLeftIcon",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R0=R("CornerDownRightIcon",[["polyline",{points:"15 10 20 15 15 20",key:"1q7qjw"}],["path",{d:"M4 4v7a4 4 0 0 0 4 4h12",key:"z08zvw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O0=R("CornerLeftDownIcon",[["polyline",{points:"14 15 9 20 4 15",key:"nkc4i"}],["path",{d:"M20 4h-7a4 4 0 0 0-4 4v12",key:"nbpdq2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F0=R("CornerLeftUpIcon",[["polyline",{points:"14 9 9 4 4 9",key:"m9oyvo"}],["path",{d:"M20 20h-7a4 4 0 0 1-4-4V4",key:"1blwi3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N0=R("CornerRightDownIcon",[["polyline",{points:"10 15 15 20 20 15",key:"axus6l"}],["path",{d:"M4 4h7a4 4 0 0 1 4 4v12",key:"wcbgct"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j0=R("CornerRightUpIcon",[["polyline",{points:"10 9 15 4 20 9",key:"1lr6px"}],["path",{d:"M4 20h7a4 4 0 0 0 4-4V4",key:"1plgdj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H0=R("CornerUpLeftIcon",[["polyline",{points:"9 14 4 9 9 4",key:"881910"}],["path",{d:"M20 20v-7a4 4 0 0 0-4-4H4",key:"1nkjon"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q0=R("CornerUpRightIcon",[["polyline",{points:"15 14 20 9 15 4",key:"1tbx3s"}],["path",{d:"M4 20v-7a4 4 0 0 1 4-4h12",key:"1lu4f8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z0=R("CpuIcon",[["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"9",y:"9",width:"6",height:"6",key:"o3kz5p"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B0=R("CreativeCommonsIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M10 9.3a2.8 2.8 0 0 0-3.5 1 3.1 3.1 0 0 0 0 3.4 2.7 2.7 0 0 0 3.5 1",key:"1ss3eq"}],["path",{d:"M17 9.3a2.8 2.8 0 0 0-3.5 1 3.1 3.1 0 0 0 0 3.4 2.7 2.7 0 0 0 3.5 1",key:"1od56t"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G0=R("CreditCardIcon",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W0=R("CroissantIcon",[["path",{d:"m4.6 13.11 5.79-3.21c1.89-1.05 4.79 1.78 3.71 3.71l-3.22 5.81C8.8 23.16.79 15.23 4.6 13.11Z",key:"1ozxlb"}],["path",{d:"m10.5 9.5-1-2.29C9.2 6.48 8.8 6 8 6H4.5C2.79 6 2 6.5 2 8.5a7.71 7.71 0 0 0 2 4.83",key:"ffuyb5"}],["path",{d:"M8 6c0-1.55.24-4-2-4-2 0-2.5 2.17-2.5 4",key:"osnpzi"}],["path",{d:"m14.5 13.5 2.29 1c.73.3 1.21.7 1.21 1.5v3.5c0 1.71-.5 2.5-2.5 2.5a7.71 7.71 0 0 1-4.83-2",key:"1vubaw"}],["path",{d:"M18 16c1.55 0 4-.24 4 2 0 2-2.17 2.5-4 2.5",key:"wxr772"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z0=R("CropIcon",[["path",{d:"M6 2v14a2 2 0 0 0 2 2h14",key:"ron5a4"}],["path",{d:"M18 22V8a2 2 0 0 0-2-2H2",key:"7s9ehn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K0=R("CrossIcon",[["path",{d:"M11 2a2 2 0 0 0-2 2v5H4a2 2 0 0 0-2 2v2c0 1.1.9 2 2 2h5v5c0 1.1.9 2 2 2h2a2 2 0 0 0 2-2v-5h5a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2h-5V4a2 2 0 0 0-2-2h-2z",key:"1t5g7j"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y0=R("CrosshairIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X0=R("CrownIcon",[["path",{d:"m2 4 3 12h14l3-12-6 7-4-7-4 7-6-7zm3 16h14",key:"zkxr6b"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q0=R("CuboidIcon",[["path",{d:"m21.12 6.4-6.05-4.06a2 2 0 0 0-2.17-.05L2.95 8.41a2 2 0 0 0-.95 1.7v5.82a2 2 0 0 0 .88 1.66l6.05 4.07a2 2 0 0 0 2.17.05l9.95-6.12a2 2 0 0 0 .95-1.7V8.06a2 2 0 0 0-.88-1.66Z",key:"1u2ovd"}],["path",{d:"M10 22v-8L2.25 9.15",key:"11pn4q"}],["path",{d:"m10 14 11.77-6.87",key:"1kt1wh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J0=R("CupSodaIcon",[["path",{d:"m6 8 1.75 12.28a2 2 0 0 0 2 1.72h4.54a2 2 0 0 0 2-1.72L18 8",key:"8166m8"}],["path",{d:"M5 8h14",key:"pcz4l3"}],["path",{d:"M7 15a6.47 6.47 0 0 1 5 0 6.47 6.47 0 0 0 5 0",key:"yjz344"}],["path",{d:"m12 8 1-6h2",key:"3ybfa4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e2=R("CurrencyIcon",[["circle",{cx:"12",cy:"12",r:"8",key:"46899m"}],["line",{x1:"3",x2:"6",y1:"3",y2:"6",key:"1jkytn"}],["line",{x1:"21",x2:"18",y1:"3",y2:"6",key:"14zfjt"}],["line",{x1:"3",x2:"6",y1:"21",y2:"18",key:"iusuec"}],["line",{x1:"21",x2:"18",y1:"21",y2:"18",key:"yj2dd7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t2=R("CylinderIcon",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5v14a9 3 0 0 0 18 0V5",key:"aqi0yr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a2=R("DatabaseBackupIcon",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 12a9 3 0 0 0 5 2.69",key:"1ui2ym"}],["path",{d:"M21 9.3V5",key:"6k6cib"}],["path",{d:"M3 5v14a9 3 0 0 0 6.47 2.88",key:"i62tjy"}],["path",{d:"M12 12v4h4",key:"1bxaet"}],["path",{d:"M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16",key:"1f4ei9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s2=R("DatabaseZapIcon",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 15 21.84",key:"14ibmq"}],["path",{d:"M21 5V8",key:"1marbg"}],["path",{d:"M21 12L18 17H22L19 22",key:"zafso"}],["path",{d:"M3 12A9 3 0 0 0 14.59 14.87",key:"1y4wr8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o2=R("DatabaseIcon",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n2=R("DeleteIcon",[["path",{d:"M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Z",key:"1oy587"}],["line",{x1:"18",x2:"12",y1:"9",y2:"15",key:"1olkx5"}],["line",{x1:"12",x2:"18",y1:"9",y2:"15",key:"1n50pc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l2=R("DessertIcon",[["circle",{cx:"12",cy:"4",r:"2",key:"muu5ef"}],["path",{d:"M10.2 3.2C5.5 4 2 8.1 2 13a2 2 0 0 0 4 0v-1a2 2 0 0 1 4 0v4a2 2 0 0 0 4 0v-4a2 2 0 0 1 4 0v1a2 2 0 0 0 4 0c0-4.9-3.5-9-8.2-9.8",key:"lfo06j"}],["path",{d:"M3.2 14.8a9 9 0 0 0 17.6 0",key:"12xarc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r2=R("DiameterIcon",[["circle",{cx:"19",cy:"19",r:"2",key:"17f5cg"}],["circle",{cx:"5",cy:"5",r:"2",key:"1gwv83"}],["path",{d:"M6.48 3.66a10 10 0 0 1 13.86 13.86",key:"xr8kdq"}],["path",{d:"m6.41 6.41 11.18 11.18",key:"uhpjw7"}],["path",{d:"M3.66 6.48a10 10 0 0 0 13.86 13.86",key:"cldpwv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i2=R("DiamondIcon",[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z",key:"1f1r0c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d2=R("Dice1Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M12 12h.01",key:"1mp3jc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c2=R("Dice2Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M15 9h.01",key:"x1ddxp"}],["path",{d:"M9 15h.01",key:"fzyn71"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u2=R("Dice3Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M16 8h.01",key:"cr5u4v"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p2=R("Dice4Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M16 8h.01",key:"cr5u4v"}],["path",{d:"M8 8h.01",key:"1e4136"}],["path",{d:"M8 16h.01",key:"18s6g9"}],["path",{d:"M16 16h.01",key:"1f9h7w"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _2=R("Dice5Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M16 8h.01",key:"cr5u4v"}],["path",{d:"M8 8h.01",key:"1e4136"}],["path",{d:"M8 16h.01",key:"18s6g9"}],["path",{d:"M16 16h.01",key:"1f9h7w"}],["path",{d:"M12 12h.01",key:"1mp3jc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m2=R("Dice6Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M16 8h.01",key:"cr5u4v"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M16 16h.01",key:"1f9h7w"}],["path",{d:"M8 8h.01",key:"1e4136"}],["path",{d:"M8 12h.01",key:"czm47f"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v2=R("DicesIcon",[["rect",{width:"12",height:"12",x:"2",y:"10",rx:"2",ry:"2",key:"6agr2n"}],["path",{d:"m17.92 14 3.5-3.5a2.24 2.24 0 0 0 0-3l-5-4.92a2.24 2.24 0 0 0-3 0L10 6",key:"1o487t"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"M10 14h.01",key:"ssrbsk"}],["path",{d:"M15 6h.01",key:"cblpky"}],["path",{d:"M18 9h.01",key:"2061c0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h2=R("DiffIcon",[["path",{d:"M12 3v14",key:"7cf3v8"}],["path",{d:"M5 10h14",key:"elsbfy"}],["path",{d:"M5 21h14",key:"11awu3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f2=R("Disc2Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 12h.01",key:"1mp3jc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g2=R("Disc3Icon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M6 12c0-1.7.7-3.2 1.8-4.2",key:"oqkarx"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M18 12c0 1.7-.7 3.2-1.8 4.2",key:"1eah9h"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y2=R("DiscAlbumIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["circle",{cx:"12",cy:"12",r:"5",key:"nd82uf"}],["path",{d:"M12 12h.01",key:"1mp3jc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b2=R("DiscIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w2=R("DivideCircleIcon",[["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}],["line",{x1:"12",x2:"12",y1:"16",y2:"16",key:"aqc6ln"}],["line",{x1:"12",x2:"12",y1:"8",y2:"8",key:"1mkcni"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k2=R("DivideSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}],["line",{x1:"12",x2:"12",y1:"16",y2:"16",key:"aqc6ln"}],["line",{x1:"12",x2:"12",y1:"8",y2:"8",key:"1mkcni"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x2=R("DivideIcon",[["circle",{cx:"12",cy:"6",r:"1",key:"1bh7o1"}],["line",{x1:"5",x2:"19",y1:"12",y2:"12",key:"13b5wn"}],["circle",{cx:"12",cy:"18",r:"1",key:"lqb9t5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $2=R("DnaOffIcon",[["path",{d:"M15 2c-1.35 1.5-2.092 3-2.5 4.5M9 22c1.35-1.5 2.092-3 2.5-4.5",key:"sxiaad"}],["path",{d:"M2 15c3.333-3 6.667-3 10-3m10-3c-1.5 1.35-3 2.092-4.5 2.5",key:"yn4bs1"}],["path",{d:"m17 6-2.5-2.5",key:"5cdfhj"}],["path",{d:"m14 8-1.5-1.5",key:"1ohn8i"}],["path",{d:"m7 18 2.5 2.5",key:"16tu1a"}],["path",{d:"m3.5 14.5.5.5",key:"hapbhd"}],["path",{d:"m20 9 .5.5",key:"1n7z02"}],["path",{d:"m6.5 12.5 1 1",key:"cs35ky"}],["path",{d:"m16.5 10.5 1 1",key:"696xn5"}],["path",{d:"m10 16 1.5 1.5",key:"11lckj"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C2=R("DnaIcon",[["path",{d:"M2 15c6.667-6 13.333 0 20-6",key:"1pyr53"}],["path",{d:"M9 22c1.798-1.998 2.518-3.995 2.807-5.993",key:"q3hbxp"}],["path",{d:"M15 2c-1.798 1.998-2.518 3.995-2.807 5.993",key:"80uv8i"}],["path",{d:"m17 6-2.5-2.5",key:"5cdfhj"}],["path",{d:"m14 8-1-1",key:"15nbz5"}],["path",{d:"m7 18 2.5 2.5",key:"16tu1a"}],["path",{d:"m3.5 14.5.5.5",key:"hapbhd"}],["path",{d:"m20 9 .5.5",key:"1n7z02"}],["path",{d:"m6.5 12.5 1 1",key:"cs35ky"}],["path",{d:"m16.5 10.5 1 1",key:"696xn5"}],["path",{d:"m10 16 1.5 1.5",key:"11lckj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S2=R("DogIcon",[["path",{d:"M10 5.172C10 3.782 8.423 2.679 6.5 3c-2.823.47-4.113 6.006-4 7 .08.703 1.725 1.722 3.656 1 1.261-.472 1.96-1.45 2.344-2.5",key:"19br0u"}],["path",{d:"M14.267 5.172c0-1.39 1.577-2.493 3.5-2.172 2.823.47 4.113 6.006 4 7-.08.703-1.725 1.722-3.656 1-1.261-.472-1.855-1.45-2.239-2.5",key:"11n1an"}],["path",{d:"M8 14v.5",key:"1nzgdb"}],["path",{d:"M16 14v.5",key:"1lajdz"}],["path",{d:"M11.25 16.25h1.5L12 17l-.75-.75Z",key:"12kq1m"}],["path",{d:"M4.42 11.247A13.152 13.152 0 0 0 4 14.556C4 18.728 7.582 21 12 21s8-2.272 8-6.444c0-1.061-.162-2.2-.493-3.309m-9.243-6.082A8.801 8.801 0 0 1 12 5c.78 0 1.5.108 2.161.306",key:"wsu29d"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E2=R("DollarSignIcon",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A2=R("DonutIcon",[["path",{d:"M20.5 10a2.5 2.5 0 0 1-2.4-3H18a2.95 2.95 0 0 1-2.6-4.4 10 10 0 1 0 6.3 7.1c-.3.2-.8.3-1.2.3",key:"19sr3x"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L2=R("DoorClosedIcon",[["path",{d:"M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14",key:"36qu9e"}],["path",{d:"M2 20h20",key:"owomy5"}],["path",{d:"M14 12v.01",key:"xfcn54"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I2=R("DoorOpenIcon",[["path",{d:"M13 4h3a2 2 0 0 1 2 2v14",key:"hrm0s9"}],["path",{d:"M2 20h3",key:"1gaodv"}],["path",{d:"M13 20h9",key:"s90cdi"}],["path",{d:"M10 12v.01",key:"vx6srw"}],["path",{d:"M13 4.562v16.157a1 1 0 0 1-1.242.97L5 20V5.562a2 2 0 0 1 1.515-1.94l4-1A2 2 0 0 1 13 4.561Z",key:"199qr4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V2=R("DotIcon",[["circle",{cx:"12.1",cy:"12.1",r:"1",key:"18d7e5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M2=R("DownloadCloudIcon",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M12 12v9",key:"192myk"}],["path",{d:"m8 17 4 4 4-4",key:"1ul180"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T2=R("DownloadIcon",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D2=R("DraftingCompassIcon",[["circle",{cx:"12",cy:"5",r:"2",key:"f1ur92"}],["path",{d:"m3 21 8.02-14.26",key:"1ssaw4"}],["path",{d:"m12.99 6.74 1.93 3.44",key:"iwagvd"}],["path",{d:"M19 12c-3.87 4-10.13 4-14 0",key:"1tsu18"}],["path",{d:"m21 21-2.16-3.84",key:"vylbct"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P2=R("DramaIcon",[["path",{d:"M10 11h.01",key:"d2at3l"}],["path",{d:"M14 6h.01",key:"k028ub"}],["path",{d:"M18 6h.01",key:"1v4wsw"}],["path",{d:"M6.5 13.1h.01",key:"1748ia"}],["path",{d:"M22 5c0 9-4 12-6 12s-6-3-6-12c0-2 2-3 6-3s6 1 6 3",key:"172yzv"}],["path",{d:"M17.4 9.9c-.8.8-2 .8-2.8 0",key:"1obv0w"}],["path",{d:"M10.1 7.1C9 7.2 7.7 7.7 6 8.6c-3.5 2-4.7 3.9-3.7 5.6 4.5 7.8 9.5 8.4 11.2 7.4.9-.5 1.9-2.1 1.9-4.7",key:"rqjl8i"}],["path",{d:"M9.1 16.5c.3-1.1 1.4-1.7 2.4-1.4",key:"1mr6wy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U2=R("DribbbleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M19.13 5.09C15.22 9.14 10 10.44 2.25 10.94",key:"hpej1"}],["path",{d:"M21.75 12.84c-6.62-1.41-12.14 1-16.38 6.32",key:"1tr44o"}],["path",{d:"M8.56 2.75c4.37 6 6 9.42 8 17.72",key:"kbh691"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R2=R("DrillIcon",[["path",{d:"M14 9c0 .6-.4 1-1 1H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9c.6 0 1 .4 1 1Z",key:"b6nnkj"}],["path",{d:"M18 6h4",key:"66u95g"}],["path",{d:"M14 4h3a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-3",key:"105ega"}],["path",{d:"m5 10-2 8",key:"xt2lic"}],["path",{d:"M12 10v3c0 .6-.4 1-1 1H8",key:"mwpjnk"}],["path",{d:"m7 18 2-8",key:"1bzku2"}],["path",{d:"M5 22c-1.7 0-3-1.3-3-3 0-.6.4-1 1-1h7c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1Z",key:"117add"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O2=R("DropletIcon",[["path",{d:"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z",key:"c7niix"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F2=R("DropletsIcon",[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N2=R("DrumIcon",[["path",{d:"m2 2 8 8",key:"1v6059"}],["path",{d:"m22 2-8 8",key:"173r8a"}],["ellipse",{cx:"12",cy:"9",rx:"10",ry:"5",key:"liohsx"}],["path",{d:"M7 13.4v7.9",key:"1yi6u9"}],["path",{d:"M12 14v8",key:"1tn2tj"}],["path",{d:"M17 13.4v7.9",key:"eqz2v3"}],["path",{d:"M2 9v8a10 5 0 0 0 20 0V9",key:"1750ul"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j2=R("DrumstickIcon",[["path",{d:"M15.45 15.4c-2.13.65-4.3.32-5.7-1.1-2.29-2.27-1.76-6.5 1.17-9.42 2.93-2.93 7.15-3.46 9.43-1.18 1.41 1.41 1.74 3.57 1.1 5.71-1.4-.51-3.26-.02-4.64 1.36-1.38 1.38-1.87 3.23-1.36 4.63z",key:"1o96s0"}],["path",{d:"m11.25 15.6-2.16 2.16a2.5 2.5 0 1 1-4.56 1.73 2.49 2.49 0 0 1-1.41-4.24 2.5 2.5 0 0 1 3.14-.32l2.16-2.16",key:"14vv5h"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H2=R("DumbbellIcon",[["path",{d:"m6.5 6.5 11 11",key:"f7oqzb"}],["path",{d:"m21 21-1-1",key:"cpc6if"}],["path",{d:"m3 3 1 1",key:"d3rpuf"}],["path",{d:"m18 22 4-4",key:"1e32o6"}],["path",{d:"m2 6 4-4",key:"189tqz"}],["path",{d:"m3 10 7-7",key:"1bxui2"}],["path",{d:"m14 21 7-7",key:"16x78n"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q2=R("EarOffIcon",[["path",{d:"M6 18.5a3.5 3.5 0 1 0 7 0c0-1.57.92-2.52 2.04-3.46",key:"1qngmn"}],["path",{d:"M6 8.5c0-.75.13-1.47.36-2.14",key:"b06bma"}],["path",{d:"M8.8 3.15A6.5 6.5 0 0 1 19 8.5c0 1.63-.44 2.81-1.09 3.76",key:"g10hsz"}],["path",{d:"M12.5 6A2.5 2.5 0 0 1 15 8.5M10 13a2 2 0 0 0 1.82-1.18",key:"ygzou7"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z2=R("EarIcon",[["path",{d:"M6 8.5a6.5 6.5 0 1 1 13 0c0 6-6 6-6 10a3.5 3.5 0 1 1-7 0",key:"1dfaln"}],["path",{d:"M15 8.5a2.5 2.5 0 0 0-5 0v1a2 2 0 1 1 0 4",key:"1qnva7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B2=R("EggFriedIcon",[["circle",{cx:"11.5",cy:"12.5",r:"3.5",key:"1cl1mi"}],["path",{d:"M3 8c0-3.5 2.5-6 6.5-6 5 0 4.83 3 7.5 5s5 2 5 6c0 4.5-2.5 6.5-7 6.5-2.5 0-2.5 2.5-6 2.5s-7-2-7-5.5c0-3 1.5-3 1.5-5C3.5 10 3 9 3 8Z",key:"165ef9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G2=R("EggOffIcon",[["path",{d:"M6.399 6.399C5.362 8.157 4.65 10.189 4.5 12c-.37 4.43 1.27 9.95 7.5 10 3.256-.026 5.259-1.547 6.375-3.625",key:"6et380"}],["path",{d:"M19.532 13.875A14.07 14.07 0 0 0 19.5 12c-.36-4.34-3.95-9.96-7.5-10-1.04.012-2.082.502-3.046 1.297",key:"gcdc3f"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W2=R("EggIcon",[["path",{d:"M12 22c6.23-.05 7.87-5.57 7.5-10-.36-4.34-3.95-9.96-7.5-10-3.55.04-7.14 5.66-7.5 10-.37 4.43 1.27 9.95 7.5 10z",key:"1c39pg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z2=R("EqualNotIcon",[["line",{x1:"5",x2:"19",y1:"9",y2:"9",key:"1nwqeh"}],["line",{x1:"5",x2:"19",y1:"15",y2:"15",key:"g8yjpy"}],["line",{x1:"19",x2:"5",y1:"5",y2:"19",key:"1x9vlm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K2=R("EqualIcon",[["line",{x1:"5",x2:"19",y1:"9",y2:"9",key:"1nwqeh"}],["line",{x1:"5",x2:"19",y1:"15",y2:"15",key:"g8yjpy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y2=R("EraserIcon",[["path",{d:"m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21",key:"182aya"}],["path",{d:"M22 21H7",key:"t4ddhn"}],["path",{d:"m5 11 9 9",key:"1mo9qw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X2=R("EuroIcon",[["path",{d:"M4 10h12",key:"1y6xl8"}],["path",{d:"M4 14h9",key:"1loblj"}],["path",{d:"M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2",key:"1j6lzo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q2=R("ExpandIcon",[["path",{d:"m21 21-6-6m6 6v-4.8m0 4.8h-4.8",key:"1c15vz"}],["path",{d:"M3 16.2V21m0 0h4.8M3 21l6-6",key:"1fsnz2"}],["path",{d:"M21 7.8V3m0 0h-4.8M21 3l-6 6",key:"hawz9i"}],["path",{d:"M3 7.8V3m0 0h4.8M3 3l6 6",key:"u9ee12"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J2=R("ExternalLinkIcon",[["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}],["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["line",{x1:"10",x2:"21",y1:"14",y2:"3",key:"18c3s4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eb=R("EyeOffIcon",[["path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24",key:"1jxqfv"}],["path",{d:"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68",key:"9wicm4"}],["path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61",key:"1jreej"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tb=R("EyeIcon",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ab=R("FacebookIcon",[["path",{d:"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z",key:"1jg4f8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sb=R("FactoryIcon",[["path",{d:"M2 20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8l-7 5V8l-7 5V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",key:"159hny"}],["path",{d:"M17 18h1",key:"uldtlt"}],["path",{d:"M12 18h1",key:"s9uhes"}],["path",{d:"M7 18h1",key:"1neino"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ob=R("FanIcon",[["path",{d:"M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z",key:"484a7f"}],["path",{d:"M12 12v.01",key:"u5ubse"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nb=R("FastForwardIcon",[["polygon",{points:"13 19 22 12 13 5 13 19",key:"587y9g"}],["polygon",{points:"2 19 11 12 2 5 2 19",key:"3pweh0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lb=R("FeatherIcon",[["path",{d:"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z",key:"u4sw5n"}],["line",{x1:"16",x2:"2",y1:"8",y2:"22",key:"1c47m2"}],["line",{x1:"17.5",x2:"9",y1:"15",y2:"15",key:"2fj3pr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rb=R("FenceIcon",[["path",{d:"M4 3 2 5v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",key:"1n2rgs"}],["path",{d:"M6 8h4",key:"utf9t1"}],["path",{d:"M6 18h4",key:"12yh4b"}],["path",{d:"m12 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",key:"3ha7mj"}],["path",{d:"M14 8h4",key:"1r8wg2"}],["path",{d:"M14 18h4",key:"1t3kbu"}],["path",{d:"m20 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z",key:"dfd4e2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ib=R("FerrisWheelIcon",[["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m6.8 15-3.5 2",key:"hjy98k"}],["path",{d:"m20.7 7-3.5 2",key:"f08gto"}],["path",{d:"M6.8 9 3.3 7",key:"1aevh4"}],["path",{d:"m20.7 17-3.5-2",key:"1liqo3"}],["path",{d:"m9 22 3-8 3 8",key:"wees03"}],["path",{d:"M8 22h8",key:"rmew8v"}],["path",{d:"M18 18.7a9 9 0 1 0-12 0",key:"dhzg4g"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const db=R("FigmaIcon",[["path",{d:"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z",key:"1340ok"}],["path",{d:"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z",key:"1hz3m3"}],["path",{d:"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z",key:"1oz8n2"}],["path",{d:"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z",key:"1ff65i"}],["path",{d:"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z",key:"pdip6e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cb=R("FileArchiveIcon",[["path",{d:"M4 22V4c0-.5.2-1 .6-1.4C5 2.2 5.5 2 6 2h8.5L20 7.5V20c0 .5-.2 1-.6 1.4-.4.4-.9.6-1.4.6h-2",key:"1u864v"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["circle",{cx:"10",cy:"20",r:"2",key:"1xzdoj"}],["path",{d:"M10 7V6",key:"dljcrl"}],["path",{d:"M10 12v-1",key:"v7bkov"}],["path",{d:"M10 18v-2",key:"1cjy8d"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ub=R("FileAudio2Icon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v2",key:"fkyf72"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M2 17v-3a4 4 0 0 1 8 0v3",key:"1ggdre"}],["circle",{cx:"9",cy:"17",r:"1",key:"bc1fq4"}],["circle",{cx:"3",cy:"17",r:"1",key:"vo6nti"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pb=R("FileAudioIcon",[["path",{d:"M17.5 22h.5c.5 0 1-.2 1.4-.6.4-.4.6-.9.6-1.4V7.5L14.5 2H6c-.5 0-1 .2-1.4.6C4.2 3 4 3.5 4 4v3",key:"1013sb"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M10 20v-1a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0Z",key:"gqt63y"}],["path",{d:"M6 20v-1a2 2 0 1 0-4 0v1a2 2 0 1 0 4 0Z",key:"cf7lqx"}],["path",{d:"M2 19v-3a6 6 0 0 1 12 0v3",key:"1acxgf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dd=R("FileAxis3dIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M8 10v8h8",key:"tlaukw"}],["path",{d:"m8 18 4-4",key:"12zab0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _b=R("FileBadge2Icon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["path",{d:"M12 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z",key:"13rien"}],["path",{d:"m14 12.5 1 5.5-3-1-3 1 1-5.5",key:"14xlky"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mb=R("FileBadgeIcon",[["path",{d:"M4 7V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2h-6",key:"qtddq0"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M5 17a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z",key:"u0c8gj"}],["path",{d:"M7 16.5 8 22l-3-1-3 1 1-5.5",key:"5gm2nr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vb=R("FileBarChart2Icon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"M8 18v-1",key:"zg0ygc"}],["path",{d:"M16 18v-3",key:"j5jt4h"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hb=R("FileBarChartIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M12 18v-4",key:"q1q25u"}],["path",{d:"M8 18v-2",key:"qcmpov"}],["path",{d:"M16 18v-6",key:"15y0np"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fb=R("FileBoxIcon",[["path",{d:"M14.5 22H18a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"h7jej2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M2.97 13.12c-.6.36-.97 1.02-.97 1.74v3.28c0 .72.37 1.38.97 1.74l3 1.83c.63.39 1.43.39 2.06 0l3-1.83c.6-.36.97-1.02.97-1.74v-3.28c0-.72-.37-1.38-.97-1.74l-3-1.83a1.97 1.97 0 0 0-2.06 0l-3 1.83Z",key:"f4a3oc"}],["path",{d:"m7 17-4.74-2.85",key:"etm6su"}],["path",{d:"m7 17 4.74-2.85",key:"5xuooz"}],["path",{d:"M7 17v5",key:"1yj1jh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gb=R("FileCheck2Icon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m3 15 2 2 4-4",key:"1lhrkk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yb=R("FileCheckIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m9 15 2 2 4-4",key:"1grp1n"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bb=R("FileClockIcon",[["path",{d:"M16 22h2c.5 0 1-.2 1.4-.6.4-.4.6-.9.6-1.4V7.5L14.5 2H6c-.5 0-1 .2-1.4.6C4.2 3 4 3.5 4 4v3",key:"9lo3o3"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["circle",{cx:"8",cy:"16",r:"6",key:"10v15b"}],["path",{d:"M9.5 17.5 8 16.25V14",key:"1o80t2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wb=R("FileCode2Icon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m9 18 3-3-3-3",key:"112psh"}],["path",{d:"m5 12-3 3 3 3",key:"oke12k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kb=R("FileCodeIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m10 13-2 2 2 2",key:"17smn8"}],["path",{d:"m14 17 2-2-2-2",key:"14mezr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cd=R("FileCogIcon",[["circle",{cx:"6",cy:"13",r:"3",key:"1z65bp"}],["path",{d:"m9.7 14.4-.9-.3",key:"o1luaq"}],["path",{d:"m3.2 11.9-.9-.3",key:"qm3zk5"}],["path",{d:"m4.6 16.7.3-.9",key:"1o0ect"}],["path",{d:"m7.6 16.7-.4-1",key:"1ym8d1"}],["path",{d:"m4.8 10.3-.4-1",key:"18q26g"}],["path",{d:"m2.3 14.6 1-.4",key:"121m88"}],["path",{d:"m8.7 11.8 1-.4",key:"9meqp2"}],["path",{d:"m7.4 9.3-.3.9",key:"136qqn"}],["path",{d:"M14 2v6h6",key:"1kof46"}],["path",{d:"M4 5.5V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-1.5",key:"xwe04"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xb=R("FileDiffIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["path",{d:"M12 13V7",key:"h0r20n"}],["path",{d:"M9 10h6",key:"9gxzsh"}],["path",{d:"M9 17h6",key:"r8uit2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $b=R("FileDigitIcon",[["rect",{width:"4",height:"6",x:"2",y:"12",rx:"2",key:"jm304g"}],["path",{d:"M14 2v6h6",key:"1kof46"}],["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["path",{d:"M10 12h2v6",key:"12zw74"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cb=R("FileDownIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sb=R("FileEditIcon",[["path",{d:"M4 13.5V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2h-5.5",key:"1bg6eb"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M10.42 12.61a2.1 2.1 0 1 1 2.97 2.97L7.95 21 4 22l.99-3.95 5.43-5.44Z",key:"1rgxu8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Eb=R("FileHeartIcon",[["path",{d:"M4 6V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2H4",key:"dba9qu"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M10.29 10.7a2.43 2.43 0 0 0-2.66-.52c-.29.12-.56.3-.78.53l-.35.34-.35-.34a2.43 2.43 0 0 0-2.65-.53c-.3.12-.56.3-.79.53-.95.94-1 2.53.2 3.74L6.5 18l3.6-3.55c1.2-1.21 1.14-2.8.19-3.74Z",key:"1c1fso"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ab=R("FileImageIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["circle",{cx:"10",cy:"13",r:"2",key:"6v46hv"}],["path",{d:"m20 17-1.09-1.09a2 2 0 0 0-2.82 0L10 22",key:"17vly1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lb=R("FileInputIcon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M2 15h10",key:"jfw4w8"}],["path",{d:"m9 18 3-3-3-3",key:"112psh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ib=R("FileJson2Icon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M4 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"fq0c9t"}],["path",{d:"M8 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"4gibmv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vb=R("FileJsonIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mb=R("FileKey2Icon",[["path",{d:"M4 10V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2H4",key:"1nw5t3"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["circle",{cx:"4",cy:"16",r:"2",key:"1ehqvc"}],["path",{d:"m10 10-4.5 4.5",key:"7fwrp6"}],["path",{d:"m9 11 1 1",key:"wa6s5q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tb=R("FileKeyIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["circle",{cx:"10",cy:"16",r:"2",key:"4ckbqe"}],["path",{d:"m16 10-4.5 4.5",key:"7p3ebg"}],["path",{d:"m15 11 1 1",key:"1bsyx3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Db=R("FileLineChartIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m16 13-3.5 3.5-2-2L8 17",key:"zz7yod"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pb=R("FileLock2Icon",[["path",{d:"M4 5V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2H4",key:"gwd2r9"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["rect",{width:"8",height:"5",x:"2",y:"13",rx:"1",key:"10y5wo"}],["path",{d:"M8 13v-2a2 2 0 1 0-4 0v2",key:"1pdxzg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ub=R("FileLockIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["rect",{width:"8",height:"6",x:"8",y:"12",rx:"1",key:"3yr8at"}],["path",{d:"M15 12v-2a3 3 0 1 0-6 0v2",key:"1nqnhw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rb=R("FileMinus2Icon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M3 15h6",key:"4e2qda"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ob=R("FileMinusIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["line",{x1:"9",x2:"15",y1:"15",y2:"15",key:"110plj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fb=R("FileMusicIcon",[["circle",{cx:"14",cy:"16",r:"2",key:"1bzzi3"}],["circle",{cx:"6",cy:"18",r:"2",key:"1fncim"}],["path",{d:"M4 12.4V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2h-7.5",key:"skc018"}],["path",{d:"M8 18v-7.7L16 9v7",key:"1oie6o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nb=R("FileOutputIcon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M2 15h10",key:"jfw4w8"}],["path",{d:"m5 12-3 3 3 3",key:"oke12k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jb=R("FilePieChartIcon",[["path",{d:"M16 22h2a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v3",key:"zhyrez"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M4.04 11.71a5.84 5.84 0 1 0 8.2 8.29",key:"f1t5jc"}],["path",{d:"M13.83 16A5.83 5.83 0 0 0 8 10.17V16h5.83Z",key:"7q54ec"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hb=R("FilePlus2Icon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M3 15h6",key:"4e2qda"}],["path",{d:"M6 12v6",key:"1u72j0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qb=R("FilePlusIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["line",{x1:"12",x2:"12",y1:"18",y2:"12",key:"1tsf04"}],["line",{x1:"9",x2:"15",y1:"15",y2:"15",key:"110plj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zb=R("FileQuestionIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["path",{d:"M10 10.3c.2-.4.5-.8.9-1a2.1 2.1 0 0 1 2.6.4c.3.4.5.8.5 1.3 0 1.3-2 2-2 2",key:"1umxtm"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bb=R("FileScanIcon",[["path",{d:"M20 10V7.5L14.5 2H6a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h4.5",key:"uvikde"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M16 22a2 2 0 0 1-2-2",key:"1wqh5n"}],["path",{d:"M20 22a2 2 0 0 0 2-2",key:"1l9q4k"}],["path",{d:"M20 14a2 2 0 0 1 2 2",key:"1ny6zw"}],["path",{d:"M16 14a2 2 0 0 0-2 2",key:"ceaadl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gb=R("FileSearch2Icon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.25 16.25 15 18",key:"9eh8bj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wb=R("FileSearchIcon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v3",key:"am10z3"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M5 17a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",key:"ychnub"}],["path",{d:"m9 18-1.5-1.5",key:"1j6qii"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zb=R("FileSignatureIcon",[["path",{d:"M20 19.5v.5a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8.5L18 5.5",key:"kd5d3"}],["path",{d:"M8 18h1",key:"13wk12"}],["path",{d:"M18.42 9.61a2.1 2.1 0 1 1 2.97 2.97L16.95 17 13 18l.99-3.95 4.43-4.44Z",key:"johvi5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kb=R("FileSpreadsheetIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M14 17h2",key:"10kma7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yb=R("FileStackIcon",[["path",{d:"M16 2v5h5",key:"kt2in0"}],["path",{d:"M21 6v6.5c0 .8-.7 1.5-1.5 1.5h-7c-.8 0-1.5-.7-1.5-1.5v-9c0-.8.7-1.5 1.5-1.5H17l4 4z",key:"1km23n"}],["path",{d:"M7 8v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H15",key:"16874u"}],["path",{d:"M3 12v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H11",key:"k2ox98"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xb=R("FileSymlinkIcon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7",key:"138uzh"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m10 18 3-3-3-3",key:"18f6ys"}],["path",{d:"M4 18v-1a2 2 0 0 1 2-2h6",key:"5uz2rn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qb=R("FileTerminalIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m8 16 2-2-2-2",key:"10vzyd"}],["path",{d:"M12 18h4",key:"1wd2n7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jb=R("FileTextIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["line",{x1:"16",x2:"8",y1:"13",y2:"13",key:"14keom"}],["line",{x1:"16",x2:"8",y1:"17",y2:"17",key:"17nazh"}],["line",{x1:"10",x2:"8",y1:"9",y2:"9",key:"1a5vjj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ew=R("FileType2Icon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M2 13v-1h6v1",key:"1dh9dg"}],["path",{d:"M4 18h2",key:"1xrofg"}],["path",{d:"M5 12v6",key:"150t9c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tw=R("FileTypeIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M9 13v-1h6v1",key:"1bb014"}],["path",{d:"M11 18h2",key:"12mj7e"}],["path",{d:"M12 12v6",key:"3ahymv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aw=R("FileUpIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"m15 15-3-3-3 3",key:"15xj92"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sw=R("FileVideo2Icon",[["path",{d:"M4 8V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2H4",key:"1nti49"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m10 15.5 4 2.5v-6l-4 2.5",key:"t7cp39"}],["rect",{width:"8",height:"6",x:"2",y:"12",rx:"1",key:"1a6c1e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ow=R("FileVideoIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m10 11 5 3-5 3v-6Z",key:"7ntvm4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nw=R("FileVolume2Icon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M11.5 13.5c.32.4.5.94.5 1.5s-.18 1.1-.5 1.5",key:"joawwx"}],["path",{d:"M15 12c.64.8 1 1.87 1 3s-.36 2.2-1 3",key:"1f2wyw"}],["path",{d:"M8 15h.01",key:"a7atzg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lw=R("FileVolumeIcon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v3",key:"am10z3"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m7 10-3 2H2v4h2l3 2v-8Z",key:"tazg57"}],["path",{d:"M11 11c.64.8 1 1.87 1 3s-.36 2.2-1 3",key:"1yej3m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rw=R("FileWarningIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iw=R("FileX2Icon",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4",key:"702lig"}],["path",{d:"M14 2v6h6",key:"1kof46"}],["path",{d:"m3 12.5 5 5",key:"1qls4r"}],["path",{d:"m8 12.5-5 5",key:"b853mi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dw=R("FileXIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["line",{x1:"9.5",x2:"14.5",y1:"12.5",y2:"17.5",key:"izs6du"}],["line",{x1:"14.5",x2:"9.5",y1:"12.5",y2:"17.5",key:"1lehlj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cw=R("FileIcon",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uw=R("FilesIcon",[["path",{d:"M15.5 2H8.6c-.4 0-.8.2-1.1.5-.3.3-.5.7-.5 1.1v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1V6.5L15.5 2z",key:"cennsq"}],["path",{d:"M3 7.6v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8",key:"ms809a"}],["path",{d:"M15 2v5h5",key:"qq6kwv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pw=R("FilmIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 3v18",key:"bbkbws"}],["path",{d:"M3 7.5h4",key:"zfgn84"}],["path",{d:"M3 12h18",key:"1i2n21"}],["path",{d:"M3 16.5h4",key:"1230mu"}],["path",{d:"M17 3v18",key:"in4fa5"}],["path",{d:"M17 7.5h4",key:"myr1c1"}],["path",{d:"M17 16.5h4",key:"go4c1d"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _w=R("FilterXIcon",[["path",{d:"M13.013 3H2l8 9.46V19l4 2v-8.54l.9-1.055",key:"1fi1da"}],["path",{d:"m22 3-5 5",key:"12jva0"}],["path",{d:"m17 3 5 5",key:"k36vhe"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mw=R("FilterIcon",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vw=R("FingerprintIcon",[["path",{d:"M2 12C2 6.5 6.5 2 12 2a10 10 0 0 1 8 4",key:"1jc9o5"}],["path",{d:"M5 19.5C5.5 18 6 15 6 12c0-.7.12-1.37.34-2",key:"1mxgy1"}],["path",{d:"M17.29 21.02c.12-.6.43-2.3.5-3.02",key:"ptglia"}],["path",{d:"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4",key:"1nerag"}],["path",{d:"M8.65 22c.21-.66.45-1.32.57-2",key:"13wd9y"}],["path",{d:"M14 13.12c0 2.38 0 6.38-1 8.88",key:"o46ks0"}],["path",{d:"M2 16h.01",key:"1gqxmh"}],["path",{d:"M21.8 16c.2-2 .131-5.354 0-6",key:"drycrb"}],["path",{d:"M9 6.8a6 6 0 0 1 9 5.2c0 .47 0 1.17-.02 2",key:"1fgabc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hw=R("FireExtinguisherIcon",[["path",{d:"M15 6.5V3a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v3.5",key:"sqyvz"}],["path",{d:"M9 18h8",key:"i7pszb"}],["path",{d:"M18 3h-3",key:"7idoqj"}],["path",{d:"M11 3a6 6 0 0 0-6 6v11",key:"1v5je3"}],["path",{d:"M5 13h4",key:"svpcxo"}],["path",{d:"M17 10a4 4 0 0 0-8 0v10a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2Z",key:"vsjego"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fw=R("FishOffIcon",[["path",{d:"M18 12.47v.03m0-.5v.47m-.475 5.056A6.744 6.744 0 0 1 15 18c-3.56 0-7.56-2.53-8.5-6 .348-1.28 1.114-2.433 2.121-3.38m3.444-2.088A8.802 8.802 0 0 1 15 6c3.56 0 6.06 2.54 7 6-.309 1.14-.786 2.177-1.413 3.058",key:"1j1hse"}],["path",{d:"M7 10.67C7 8 5.58 5.97 2.73 5.5c-1 1.5-1 5 .23 6.5-1.24 1.5-1.24 5-.23 6.5C5.58 18.03 7 16 7 13.33m7.48-4.372A9.77 9.77 0 0 1 16 6.07m0 11.86a9.77 9.77 0 0 1-1.728-3.618",key:"1q46z8"}],["path",{d:"m16.01 17.93-.23 1.4A2 2 0 0 1 13.8 21H9.5a5.96 5.96 0 0 0 1.49-3.98M8.53 3h5.27a2 2 0 0 1 1.98 1.67l.23 1.4M2 2l20 20",key:"1407gh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gw=R("FishSymbolIcon",[["path",{d:"M2 16s9-15 20-4C11 23 2 8 2 8",key:"h4oh4o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yw=R("FishIcon",[["path",{d:"M6.5 12c.94-3.46 4.94-6 8.5-6 3.56 0 6.06 2.54 7 6-.94 3.47-3.44 6-7 6s-7.56-2.53-8.5-6Z",key:"15baut"}],["path",{d:"M18 12v.5",key:"18hhni"}],["path",{d:"M16 17.93a9.77 9.77 0 0 1 0-11.86",key:"16dt7o"}],["path",{d:"M7 10.67C7 8 5.58 5.97 2.73 5.5c-1 1.5-1 5 .23 6.5-1.24 1.5-1.24 5-.23 6.5C5.58 18.03 7 16 7 13.33",key:"l9di03"}],["path",{d:"M10.46 7.26C10.2 5.88 9.17 4.24 8 3h5.8a2 2 0 0 1 1.98 1.67l.23 1.4",key:"1kjonw"}],["path",{d:"m16.01 17.93-.23 1.4A2 2 0 0 1 13.8 21H9.5a5.96 5.96 0 0 0 1.49-3.98",key:"1zlm23"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bw=R("FlagOffIcon",[["path",{d:"M8 2c3 0 5 2 8 2s4-1 4-1v11",key:"9rwyz9"}],["path",{d:"M4 22V4",key:"1plyxx"}],["path",{d:"M4 15s1-1 4-1 5 2 8 2",key:"1myooe"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ww=R("FlagTriangleLeftIcon",[["path",{d:"M17 22V2L7 7l10 5",key:"1rmf0r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kw=R("FlagTriangleRightIcon",[["path",{d:"M7 22V2l10 5-10 5",key:"17n18y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xw=R("FlagIcon",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $w=R("FlameKindlingIcon",[["path",{d:"M12 2c1 3 2.5 3.5 3.5 4.5A5 5 0 0 1 17 10a5 5 0 1 1-10 0c0-.3 0-.6.1-.9a2 2 0 1 0 3.3-2C8 4.5 11 2 12 2Z",key:"1ir223"}],["path",{d:"m5 22 14-4",key:"1brv4h"}],["path",{d:"m5 18 14 4",key:"lgyyje"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cw=R("FlameIcon",[["path",{d:"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z",key:"96xj49"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sw=R("FlashlightOffIcon",[["path",{d:"M16 16v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2V10c0-2-2-2-2-4",key:"1r120k"}],["path",{d:"M7 2h11v4c0 2-2 2-2 4v1",key:"dz1920"}],["line",{x1:"11",x2:"18",y1:"6",y2:"6",key:"bi1vpe"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ew=R("FlashlightIcon",[["path",{d:"M18 6c0 2-2 2-2 4v10a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2V10c0-2-2-2-2-4V2h12z",key:"1orkel"}],["line",{x1:"6",x2:"18",y1:"6",y2:"6",key:"1z11jq"}],["line",{x1:"12",x2:"12",y1:"12",y2:"12",key:"1f4yc1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Aw=R("FlaskConicalOffIcon",[["path",{d:"M10 10 4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45l-1.272-2.542",key:"59ek9y"}],["path",{d:"M10 2v2.343",key:"15t272"}],["path",{d:"M14 2v6.343",key:"sxr80q"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M7 16h9",key:"t5njau"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lw=R("FlaskConicalIcon",[["path",{d:"M10 2v7.527a2 2 0 0 1-.211.896L4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45l-5.069-10.127A2 2 0 0 1 14 9.527V2",key:"pzvekw"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M7 16h10",key:"wp8him"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Iw=R("FlaskRoundIcon",[["path",{d:"M10 2v7.31",key:"5d1hyh"}],["path",{d:"M14 9.3V1.99",key:"14k4l0"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M14 9.3a6.5 6.5 0 1 1-4 0",key:"1r8fvy"}],["path",{d:"M5.52 16h12.96",key:"46hh1i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vw=R("FlipHorizontal2Icon",[["path",{d:"m3 7 5 5-5 5V7",key:"couhi7"}],["path",{d:"m21 7-5 5 5 5V7",key:"6ouia7"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 14v2",key:"8jcxud"}],["path",{d:"M12 8v2",key:"1woqiv"}],["path",{d:"M12 2v2",key:"tus03m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mw=R("FlipHorizontalIcon",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h3",key:"1i73f7"}],["path",{d:"M16 3h3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-3",key:"saxlbk"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 14v2",key:"8jcxud"}],["path",{d:"M12 8v2",key:"1woqiv"}],["path",{d:"M12 2v2",key:"tus03m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tw=R("FlipVertical2Icon",[["path",{d:"m17 3-5 5-5-5h10",key:"1ftt6x"}],["path",{d:"m17 21-5-5-5 5h10",key:"1m0wmu"}],["path",{d:"M4 12H2",key:"rhcxmi"}],["path",{d:"M10 12H8",key:"s88cx1"}],["path",{d:"M16 12h-2",key:"10asgb"}],["path",{d:"M22 12h-2",key:"14jgyd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dw=R("FlipVerticalIcon",[["path",{d:"M21 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v3",key:"14bfxa"}],["path",{d:"M21 16v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-3",key:"14rx03"}],["path",{d:"M4 12H2",key:"rhcxmi"}],["path",{d:"M10 12H8",key:"s88cx1"}],["path",{d:"M16 12h-2",key:"10asgb"}],["path",{d:"M22 12h-2",key:"14jgyd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pw=R("Flower2Icon",[["path",{d:"M12 5a3 3 0 1 1 3 3m-3-3a3 3 0 1 0-3 3m3-3v1M9 8a3 3 0 1 0 3 3M9 8h1m5 0a3 3 0 1 1-3 3m3-3h-1m-2 3v-1",key:"3pnvol"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["path",{d:"M12 10v12",key:"6ubwww"}],["path",{d:"M12 22c4.2 0 7-1.667 7-5-4.2 0-7 1.667-7 5Z",key:"9hd38g"}],["path",{d:"M12 22c-4.2 0-7-1.667-7-5 4.2 0 7 1.667 7 5Z",key:"ufn41s"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Uw=R("FlowerIcon",[["path",{d:"M12 7.5a4.5 4.5 0 1 1 4.5 4.5M12 7.5A4.5 4.5 0 1 0 7.5 12M12 7.5V9m-4.5 3a4.5 4.5 0 1 0 4.5 4.5M7.5 12H9m7.5 0a4.5 4.5 0 1 1-4.5 4.5m4.5-4.5H15m-3 4.5V15",key:"51z86h"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"m8 16 1.5-1.5",key:"ce6zph"}],["path",{d:"M14.5 9.5 16 8",key:"1kzrzb"}],["path",{d:"m8 8 1.5 1.5",key:"1yv88w"}],["path",{d:"M14.5 14.5 16 16",key:"12xhjh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rw=R("FocusIcon",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ow=R("FoldHorizontalIcon",[["path",{d:"M2 12h6",key:"1wqiqv"}],["path",{d:"M22 12h-6",key:"1eg9hc"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 8v2",key:"1woqiv"}],["path",{d:"M12 14v2",key:"8jcxud"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m19 9-3 3 3 3",key:"12ol22"}],["path",{d:"m5 15 3-3-3-3",key:"1kdhjc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fw=R("FoldVerticalIcon",[["path",{d:"M12 22v-6",key:"6o8u61"}],["path",{d:"M12 8V2",key:"1wkif3"}],["path",{d:"M4 12H2",key:"rhcxmi"}],["path",{d:"M10 12H8",key:"s88cx1"}],["path",{d:"M16 12h-2",key:"10asgb"}],["path",{d:"M22 12h-2",key:"14jgyd"}],["path",{d:"m15 19-3-3-3 3",key:"e37ymu"}],["path",{d:"m15 5-3 3-3-3",key:"19d6lf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nw=R("FolderArchiveIcon",[["circle",{cx:"15",cy:"19",r:"2",key:"u2pros"}],["path",{d:"M20.9 19.8A2 2 0 0 0 22 18V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h5.1",key:"1jj40k"}],["path",{d:"M15 11v-1",key:"cntcp"}],["path",{d:"M15 17v-2",key:"1279jj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jw=R("FolderCheckIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"m9 13 2 2 4-4",key:"6343dt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hw=R("FolderClockIcon",[["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}],["path",{d:"M7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2",key:"1urifu"}],["path",{d:"M16 14v2l1 1",key:"xth2jh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qw=R("FolderClosedIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"M2 10h20",key:"1ir3d8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ud=R("FolderCogIcon",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["path",{d:"M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v3.3",key:"1k8050"}],["path",{d:"m21.7 19.4-.9-.3",key:"1qgwi9"}],["path",{d:"m15.2 16.9-.9-.3",key:"1t7mvx"}],["path",{d:"m16.6 21.7.3-.9",key:"1j67ps"}],["path",{d:"m19.1 15.2.3-.9",key:"18r7jp"}],["path",{d:"m19.6 21.7-.4-1",key:"z2vh2"}],["path",{d:"m16.8 15.3-.4-1",key:"1ei7r6"}],["path",{d:"m14.3 19.6 1-.4",key:"11sv9r"}],["path",{d:"m20.7 16.8 1-.4",key:"19m87a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zw=R("FolderDotIcon",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["circle",{cx:"12",cy:"13",r:"1",key:"49l61u"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bw=R("FolderDownIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"m15 13-3 3-3-3",key:"6j2sf0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gw=R("FolderEditIcon",[["path",{d:"M8.4 10.6a2.1 2.1 0 1 1 2.99 2.98L6 19l-4 1 1-3.9Z",key:"10ocjb"}],["path",{d:"M2 11.5V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-9.5",key:"1h3cz8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ww=R("FolderGit2Icon",[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["path",{d:"M18 19c-2.8 0-5-2.2-5-5v8",key:"pkpw2h"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zw=R("FolderGitIcon",[["circle",{cx:"12",cy:"13",r:"2",key:"1c1ljs"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"M14 13h3",key:"1dgedf"}],["path",{d:"M7 13h3",key:"1pygq7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kw=R("FolderHeartIcon",[["path",{d:"M11 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v1.5",key:"6hud8k"}],["path",{d:"M13.9 17.45c-1.2-1.2-1.14-2.8-.2-3.73a2.43 2.43 0 0 1 3.44 0l.36.34.34-.34a2.43 2.43 0 0 1 3.45-.01v0c.95.95 1 2.53-.2 3.74L17.5 21Z",key:"vgq86i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yw=R("FolderInputIcon",[["path",{d:"M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1",key:"fm4g5t"}],["path",{d:"M2 13h10",key:"pgb2dq"}],["path",{d:"m9 16 3-3-3-3",key:"6m91ic"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xw=R("FolderKanbanIcon",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qw=R("FolderKeyIcon",[["circle",{cx:"16",cy:"20",r:"2",key:"1vifvg"}],["path",{d:"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2",key:"3hgo9p"}],["path",{d:"m22 14-4.5 4.5",key:"1ef6z8"}],["path",{d:"m21 15 1 1",key:"1ejcpy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jw=R("FolderLockIcon",[["rect",{width:"8",height:"5",x:"14",y:"17",rx:"1",key:"19aais"}],["path",{d:"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2.5",key:"1w6v7t"}],["path",{d:"M20 17v-2a2 2 0 1 0-4 0v2",key:"pwaxnr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ek=R("FolderMinusIcon",[["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tk=R("FolderOpenDotIcon",[["path",{d:"m6 14 1.45-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2",key:"1nmvlm"}],["circle",{cx:"14",cy:"15",r:"1",key:"1gm4qj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ak=R("FolderOpenIcon",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sk=R("FolderOutputIcon",[["path",{d:"M2 7.5V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2",key:"jm8npq"}],["path",{d:"M2 13h10",key:"pgb2dq"}],["path",{d:"m5 10-3 3 3 3",key:"1r8ie0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ok=R("FolderPlusIcon",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nk=R("FolderRootIcon",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["circle",{cx:"12",cy:"13",r:"2",key:"1c1ljs"}],["path",{d:"M12 15v5",key:"11xva1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lk=R("FolderSearch2Icon",[["circle",{cx:"11.5",cy:"12.5",r:"2.5",key:"1ea5ju"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"M13.3 14.3 15 16",key:"1y4v1n"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rk=R("FolderSearchIcon",[["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["path",{d:"M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1",key:"1bw5m7"}],["path",{d:"m21 21-1.5-1.5",key:"3sg1j"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ik=R("FolderSymlinkIcon",[["path",{d:"M2 9V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2",key:"1or2t8"}],["path",{d:"m8 16 3-3-3-3",key:"rlqrt1"}],["path",{d:"M2 16v-1a2 2 0 0 1 2-2h6",key:"pgw8ln"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dk=R("FolderSyncIcon",[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v1",key:"1rkwto"}],["path",{d:"M12 10v4h4",key:"1czhmt"}],["path",{d:"m12 14 1.5-1.5c.9-.9 2.2-1.5 3.5-1.5s2.6.6 3.5 1.5c.4.4.8 1 1 1.5",key:"25wejs"}],["path",{d:"M22 22v-4h-4",key:"1ewp4q"}],["path",{d:"m22 18-1.5 1.5c-.9.9-2.1 1.5-3.5 1.5s-2.6-.6-3.5-1.5c-.4-.4-.8-1-1-1.5",key:"vlp1j8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ck=R("FolderTreeIcon",[["path",{d:"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"hod4my"}],["path",{d:"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"w4yl2u"}],["path",{d:"M3 5a2 2 0 0 0 2 2h3",key:"f2jnh7"}],["path",{d:"M3 3v13a2 2 0 0 0 2 2h3",key:"k8epm1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uk=R("FolderUpIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"m9 13 3-3 3 3",key:"1pxg3c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pk=R("FolderXIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"m9.5 10.5 5 5",key:"ra9qjz"}],["path",{d:"m14.5 10.5-5 5",key:"l2rkpq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _k=R("FolderIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mk=R("FoldersIcon",[["path",{d:"M20 17a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3.9a2 2 0 0 1-1.69-.9l-.81-1.2a2 2 0 0 0-1.67-.9H8a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2Z",key:"4u7rpt"}],["path",{d:"M2 8v11a2 2 0 0 0 2 2h14",key:"1eicx1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vk=R("FootprintsIcon",[["path",{d:"M4 16v-2.38C4 11.5 2.97 10.5 3 8c.03-2.72 1.49-6 4.5-6C9.37 2 10 3.8 10 5.5c0 3.11-2 5.66-2 8.68V16a2 2 0 1 1-4 0Z",key:"1dudjm"}],["path",{d:"M20 20v-2.38c0-2.12 1.03-3.12 1-5.62-.03-2.72-1.49-6-4.5-6C14.63 6 14 7.8 14 9.5c0 3.11 2 5.66 2 8.68V20a2 2 0 1 0 4 0Z",key:"l2t8xc"}],["path",{d:"M16 17h4",key:"1dejxt"}],["path",{d:"M4 13h4",key:"1bwh8b"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hk=R("ForkliftIcon",[["path",{d:"M12 12H5a2 2 0 0 0-2 2v5",key:"7zsz91"}],["circle",{cx:"13",cy:"19",r:"2",key:"wjnkru"}],["circle",{cx:"5",cy:"19",r:"2",key:"v8kfzx"}],["path",{d:"M8 19h3m5-17v17h6M6 12V7c0-1.1.9-2 2-2h3l5 5",key:"13bk1p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fk=R("FormInputIcon",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M17 12h.01",key:"1m0b6t"}],["path",{d:"M7 12h.01",key:"eqddd0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gk=R("ForwardIcon",[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yk=R("FrameIcon",[["line",{x1:"22",x2:"2",y1:"6",y2:"6",key:"15w7dq"}],["line",{x1:"22",x2:"2",y1:"18",y2:"18",key:"1ip48p"}],["line",{x1:"6",x2:"6",y1:"2",y2:"22",key:"a2lnyx"}],["line",{x1:"18",x2:"18",y1:"2",y2:"22",key:"8vb6jd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bk=R("FramerIcon",[["path",{d:"M5 16V9h14V2H5l14 14h-7m-7 0 7 7v-7m-7 0h7",key:"1a2nng"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wk=R("FrownIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 16s-1.5-2-4-2-4 2-4 2",key:"epbg0q"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kk=R("FuelIcon",[["line",{x1:"3",x2:"15",y1:"22",y2:"22",key:"xegly4"}],["line",{x1:"4",x2:"14",y1:"9",y2:"9",key:"xcnuvu"}],["path",{d:"M14 22V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v18",key:"16j0yd"}],["path",{d:"M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 2 2h0a2 2 0 0 0 2-2V9.83a2 2 0 0 0-.59-1.42L18 5",key:"8ur5zv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xk=R("FullscreenIcon",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["rect",{width:"10",height:"8",x:"7",y:"8",rx:"1",key:"vys8me"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $k=R("FunctionSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3",key:"m1af9g"}],["path",{d:"M9 11.2h5.7",key:"3zgcl2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ck=R("GalleryHorizontalEndIcon",[["path",{d:"M2 7v10",key:"a2pl2d"}],["path",{d:"M6 5v14",key:"1kq3d7"}],["rect",{width:"12",height:"18",x:"10",y:"3",rx:"2",key:"13i7bc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sk=R("GalleryHorizontalIcon",[["path",{d:"M2 3v18",key:"pzttux"}],["rect",{width:"12",height:"18",x:"6",y:"3",rx:"2",key:"btr8bg"}],["path",{d:"M22 3v18",key:"6jf3v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ek=R("GalleryThumbnailsIcon",[["rect",{width:"18",height:"14",x:"3",y:"3",rx:"2",key:"74y24f"}],["path",{d:"M4 21h1",key:"16zlid"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M14 21h1",key:"v9vybs"}],["path",{d:"M19 21h1",key:"edywat"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ak=R("GalleryVerticalEndIcon",[["path",{d:"M7 2h10",key:"nczekb"}],["path",{d:"M5 6h14",key:"u2x4p"}],["rect",{width:"18",height:"12",x:"3",y:"10",rx:"2",key:"l0tzu3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lk=R("GalleryVerticalIcon",[["path",{d:"M3 2h18",key:"15qxfx"}],["rect",{width:"18",height:"12",x:"3",y:"6",rx:"2",key:"1439r6"}],["path",{d:"M3 22h18",key:"8prr45"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ik=R("Gamepad2Icon",[["line",{x1:"6",x2:"10",y1:"11",y2:"11",key:"1gktln"}],["line",{x1:"8",x2:"8",y1:"9",y2:"13",key:"qnk9ow"}],["line",{x1:"15",x2:"15.01",y1:"12",y2:"12",key:"krot7o"}],["line",{x1:"18",x2:"18.01",y1:"10",y2:"10",key:"1lcuu1"}],["path",{d:"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",key:"mfqc10"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vk=R("GamepadIcon",[["line",{x1:"6",x2:"10",y1:"12",y2:"12",key:"161bw2"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"15",x2:"15.01",y1:"13",y2:"13",key:"dqpgro"}],["line",{x1:"18",x2:"18.01",y1:"11",y2:"11",key:"meh2c"}],["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pd=R("GanttChartSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 8h7",key:"kbo1nt"}],["path",{d:"M8 12h6",key:"ikassy"}],["path",{d:"M11 16h5",key:"oq65wt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mk=R("GanttChartIcon",[["path",{d:"M8 6h10",key:"9lnwnk"}],["path",{d:"M6 12h9",key:"1g9pqf"}],["path",{d:"M11 18h7",key:"c8dzvl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tk=R("GaugeCircleIcon",[["path",{d:"M15.6 2.7a10 10 0 1 0 5.7 5.7",key:"1e0p6d"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M13.4 10.6 19 5",key:"1kr7tw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dk=R("GaugeIcon",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pk=R("GavelIcon",[["path",{d:"m14.5 12.5-8 8a2.119 2.119 0 1 1-3-3l8-8",key:"15492f"}],["path",{d:"m16 16 6-6",key:"vzrcl6"}],["path",{d:"m8 8 6-6",key:"18bi4p"}],["path",{d:"m9 7 8 8",key:"5jnvq1"}],["path",{d:"m21 11-8-8",key:"z4y7zo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Uk=R("GemIcon",[["path",{d:"M6 3h12l4 6-10 13L2 9Z",key:"1pcd5k"}],["path",{d:"M11 3 8 9l4 13 4-13-3-6",key:"1fcu3u"}],["path",{d:"M2 9h20",key:"16fsjt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rk=R("GhostIcon",[["path",{d:"M9 10h.01",key:"qbtxuw"}],["path",{d:"M15 10h.01",key:"1qmjsl"}],["path",{d:"M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z",key:"uwwb07"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ok=R("GiftIcon",[["rect",{x:"3",y:"8",width:"18",height:"4",rx:"1",key:"bkv52"}],["path",{d:"M12 8v13",key:"1c76mn"}],["path",{d:"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7",key:"6wjy6b"}],["path",{d:"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5",key:"1ihvrl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fk=R("GitBranchPlusIcon",[["path",{d:"M6 3v12",key:"qpgusn"}],["path",{d:"M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",key:"1d02ji"}],["path",{d:"M6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",key:"chk6ph"}],["path",{d:"M15 6a9 9 0 0 0-9 9",key:"or332x"}],["path",{d:"M18 15v6",key:"9wciyi"}],["path",{d:"M21 18h-6",key:"139f0c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nk=R("GitBranchIcon",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _d=R("GitCommitHorizontalIcon",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jk=R("GitCommitVerticalIcon",[["path",{d:"M12 3v6",key:"1holv5"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M12 15v6",key:"a9ows0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hk=R("GitCompareArrowsIcon",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"M12 18H7a2 2 0 0 1-2-2V9",key:"16sdep"}],["path",{d:"m9 15 3 3-3 3",key:"1m3kbl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qk=R("GitCompareIcon",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["path",{d:"M11 18H8a2 2 0 0 1-2-2V9",key:"19pyzm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zk=R("GitForkIcon",[["circle",{cx:"12",cy:"18",r:"3",key:"1mpf1b"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["path",{d:"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9",key:"1uq4wg"}],["path",{d:"M12 12v3",key:"158kv8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bk=R("GitGraphIcon",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v6",key:"158jrl"}],["circle",{cx:"5",cy:"18",r:"3",key:"104gr9"}],["path",{d:"M12 3v18",key:"108xh3"}],["circle",{cx:"19",cy:"6",r:"3",key:"108a5v"}],["path",{d:"M16 15.7A9 9 0 0 0 19 9",key:"1e3vqb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gk=R("GitMergeIcon",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wk=R("GitPullRequestArrowIcon",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v12",key:"ih889a"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zk=R("GitPullRequestClosedIcon",[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 9v12",key:"1sc30k"}],["path",{d:"m21 3-6 6",key:"16nqsk"}],["path",{d:"m21 9-6-6",key:"9j17rh"}],["path",{d:"M18 11.5V15",key:"65xf6f"}],["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kk=R("GitPullRequestCreateArrowIcon",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v12",key:"ih889a"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v3",key:"1rbwk6"}],["path",{d:"M19 15v6",key:"10aioa"}],["path",{d:"M22 18h-6",key:"1d5gi5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yk=R("GitPullRequestCreateIcon",[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 9v12",key:"1sc30k"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v3",key:"1jb6z3"}],["path",{d:"M18 15v6",key:"9wciyi"}],["path",{d:"M21 18h-6",key:"139f0c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xk=R("GitPullRequestDraftIcon",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M18 6V5",key:"1oao2s"}],["path",{d:"M18 11v-1",key:"11c8tz"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qk=R("GitPullRequestIcon",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jk=R("GithubIcon",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ex=R("GitlabIcon",[["path",{d:"m22 13.29-3.33-10a.42.42 0 0 0-.14-.18.38.38 0 0 0-.22-.11.39.39 0 0 0-.23.07.42.42 0 0 0-.14.18l-2.26 6.67H8.32L6.1 3.26a.42.42 0 0 0-.1-.18.38.38 0 0 0-.26-.08.39.39 0 0 0-.23.07.42.42 0 0 0-.14.18L2 13.29a.74.74 0 0 0 .27.83L12 21l9.69-6.88a.71.71 0 0 0 .31-.83Z",key:"148pdi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tx=R("GlassWaterIcon",[["path",{d:"M15.2 22H8.8a2 2 0 0 1-2-1.79L5 3h14l-1.81 17.21A2 2 0 0 1 15.2 22Z",key:"48rfw3"}],["path",{d:"M6 12a5 5 0 0 1 6 0 5 5 0 0 0 6 0",key:"mjntcy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ax=R("GlassesIcon",[["circle",{cx:"6",cy:"15",r:"4",key:"vux9w4"}],["circle",{cx:"18",cy:"15",r:"4",key:"18o8ve"}],["path",{d:"M14 15a2 2 0 0 0-2-2 2 2 0 0 0-2 2",key:"1ag4bs"}],["path",{d:"M2.5 13 5 7c.7-1.3 1.4-2 3-2",key:"1hm1gs"}],["path",{d:"M21.5 13 19 7c-.7-1.3-1.5-2-3-2",key:"1r31ai"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sx=R("Globe2Icon",[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3v0a2 2 0 0 1 2 2v0c0 1.1.9 2 2 2v0a2 2 0 0 0 2-2v0c0-1.1.9-2 2-2h3.17",key:"1fi5u6"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2v0a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"xsiumc"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ox=R("GlobeIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nx=R("GoalIcon",[["path",{d:"M12 13V2l8 4-8 4",key:"5wlwwj"}],["path",{d:"M20.55 10.23A9 9 0 1 1 8 4.94",key:"5988i3"}],["path",{d:"M8 10a5 5 0 1 0 8.9 2.02",key:"1hq7ot"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lx=R("GrabIcon",[["path",{d:"M18 11.5V9a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v1.4",key:"n5nng"}],["path",{d:"M14 10V8a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v2",key:"185i9d"}],["path",{d:"M10 9.9V9a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v5",key:"11pz95"}],["path",{d:"M6 14v0a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0",key:"16yk7l"}],["path",{d:"M18 11v0a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-4a8 8 0 0 1-8-8 2 2 0 1 1 4 0",key:"nzvb1c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rx=R("GraduationCapIcon",[["path",{d:"M22 10v6M2 10l10-5 10 5-10 5z",key:"1ef52a"}],["path",{d:"M6 12v5c3 3 9 3 12 0v-5",key:"1f75yj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ix=R("GrapeIcon",[["path",{d:"M22 5V2l-5.89 5.89",key:"1eenpo"}],["circle",{cx:"16.6",cy:"15.89",r:"3",key:"xjtalx"}],["circle",{cx:"8.11",cy:"7.4",r:"3",key:"u2fv6i"}],["circle",{cx:"12.35",cy:"11.65",r:"3",key:"i6i8g7"}],["circle",{cx:"13.91",cy:"5.85",r:"3",key:"6ye0dv"}],["circle",{cx:"18.15",cy:"10.09",r:"3",key:"snx9no"}],["circle",{cx:"6.56",cy:"13.2",r:"3",key:"17x4xg"}],["circle",{cx:"10.8",cy:"17.44",r:"3",key:"1hogw9"}],["circle",{cx:"5",cy:"19",r:"3",key:"1sn6vo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const md=R("Grid2x2Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 12h18",key:"1i2n21"}],["path",{d:"M12 3v18",key:"108xh3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rl=R("Grid3x3Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dx=R("GripHorizontalIcon",[["circle",{cx:"12",cy:"9",r:"1",key:"124mty"}],["circle",{cx:"19",cy:"9",r:"1",key:"1ruzo2"}],["circle",{cx:"5",cy:"9",r:"1",key:"1a8b28"}],["circle",{cx:"12",cy:"15",r:"1",key:"1e56xg"}],["circle",{cx:"19",cy:"15",r:"1",key:"1a92ep"}],["circle",{cx:"5",cy:"15",r:"1",key:"5r1jwy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cx=R("GripVerticalIcon",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ux=R("GripIcon",[["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"19",cy:"5",r:"1",key:"w8mnmm"}],["circle",{cx:"5",cy:"5",r:"1",key:"lttvr7"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}],["circle",{cx:"19",cy:"19",r:"1",key:"shf9b7"}],["circle",{cx:"5",cy:"19",r:"1",key:"bfqh0e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const px=R("GroupIcon",[["path",{d:"M3 7V5c0-1.1.9-2 2-2h2",key:"adw53z"}],["path",{d:"M17 3h2c1.1 0 2 .9 2 2v2",key:"an4l38"}],["path",{d:"M21 17v2c0 1.1-.9 2-2 2h-2",key:"144t0e"}],["path",{d:"M7 21H5c-1.1 0-2-.9-2-2v-2",key:"rtnfgi"}],["rect",{width:"7",height:"5",x:"7",y:"7",rx:"1",key:"1eyiv7"}],["rect",{width:"7",height:"5",x:"10",y:"12",rx:"1",key:"1qlmkx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _x=R("GuitarIcon",[["path",{d:"m20 7 1.7-1.7a1 1 0 0 0 0-1.4l-1.6-1.6a1 1 0 0 0-1.4 0L17 4v3Z",key:"15ixgv"}],["path",{d:"m17 7-5.1 5.1",key:"l9guh7"}],["circle",{cx:"11.5",cy:"12.5",r:".5",key:"1evg0a"}],["path",{d:"M6 12a2 2 0 0 0 1.8-1.2l.4-.9C8.7 8.8 9.8 8 11 8c2.8 0 5 2.2 5 5 0 1.2-.8 2.3-1.9 2.8l-.9.4A2 2 0 0 0 12 18a4 4 0 0 1-4 4c-3.3 0-6-2.7-6-6a4 4 0 0 1 4-4",key:"x9fguj"}],["path",{d:"m6 16 2 2",key:"16qmzd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mx=R("HammerIcon",[["path",{d:"m15 12-8.5 8.5c-.83.83-2.17.83-3 0 0 0 0 0 0 0a2.12 2.12 0 0 1 0-3L12 9",key:"1afvon"}],["path",{d:"M17.64 15 22 10.64",key:"zsji6s"}],["path",{d:"m20.91 11.7-1.25-1.25c-.6-.6-.93-1.4-.93-2.25v-.86L16.01 4.6a5.56 5.56 0 0 0-3.94-1.64H9l.92.82A6.18 6.18 0 0 1 12 8.4v1.56l2 2h2.47l2.26 1.91",key:"lehyy1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vx=R("HandMetalIcon",[["path",{d:"M18 12.5V10a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v1.4",key:"7eki13"}],["path",{d:"M14 11V9a2 2 0 1 0-4 0v2",key:"94qvcw"}],["path",{d:"M10 10.5V5a2 2 0 1 0-4 0v9",key:"m1ah89"}],["path",{d:"m7 15-1.76-1.76a2 2 0 0 0-2.83 2.82l3.6 3.6C7.5 21.14 9.2 22 12 22h2a8 8 0 0 0 8-8V7a2 2 0 1 0-4 0v5",key:"t1skq1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hx=R("HandIcon",[["path",{d:"M18 11V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0",key:"aigmz7"}],["path",{d:"M14 10V4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v2",key:"1n6bmn"}],["path",{d:"M10 10.5V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v8",key:"a9iiix"}],["path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15",key:"1s1gnw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fx=R("HardDriveDownloadIcon",[["path",{d:"M12 2v8",key:"1q4o3n"}],["path",{d:"m16 6-4 4-4-4",key:"6wukr"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",key:"w68u3i"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"M10 18h.01",key:"h775k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gx=R("HardDriveUploadIcon",[["path",{d:"m16 6-4-4-4 4",key:"13yo43"}],["path",{d:"M12 2v8",key:"1q4o3n"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",key:"w68u3i"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"M10 18h.01",key:"h775k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yx=R("HardDriveIcon",[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bx=R("HardHatIcon",[["path",{d:"M2 18a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v2z",key:"1dej2m"}],["path",{d:"M10 10V5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v5",key:"1p9q5i"}],["path",{d:"M4 15v-3a6 6 0 0 1 6-6h0",key:"1uc279"}],["path",{d:"M14 6h0a6 6 0 0 1 6 6v3",key:"1j9mnm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wx=R("HashIcon",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kx=R("HazeIcon",[["path",{d:"m5.2 6.2 1.4 1.4",key:"17imol"}],["path",{d:"M2 13h2",key:"13gyu8"}],["path",{d:"M20 13h2",key:"16rner"}],["path",{d:"m17.4 7.6 1.4-1.4",key:"t4xlah"}],["path",{d:"M22 17H2",key:"1gtaj3"}],["path",{d:"M22 21H2",key:"1gy6en"}],["path",{d:"M16 13a4 4 0 0 0-8 0",key:"1dyczq"}],["path",{d:"M12 5V2.5",key:"1vytko"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xx=R("HdmiPortIcon",[["path",{d:"M22 9a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h1l2 2h12l2-2h1a1 1 0 0 0 1-1Z",key:"2128wb"}],["path",{d:"M7.5 12h9",key:"1t0ckc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $x=R("Heading1Icon",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"m17 12 3-2v8",key:"1hhhft"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cx=R("Heading2Icon",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1",key:"9jr5yi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sx=R("Heading3Icon",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2",key:"68ncm8"}],["path",{d:"M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2",key:"1ejuhz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ex=R("Heading4Icon",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"M17 10v4h4",key:"13sv97"}],["path",{d:"M21 10v8",key:"1kdml4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ax=R("Heading5Icon",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["path",{d:"M17 13v-3h4",key:"1nvgqp"}],["path",{d:"M17 17.7c.4.2.8.3 1.3.3 1.5 0 2.7-1.1 2.7-2.5S19.8 13 18.3 13H17",key:"2nebdn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lx=R("Heading6Icon",[["path",{d:"M4 12h8",key:"17cfdx"}],["path",{d:"M4 18V6",key:"1rz3zl"}],["path",{d:"M12 18V6",key:"zqpxq5"}],["circle",{cx:"19",cy:"16",r:"2",key:"15mx69"}],["path",{d:"M20 10c-2 2-3 3.5-3 6",key:"f35dl0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ix=R("HeadingIcon",[["path",{d:"M6 12h12",key:"8npq4p"}],["path",{d:"M6 20V4",key:"1w1bmo"}],["path",{d:"M18 20V4",key:"o2hl4u"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vx=R("HeadphonesIcon",[["path",{d:"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3",key:"1xhozi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mx=R("HeartCrackIcon",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}],["path",{d:"m12 13-1-1 2-2-3-3 2-2",key:"xjdxli"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tx=R("HeartHandshakeIcon",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}],["path",{d:"M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08v0c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66",key:"12sd6o"}],["path",{d:"m18 15-2-2",key:"60u0ii"}],["path",{d:"m15 18-2-2",key:"6p76be"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dx=R("HeartOffIcon",[["line",{x1:"2",y1:"2",x2:"22",y2:"22",key:"1w4vcy"}],["path",{d:"M16.5 16.5 12 21l-7-7c-1.5-1.45-3-3.2-3-5.5a5.5 5.5 0 0 1 2.14-4.35",key:"3mpagl"}],["path",{d:"M8.76 3.1c1.15.22 2.13.78 3.24 1.9 1.5-1.5 2.74-2 4.5-2A5.5 5.5 0 0 1 22 8.5c0 2.12-1.3 3.78-2.67 5.17",key:"1gh3v3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Px=R("HeartPulseIcon",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}],["path",{d:"M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27",key:"1uw2ng"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ux=R("HeartIcon",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rx=R("HelpCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ox=R("HelpingHandIcon",[["path",{d:"m3 15 5.12-5.12A3 3 0 0 1 10.24 9H13a2 2 0 1 1 0 4h-2.5m4-.68 4.17-4.89a1.88 1.88 0 0 1 2.92 2.36l-4.2 5.94A3 3 0 0 1 14.96 17H9.83a2 2 0 0 0-1.42.59L7 19",key:"nitrv7"}],["path",{d:"m2 14 6 6",key:"g6j1uo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fx=R("HexagonIcon",[["path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",key:"yt0hxn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nx=R("HighlighterIcon",[["path",{d:"m9 11-6 6v3h9l3-3",key:"1a3l36"}],["path",{d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4",key:"14a9rk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jx=R("HistoryIcon",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hx=R("HomeIcon",[["path",{d:"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"y5dka4"}],["polyline",{points:"9 22 9 12 15 12 15 22",key:"e2us08"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qx=R("HopOffIcon",[["path",{d:"M17.5 5.5C19 7 20.5 9 21 11c-1.323.265-2.646.39-4.118.226",key:"10j95a"}],["path",{d:"M5.5 17.5C7 19 9 20.5 11 21c.5-2.5.5-5-1-8.5",key:"1mqyjd"}],["path",{d:"M17.5 17.5c-2.5 0-4 0-6-1",key:"11elt5"}],["path",{d:"M20 11.5c1 1.5 2 3.5 2 4.5",key:"13ezvz"}],["path",{d:"M11.5 20c1.5 1 3.5 2 4.5 2 .5-1.5 0-3-.5-4.5",key:"1ufrz1"}],["path",{d:"M22 22c-2 0-3.5-.5-5.5-1.5",key:"1n8vbj"}],["path",{d:"M4.783 4.782C1.073 8.492 1 14.5 5 18c1-1 2-4.5 1.5-6.5 1.5 1 4 1 5.5.5M8.227 2.57C11.578 1.335 15.453 2.089 18 5c-.88.88-3.7 1.761-5.726 1.618",key:"1h85u8"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zx=R("HopIcon",[["path",{d:"M17.5 5.5C19 7 20.5 9 21 11c-2.5.5-5 .5-8.5-1",key:"l0z2za"}],["path",{d:"M5.5 17.5C7 19 9 20.5 11 21c.5-2.5.5-5-1-8.5",key:"1mqyjd"}],["path",{d:"M16.5 11.5c1 2 1 3.5 1 6-2.5 0-4 0-6-1",key:"10xoad"}],["path",{d:"M20 11.5c1 1.5 2 3.5 2 4.5-1.5.5-3 0-4.5-.5",key:"1a4gpx"}],["path",{d:"M11.5 20c1.5 1 3.5 2 4.5 2 .5-1.5 0-3-.5-4.5",key:"1ufrz1"}],["path",{d:"M20.5 16.5c1 2 1.5 3.5 1.5 5.5-2 0-3.5-.5-5.5-1.5",key:"1ok5d2"}],["path",{d:"M4.783 4.782C8.493 1.072 14.5 1 18 5c-1 1-4.5 2-6.5 1.5 1 1.5 1 4 .5 5.5-1.5.5-4 .5-5.5-.5C7 13.5 6 17 5 18c-4-3.5-3.927-9.508-.217-13.218Z",key:"8hlroy"}],["path",{d:"M4.5 4.5 3 3c-.184-.185-.184-.816 0-1",key:"q3aj97"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bx=R("HotelIcon",[["path",{d:"M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z",key:"p9z69c"}],["path",{d:"m9 16 .348-.24c1.465-1.013 3.84-1.013 5.304 0L15 16",key:"1bvcvh"}],["path",{d:"M8 7h.01",key:"1vti4s"}],["path",{d:"M16 7h.01",key:"1kdx03"}],["path",{d:"M12 7h.01",key:"1ivr5q"}],["path",{d:"M12 11h.01",key:"z322tv"}],["path",{d:"M16 11h.01",key:"xkw8gn"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M10 22v-6.5m4 0V22",key:"16gs4s"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gx=R("HourglassIcon",[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M5 2h14",key:"pdyrp9"}],["path",{d:"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22",key:"1d314k"}],["path",{d:"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2",key:"1vvvr6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wx=R("IceCream2Icon",[["path",{d:"M12 17c5 0 8-2.69 8-6H4c0 3.31 3 6 8 6Zm-4 4h8m-4-3v3M5.14 11a3.5 3.5 0 1 1 6.71 0",key:"g86ewz"}],["path",{d:"M12.14 11a3.5 3.5 0 1 1 6.71 0",key:"4k3m1s"}],["path",{d:"M15.5 6.5a3.5 3.5 0 1 0-7 0",key:"zmuahr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zx=R("IceCreamIcon",[["path",{d:"m7 11 4.08 10.35a1 1 0 0 0 1.84 0L17 11",key:"1v6356"}],["path",{d:"M17 7A5 5 0 0 0 7 7",key:"151p3v"}],["path",{d:"M17 7a2 2 0 0 1 0 4H7a2 2 0 0 1 0-4",key:"1sdaij"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kx=R("ImageDownIcon",[["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10.8",key:"sqts6f"}],["path",{d:"m21 15-3.1-3.1a2 2 0 0 0-2.814.014L6 21",key:"1h47z9"}],["path",{d:"m14 19.5 3 3v-6",key:"1x9jmo"}],["path",{d:"m17 22.5 3-3",key:"xzuz0n"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yx=R("ImageMinusIcon",[["path",{d:"M21 9v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7",key:"m87ecr"}],["line",{x1:"16",x2:"22",y1:"5",y2:"5",key:"ez7e4s"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xx=R("ImageOffIcon",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M10.41 10.41a2 2 0 1 1-2.83-2.83",key:"1bzlo9"}],["line",{x1:"13.5",x2:"6",y1:"13.5",y2:"21",key:"1q0aeu"}],["line",{x1:"18",x2:"21",y1:"12",y2:"15",key:"5mozeu"}],["path",{d:"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59",key:"mmje98"}],["path",{d:"M21 15V5a2 2 0 0 0-2-2H9",key:"43el77"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qx=R("ImagePlusIcon",[["path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7",key:"31hg93"}],["line",{x1:"16",x2:"22",y1:"5",y2:"5",key:"ez7e4s"}],["line",{x1:"19",x2:"19",y1:"2",y2:"8",key:"1gkr8c"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jx=R("ImageIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e$=R("ImportIcon",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m8 11 4 4 4-4",key:"1dohi6"}],["path",{d:"M8 5H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-4",key:"1ywtjm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t$=R("InboxIcon",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a$=R("IndentIcon",[["polyline",{points:"3 8 7 12 3 16",key:"f3rxhf"}],["line",{x1:"21",x2:"11",y1:"12",y2:"12",key:"1fxxak"}],["line",{x1:"21",x2:"11",y1:"6",y2:"6",key:"asgu94"}],["line",{x1:"21",x2:"11",y1:"18",y2:"18",key:"13dsj7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s$=R("IndianRupeeIcon",[["path",{d:"M6 3h12",key:"ggurg9"}],["path",{d:"M6 8h12",key:"6g4wlu"}],["path",{d:"m6 13 8.5 8",key:"u1kupk"}],["path",{d:"M6 13h3",key:"wdp6ag"}],["path",{d:"M9 13c6.667 0 6.667-10 0-10",key:"1nkvk2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o$=R("InfinityIcon",[["path",{d:"M12 12c-2-2.67-4-4-6-4a4 4 0 1 0 0 8c2 0 4-1.33 6-4Zm0 0c2 2.67 4 4 6 4a4 4 0 0 0 0-8c-2 0-4 1.33-6 4Z",key:"1z0uae"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n$=R("InfoIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l$=R("InspectionPanelIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 7h.01",key:"7u93v4"}],["path",{d:"M17 7h.01",key:"14a9sn"}],["path",{d:"M7 17h.01",key:"19xn7k"}],["path",{d:"M17 17h.01",key:"1sd3ek"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r$=R("InstagramIcon",[["rect",{width:"20",height:"20",x:"2",y:"2",rx:"5",ry:"5",key:"2e1cvw"}],["path",{d:"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z",key:"9exkf1"}],["line",{x1:"17.5",x2:"17.51",y1:"6.5",y2:"6.5",key:"r4j83e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i$=R("ItalicIcon",[["line",{x1:"19",x2:"10",y1:"4",y2:"4",key:"15jd3p"}],["line",{x1:"14",x2:"5",y1:"20",y2:"20",key:"bu0au3"}],["line",{x1:"15",x2:"9",y1:"4",y2:"20",key:"uljnxc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d$=R("IterationCcwIcon",[["path",{d:"M20 10c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8h8",key:"4znkd0"}],["polyline",{points:"16 14 20 18 16 22",key:"11njsm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c$=R("IterationCwIcon",[["path",{d:"M4 10c0-4.4 3.6-8 8-8s8 3.6 8 8-3.6 8-8 8H4",key:"tuf4su"}],["polyline",{points:"8 22 4 18 8 14",key:"evkj9s"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u$=R("JapaneseYenIcon",[["path",{d:"M12 9.5V21m0-11.5L6 3m6 6.5L18 3",key:"2ej80x"}],["path",{d:"M6 15h12",key:"1hwgt5"}],["path",{d:"M6 11h12",key:"wf4gp6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p$=R("JoystickIcon",[["path",{d:"M21 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-2Z",key:"jg2n2t"}],["path",{d:"M6 15v-2",key:"gd6mvg"}],["path",{d:"M12 15V9",key:"8c7uyn"}],["circle",{cx:"12",cy:"6",r:"3",key:"1gm2ql"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vd=R("KanbanSquareDashedIcon",[["path",{d:"M8 7v7",key:"1x2jlm"}],["path",{d:"M12 7v4",key:"xawao1"}],["path",{d:"M16 7v9",key:"1hp2iy"}],["path",{d:"M5 3a2 2 0 0 0-2 2",key:"y57alp"}],["path",{d:"M9 3h1",key:"1yesri"}],["path",{d:"M14 3h1",key:"1ec4yj"}],["path",{d:"M19 3a2 2 0 0 1 2 2",key:"18rm91"}],["path",{d:"M21 9v1",key:"mxsmne"}],["path",{d:"M21 14v1",key:"169vum"}],["path",{d:"M21 19a2 2 0 0 1-2 2",key:"1j7049"}],["path",{d:"M14 21h1",key:"v9vybs"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M5 21a2 2 0 0 1-2-2",key:"sbafld"}],["path",{d:"M3 14v1",key:"vnatye"}],["path",{d:"M3 9v1",key:"1r0deq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hd=R("KanbanSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 7v7",key:"1x2jlm"}],["path",{d:"M12 7v4",key:"xawao1"}],["path",{d:"M16 7v9",key:"1hp2iy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _$=R("KanbanIcon",[["path",{d:"M6 5v11",key:"mdvv1e"}],["path",{d:"M12 5v6",key:"14ar3b"}],["path",{d:"M18 5v14",key:"7ji314"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m$=R("KeyRoundIcon",[["path",{d:"M2 18v3c0 .6.4 1 1 1h4v-3h3v-3h2l1.4-1.4a6.5 6.5 0 1 0-4-4Z",key:"167ctg"}],["circle",{cx:"16.5",cy:"7.5",r:".5",key:"1kog09"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v$=R("KeySquareIcon",[["path",{d:"M12.4 2.7c.9-.9 2.5-.9 3.4 0l5.5 5.5c.9.9.9 2.5 0 3.4l-3.7 3.7c-.9.9-2.5.9-3.4 0L8.7 9.8c-.9-.9-.9-2.5 0-3.4Z",key:"9li5bk"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M9.4 10.6 2 18v3c0 .6.4 1 1 1h4v-3h3v-3h2l1.4-1.4",key:"1ym3zm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h$=R("KeyIcon",[["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["path",{d:"m15.5 7.5 3 3L22 7l-3-3",key:"1rn1fs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f$=R("KeyboardMusicIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"M6 8h4",key:"utf9t1"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"M6 12v4",key:"dy92yo"}],["path",{d:"M10 12v4",key:"1fxnav"}],["path",{d:"M14 12v4",key:"1hft58"}],["path",{d:"M18 12v4",key:"tjjnbz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g$=R("KeyboardIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",ry:"2",key:"15u882"}],["path",{d:"M6 8h.001",key:"1ej0i3"}],["path",{d:"M10 8h.001",key:"1x2st2"}],["path",{d:"M14 8h.001",key:"1vkmyp"}],["path",{d:"M18 8h.001",key:"kfsenl"}],["path",{d:"M8 12h.001",key:"1sjpby"}],["path",{d:"M12 12h.001",key:"al75ts"}],["path",{d:"M16 12h.001",key:"931bgk"}],["path",{d:"M7 16h10",key:"wp8him"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y$=R("LampCeilingIcon",[["path",{d:"M12 2v5",key:"nd4vlx"}],["path",{d:"M6 7h12l4 9H2l4-9Z",key:"123d64"}],["path",{d:"M9.17 16a3 3 0 1 0 5.66 0",key:"1061mw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b$=R("LampDeskIcon",[["path",{d:"m14 5-3 3 2 7 8-8-7-2Z",key:"1b0msb"}],["path",{d:"m14 5-3 3-3-3 3-3 3 3Z",key:"1uemms"}],["path",{d:"M9.5 6.5 4 12l3 6",key:"1bx08v"}],["path",{d:"M3 22v-2c0-1.1.9-2 2-2h4a2 2 0 0 1 2 2v2H3Z",key:"wap775"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w$=R("LampFloorIcon",[["path",{d:"M9 2h6l3 7H6l3-7Z",key:"wcx6mj"}],["path",{d:"M12 9v13",key:"3n1su1"}],["path",{d:"M9 22h6",key:"1rlq3v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k$=R("LampWallDownIcon",[["path",{d:"M11 13h6l3 7H8l3-7Z",key:"9n3qlo"}],["path",{d:"M14 13V8a2 2 0 0 0-2-2H8",key:"1hu4hb"}],["path",{d:"M4 9h2a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H4v6Z",key:"s053bc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x$=R("LampWallUpIcon",[["path",{d:"M11 4h6l3 7H8l3-7Z",key:"11x1ee"}],["path",{d:"M14 11v5a2 2 0 0 1-2 2H8",key:"eutp5o"}],["path",{d:"M4 15h2a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H4v-6Z",key:"1iuthr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $$=R("LampIcon",[["path",{d:"M8 2h8l4 10H4L8 2Z",key:"9dma5w"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"M8 22v-2c0-1.1.9-2 2-2h4a2 2 0 0 1 2 2v2H8Z",key:"mwf4oh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C$=R("LandPlotIcon",[["path",{d:"m12 8 6-3-6-3v10",key:"mvpnpy"}],["path",{d:"m8 11.99-5.5 3.14a1 1 0 0 0 0 1.74l8.5 4.86a2 2 0 0 0 2 0l8.5-4.86a1 1 0 0 0 0-1.74L16 12",key:"ek95tt"}],["path",{d:"m6.49 12.85 11.02 6.3",key:"1kt42w"}],["path",{d:"M17.51 12.85 6.5 19.15",key:"v55bdg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S$=R("LandmarkIcon",[["line",{x1:"3",x2:"21",y1:"22",y2:"22",key:"j8o0r"}],["line",{x1:"6",x2:"6",y1:"18",y2:"11",key:"10tf0k"}],["line",{x1:"10",x2:"10",y1:"18",y2:"11",key:"54lgf6"}],["line",{x1:"14",x2:"14",y1:"18",y2:"11",key:"380y"}],["line",{x1:"18",x2:"18",y1:"18",y2:"11",key:"1kevvc"}],["polygon",{points:"12 2 20 7 4 7",key:"jkujk7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E$=R("LanguagesIcon",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A$=R("Laptop2Icon",[["rect",{width:"18",height:"12",x:"3",y:"4",rx:"2",ry:"2",key:"1qhy41"}],["line",{x1:"2",x2:"22",y1:"20",y2:"20",key:"ni3hll"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L$=R("LaptopIcon",[["path",{d:"M20 16V7a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v9m16 0H4m16 0 1.28 2.55a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45L4 16",key:"tarvll"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I$=R("LassoSelectIcon",[["path",{d:"M7 22a5 5 0 0 1-2-4",key:"umushi"}],["path",{d:"M7 16.93c.96.43 1.96.74 2.99.91",key:"ybbtv3"}],["path",{d:"M3.34 14A6.8 6.8 0 0 1 2 10c0-4.42 4.48-8 10-8s10 3.58 10 8a7.19 7.19 0 0 1-.33 2",key:"gt5e1w"}],["path",{d:"M5 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z",key:"bq3ynw"}],["path",{d:"M14.33 22h-.09a.35.35 0 0 1-.24-.32v-10a.34.34 0 0 1 .33-.34c.08 0 .15.03.21.08l7.34 6a.33.33 0 0 1-.21.59h-4.49l-2.57 3.85a.35.35 0 0 1-.28.14v0z",key:"1bawls"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V$=R("LassoIcon",[["path",{d:"M7 22a5 5 0 0 1-2-4",key:"umushi"}],["path",{d:"M3.3 14A6.8 6.8 0 0 1 2 10c0-4.4 4.5-8 10-8s10 3.6 10 8-4.5 8-10 8a12 12 0 0 1-5-1",key:"146dds"}],["path",{d:"M5 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z",key:"bq3ynw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M$=R("LaughIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z",key:"b2q4dd"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T$=R("Layers2Icon",[["path",{d:"m16.02 12 5.48 3.13a1 1 0 0 1 0 1.74L13 21.74a2 2 0 0 1-2 0l-8.5-4.87a1 1 0 0 1 0-1.74L7.98 12",key:"1cuww1"}],["path",{d:"M13 13.74a2 2 0 0 1-2 0L2.5 8.87a1 1 0 0 1 0-1.74L11 2.26a2 2 0 0 1 2 0l8.5 4.87a1 1 0 0 1 0 1.74Z",key:"pdlvxu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D$=R("Layers3Icon",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m6.08 9.5-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59",key:"1e5n1m"}],["path",{d:"m6.08 14.5-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59",key:"1iwflc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P$=R("LayersIcon",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U$=R("LayoutDashboardIcon",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R$=R("LayoutGridIcon",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O$=R("LayoutListIcon",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}],["path",{d:"M14 4h7",key:"3xa0d5"}],["path",{d:"M14 9h7",key:"1icrd9"}],["path",{d:"M14 15h7",key:"1mj8o2"}],["path",{d:"M14 20h7",key:"11slyb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F$=R("LayoutPanelLeftIcon",[["rect",{width:"7",height:"18",x:"3",y:"3",rx:"1",key:"2obqm"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N$=R("LayoutPanelTopIcon",[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j$=R("LayoutTemplateIcon",[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"9",height:"7",x:"3",y:"14",rx:"1",key:"jqznyg"}],["rect",{width:"5",height:"7",x:"16",y:"14",rx:"1",key:"q5h2i8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H$=R("LeafIcon",[["path",{d:"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",key:"nnexq3"}],["path",{d:"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12",key:"mt58a7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q$=R("LeafyGreenIcon",[["path",{d:"M2 22c1.25-.987 2.27-1.975 3.9-2.2a5.56 5.56 0 0 1 3.8 1.5 4 4 0 0 0 6.187-2.353 3.5 3.5 0 0 0 3.69-5.116A3.5 3.5 0 0 0 20.95 8 3.5 3.5 0 1 0 16 3.05a3.5 3.5 0 0 0-5.831 1.373 3.5 3.5 0 0 0-5.116 3.69 4 4 0 0 0-2.348 6.155C3.499 15.42 4.409 16.712 4.2 18.1 3.926 19.743 3.014 20.732 2 22",key:"1134nt"}],["path",{d:"M2 22 17 7",key:"1q7jp2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z$=R("LibraryBigIcon",[["rect",{width:"8",height:"18",x:"3",y:"3",rx:"1",key:"oynpb5"}],["path",{d:"M7 3v18",key:"bbkbws"}],["path",{d:"M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z",key:"1qboyk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B$=R("LibrarySquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 7v10",key:"d5nglc"}],["path",{d:"M11 7v10",key:"pptsnr"}],["path",{d:"m15 7 2 10",key:"1m7qm5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G$=R("LibraryIcon",[["path",{d:"m16 6 4 14",key:"ji33uf"}],["path",{d:"M12 6v14",key:"1n7gus"}],["path",{d:"M8 8v12",key:"1gg7y9"}],["path",{d:"M4 4v16",key:"6qkkli"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W$=R("LifeBuoyIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z$=R("LigatureIcon",[["path",{d:"M8 20V8c0-2.2 1.8-4 4-4 1.5 0 2.8.8 3.5 2",key:"1rtphz"}],["path",{d:"M6 12h4",key:"a4o3ry"}],["path",{d:"M14 12h2v8",key:"c1fccl"}],["path",{d:"M6 20h4",key:"1i6q5t"}],["path",{d:"M14 20h4",key:"lzx1xo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K$=R("LightbulbOffIcon",[["path",{d:"M16.8 11.2c.8-.9 1.2-2 1.2-3.2a6 6 0 0 0-9.3-5",key:"1fkcox"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M6.3 6.3a4.67 4.67 0 0 0 1.2 5.2c.7.7 1.3 1.5 1.5 2.5",key:"10m8kw"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y$=R("LightbulbIcon",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X$=R("LineChartIcon",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q$=R("Link2OffIcon",[["path",{d:"M9 17H7A5 5 0 0 1 7 7",key:"10o201"}],["path",{d:"M15 7h2a5 5 0 0 1 4 8",key:"1d3206"}],["line",{x1:"8",x2:"12",y1:"12",y2:"12",key:"rvw6j4"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J$=R("Link2Icon",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e4=R("LinkIcon",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t4=R("LinkedinIcon",[["path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z",key:"c2jq9f"}],["rect",{width:"4",height:"12",x:"2",y:"9",key:"mk3on5"}],["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a4=R("ListChecksIcon",[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s4=R("ListEndIcon",[["path",{d:"M16 12H3",key:"1a2rj7"}],["path",{d:"M16 6H3",key:"1wxfjs"}],["path",{d:"M10 18H3",key:"13769t"}],["path",{d:"M21 6v10a2 2 0 0 1-2 2h-5",key:"ilrcs8"}],["path",{d:"m16 16-2 2 2 2",key:"kkc6pm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o4=R("ListFilterIcon",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n4=R("ListMinusIcon",[["path",{d:"M11 12H3",key:"51ecnj"}],["path",{d:"M16 6H3",key:"1wxfjs"}],["path",{d:"M16 18H3",key:"12xzn7"}],["path",{d:"M21 12h-6",key:"bt1uis"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l4=R("ListMusicIcon",[["path",{d:"M21 15V6",key:"h1cx4g"}],["path",{d:"M18.5 18a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",key:"8saifv"}],["path",{d:"M12 12H3",key:"18klou"}],["path",{d:"M16 6H3",key:"1wxfjs"}],["path",{d:"M12 18H3",key:"11ftsu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r4=R("ListOrderedIcon",[["line",{x1:"10",x2:"21",y1:"6",y2:"6",key:"76qw6h"}],["line",{x1:"10",x2:"21",y1:"12",y2:"12",key:"16nom4"}],["line",{x1:"10",x2:"21",y1:"18",y2:"18",key:"u3jurt"}],["path",{d:"M4 6h1v4",key:"cnovpq"}],["path",{d:"M4 10h2",key:"16xx2s"}],["path",{d:"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1",key:"m9a95d"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i4=R("ListPlusIcon",[["path",{d:"M11 12H3",key:"51ecnj"}],["path",{d:"M16 6H3",key:"1wxfjs"}],["path",{d:"M16 18H3",key:"12xzn7"}],["path",{d:"M18 9v6",key:"1twb98"}],["path",{d:"M21 12h-6",key:"bt1uis"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d4=R("ListRestartIcon",[["path",{d:"M21 6H3",key:"1jwq7v"}],["path",{d:"M7 12H3",key:"13ou7f"}],["path",{d:"M7 18H3",key:"1sijw9"}],["path",{d:"M12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14",key:"qth677"}],["path",{d:"M11 10v4h4",key:"172dkj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c4=R("ListStartIcon",[["path",{d:"M16 12H3",key:"1a2rj7"}],["path",{d:"M16 18H3",key:"12xzn7"}],["path",{d:"M10 6H3",key:"lf8lx7"}],["path",{d:"M21 18V8a2 2 0 0 0-2-2h-5",key:"1hghli"}],["path",{d:"m16 8-2-2 2-2",key:"160uvd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u4=R("ListTodoIcon",[["rect",{x:"3",y:"5",width:"6",height:"6",rx:"1",key:"1defrl"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p4=R("ListTreeIcon",[["path",{d:"M21 12h-8",key:"1bmf0i"}],["path",{d:"M21 6H8",key:"1pqkrb"}],["path",{d:"M21 18h-8",key:"1tm79t"}],["path",{d:"M3 6v4c0 1.1.9 2 2 2h3",key:"1ywdgy"}],["path",{d:"M3 10v6c0 1.1.9 2 2 2h3",key:"2wc746"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _4=R("ListVideoIcon",[["path",{d:"M12 12H3",key:"18klou"}],["path",{d:"M16 6H3",key:"1wxfjs"}],["path",{d:"M12 18H3",key:"11ftsu"}],["path",{d:"m16 12 5 3-5 3v-6Z",key:"zpskkp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m4=R("ListXIcon",[["path",{d:"M11 12H3",key:"51ecnj"}],["path",{d:"M16 6H3",key:"1wxfjs"}],["path",{d:"M16 18H3",key:"12xzn7"}],["path",{d:"m19 10-4 4",key:"1tz659"}],["path",{d:"m15 10 4 4",key:"1n7nei"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v4=R("ListIcon",[["line",{x1:"8",x2:"21",y1:"6",y2:"6",key:"7ey8pc"}],["line",{x1:"8",x2:"21",y1:"12",y2:"12",key:"rjfblc"}],["line",{x1:"8",x2:"21",y1:"18",y2:"18",key:"c3b1m8"}],["line",{x1:"3",x2:"3.01",y1:"6",y2:"6",key:"1g7gq3"}],["line",{x1:"3",x2:"3.01",y1:"12",y2:"12",key:"1pjlvk"}],["line",{x1:"3",x2:"3.01",y1:"18",y2:"18",key:"28t2mc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h4=R("Loader2Icon",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f4=R("LoaderIcon",[["line",{x1:"12",x2:"12",y1:"2",y2:"6",key:"gza1u7"}],["line",{x1:"12",x2:"12",y1:"18",y2:"22",key:"1qhbu9"}],["line",{x1:"4.93",x2:"7.76",y1:"4.93",y2:"7.76",key:"xae44r"}],["line",{x1:"16.24",x2:"19.07",y1:"16.24",y2:"19.07",key:"bxnmvf"}],["line",{x1:"2",x2:"6",y1:"12",y2:"12",key:"89khin"}],["line",{x1:"18",x2:"22",y1:"12",y2:"12",key:"pb8tfm"}],["line",{x1:"4.93",x2:"7.76",y1:"19.07",y2:"16.24",key:"1uxjnu"}],["line",{x1:"16.24",x2:"19.07",y1:"7.76",y2:"4.93",key:"6duxfx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g4=R("LocateFixedIcon",[["line",{x1:"2",x2:"5",y1:"12",y2:"12",key:"bvdh0s"}],["line",{x1:"19",x2:"22",y1:"12",y2:"12",key:"1tbv5k"}],["line",{x1:"12",x2:"12",y1:"2",y2:"5",key:"11lu5j"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}],["circle",{cx:"12",cy:"12",r:"7",key:"fim9np"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y4=R("LocateOffIcon",[["line",{x1:"2",x2:"5",y1:"12",y2:"12",key:"bvdh0s"}],["line",{x1:"19",x2:"22",y1:"12",y2:"12",key:"1tbv5k"}],["line",{x1:"12",x2:"12",y1:"2",y2:"5",key:"11lu5j"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}],["path",{d:"M7.11 7.11C5.83 8.39 5 10.1 5 12c0 3.87 3.13 7 7 7 1.9 0 3.61-.83 4.89-2.11",key:"1oh7ia"}],["path",{d:"M18.71 13.96c.19-.63.29-1.29.29-1.96 0-3.87-3.13-7-7-7-.67 0-1.33.1-1.96.29",key:"3qdecy"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b4=R("LocateIcon",[["line",{x1:"2",x2:"5",y1:"12",y2:"12",key:"bvdh0s"}],["line",{x1:"19",x2:"22",y1:"12",y2:"12",key:"1tbv5k"}],["line",{x1:"12",x2:"12",y1:"2",y2:"5",key:"11lu5j"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}],["circle",{cx:"12",cy:"12",r:"7",key:"fim9np"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w4=R("LockKeyholeIcon",[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k4=R("LockIcon",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x4=R("LogInIcon",[["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}],["polyline",{points:"10 17 15 12 10 7",key:"1ail0h"}],["line",{x1:"15",x2:"3",y1:"12",y2:"12",key:"v6grx8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $4=R("LogOutIcon",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C4=R("LollipopIcon",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}],["path",{d:"M11 11a2 2 0 0 0 4 0 4 4 0 0 0-8 0 6 6 0 0 0 12 0",key:"107gwy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S4=R("LuggageIcon",[["path",{d:"M6 20h0a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h0",key:"1h5fkc"}],["path",{d:"M8 18V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v14",key:"1l99gc"}],["path",{d:"M10 20h4",key:"ni2waw"}],["circle",{cx:"16",cy:"20",r:"2",key:"1vifvg"}],["circle",{cx:"8",cy:"20",r:"2",key:"ckkr5m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E4=R("MSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 16V8l4 4 4-4v8",key:"141u4e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A4=R("MagnetIcon",[["path",{d:"m6 15-4-4 6.75-6.77a7.79 7.79 0 0 1 11 11L13 22l-4-4 6.39-6.36a2.14 2.14 0 0 0-3-3L6 15",key:"1i3lhw"}],["path",{d:"m5 8 4 4",key:"j6kj7e"}],["path",{d:"m12 15 4 4",key:"lnac28"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L4=R("MailCheckIcon",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8",key:"12jkf8"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I4=R("MailMinusIcon",[["path",{d:"M22 15V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8",key:"fuxbkv"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"M16 19h6",key:"xwg31i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V4=R("MailOpenIcon",[["path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z",key:"1jhwl8"}],["path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10",key:"1qfld7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M4=R("MailPlusIcon",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8",key:"12jkf8"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"M19 16v6",key:"tddt3s"}],["path",{d:"M16 19h6",key:"xwg31i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T4=R("MailQuestionIcon",[["path",{d:"M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5",key:"e61zoh"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"M18 15.28c.2-.4.5-.8.9-1a2.1 2.1 0 0 1 2.6.4c.3.4.5.8.5 1.3 0 1.3-2 2-2 2",key:"7z9rxb"}],["path",{d:"M20 22v.01",key:"12bgn6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D4=R("MailSearchIcon",[["path",{d:"M22 12.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h7.5",key:"w80f2v"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"M18 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6v0Z",key:"mgbru4"}],["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["path",{d:"m22 22-1.5-1.5",key:"1x83k4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P4=R("MailWarningIcon",[["path",{d:"M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5",key:"e61zoh"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"M20 14v4",key:"1hm744"}],["path",{d:"M20 22v.01",key:"12bgn6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U4=R("MailXIcon",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h9",key:"1j9vog"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m17 17 4 4",key:"1b3523"}],["path",{d:"m21 17-4 4",key:"uinynz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R4=R("MailIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O4=R("MailboxIcon",[["path",{d:"M22 17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.5C2 7 4 5 6.5 5H18c2.2 0 4 1.8 4 4v8Z",key:"1lbycx"}],["polyline",{points:"15,9 18,9 18,11",key:"1pm9c0"}],["path",{d:"M6.5 5C9 5 11 7 11 9.5V17a2 2 0 0 1-2 2v0",key:"n6nfvi"}],["line",{x1:"6",x2:"7",y1:"10",y2:"10",key:"1e2scm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F4=R("MailsIcon",[["rect",{width:"16",height:"13",x:"6",y:"4",rx:"2",key:"1drq3f"}],["path",{d:"m22 7-7.1 3.78c-.57.3-1.23.3-1.8 0L6 7",key:"xn252p"}],["path",{d:"M2 8v11c0 1.1.9 2 2 2h14",key:"n13cji"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N4=R("MapPinOffIcon",[["path",{d:"M5.43 5.43A8.06 8.06 0 0 0 4 10c0 6 8 12 8 12a29.94 29.94 0 0 0 5-5",key:"12a8pk"}],["path",{d:"M19.18 13.52A8.66 8.66 0 0 0 20 10a8 8 0 0 0-8-8 7.88 7.88 0 0 0-3.52.82",key:"1r9f6y"}],["path",{d:"M9.13 9.13A2.78 2.78 0 0 0 9 10a3 3 0 0 0 3 3 2.78 2.78 0 0 0 .87-.13",key:"erynq7"}],["path",{d:"M14.9 9.25a3 3 0 0 0-2.15-2.16",key:"1hwwmx"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j4=R("MapPinIcon",[["path",{d:"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z",key:"2oe9fu"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H4=R("MapPinnedIcon",[["path",{d:"M18 8c0 4.5-6 9-6 9s-6-4.5-6-9a6 6 0 0 1 12 0",key:"yrbn30"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["path",{d:"M8.835 14H5a1 1 0 0 0-.9.7l-2 6c-.1.1-.1.2-.1.3 0 .6.4 1 1 1h18c.6 0 1-.4 1-1 0-.1 0-.2-.1-.3l-2-6a1 1 0 0 0-.9-.7h-3.835",key:"112zkj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q4=R("MapIcon",[["polygon",{points:"3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21",key:"ok2ie8"}],["line",{x1:"9",x2:"9",y1:"3",y2:"18",key:"w34qz5"}],["line",{x1:"15",x2:"15",y1:"6",y2:"21",key:"volv9a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z4=R("MartiniIcon",[["path",{d:"M8 22h8",key:"rmew8v"}],["path",{d:"M12 11v11",key:"ur9y6a"}],["path",{d:"m19 3-7 8-7-8Z",key:"1sgpiw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B4=R("Maximize2Icon",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G4=R("MaximizeIcon",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W4=R("MedalIcon",[["path",{d:"M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15",key:"143lza"}],["path",{d:"M11 12 5.12 2.2",key:"qhuxz6"}],["path",{d:"m13 12 5.88-9.8",key:"hbye0f"}],["path",{d:"M8 7h8",key:"i86dvs"}],["circle",{cx:"12",cy:"17",r:"5",key:"qbz8iq"}],["path",{d:"M12 18v-2h-.5",key:"fawc4q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z4=R("MegaphoneOffIcon",[["path",{d:"M9.26 9.26 3 11v3l14.14 3.14",key:"3429n"}],["path",{d:"M21 15.34V6l-7.31 2.03",key:"4o1dh8"}],["path",{d:"M11.6 16.8a3 3 0 1 1-5.8-1.6",key:"1yl0tm"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K4=R("MegaphoneIcon",[["path",{d:"m3 11 18-5v12L3 14v-3z",key:"n962bs"}],["path",{d:"M11.6 16.8a3 3 0 1 1-5.8-1.6",key:"1yl0tm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y4=R("MehIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"8",x2:"16",y1:"15",y2:"15",key:"1xb1d9"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X4=R("MemoryStickIcon",[["path",{d:"M6 19v-3",key:"1nvgqn"}],["path",{d:"M10 19v-3",key:"iu8nkm"}],["path",{d:"M14 19v-3",key:"kcehxu"}],["path",{d:"M18 19v-3",key:"1vh91z"}],["path",{d:"M8 11V9",key:"63erz4"}],["path",{d:"M16 11V9",key:"fru6f3"}],["path",{d:"M12 11V9",key:"ha00sb"}],["path",{d:"M2 15h20",key:"16ne18"}],["path",{d:"M2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v1.1a2 2 0 0 0 0 3.837V17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-5.1a2 2 0 0 0 0-3.837Z",key:"lhddv3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q4=R("MenuSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 8h10",key:"1jw688"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M7 16h10",key:"wp8him"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J4=R("MenuIcon",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e3=R("MergeIcon",[["path",{d:"m8 6 4-4 4 4",key:"ybng9g"}],["path",{d:"M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22",key:"1hyw0i"}],["path",{d:"m20 22-5-5",key:"1m27yz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t3=R("MessageCircleCodeIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"m10 10-2 2 2 2",key:"p6et6i"}],["path",{d:"m14 10 2 2-2 2",key:"1kkmpt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a3=R("MessageCircleDashedIcon",[["path",{d:"M13.5 3.1c-.5 0-1-.1-1.5-.1s-1 .1-1.5.1",key:"16ll65"}],["path",{d:"M19.3 6.8a10.45 10.45 0 0 0-2.1-2.1",key:"1nq77a"}],["path",{d:"M20.9 13.5c.1-.5.1-1 .1-1.5s-.1-1-.1-1.5",key:"1sf7wn"}],["path",{d:"M17.2 19.3a10.45 10.45 0 0 0 2.1-2.1",key:"x1hs5g"}],["path",{d:"M10.5 20.9c.5.1 1 .1 1.5.1s1-.1 1.5-.1",key:"19m18z"}],["path",{d:"M3.5 17.5 2 22l4.5-1.5",key:"1f36qi"}],["path",{d:"M3.1 10.5c0 .5-.1 1-.1 1.5s.1 1 .1 1.5",key:"1vz3ju"}],["path",{d:"M6.8 4.7a10.45 10.45 0 0 0-2.1 2.1",key:"19f9do"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s3=R("MessageCircleHeartIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"M15.8 9.2a2.5 2.5 0 0 0-3.5 0l-.3.4-.35-.3a2.42 2.42 0 1 0-3.2 3.6l3.6 3.5 3.6-3.5c1.2-1.2 1.1-2.7.2-3.7",key:"43lnbm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o3=R("MessageCircleMoreIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"M8 12h.01",key:"czm47f"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M16 12h.01",key:"1l6xoz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n3=R("MessageCircleOffIcon",[["path",{d:"M20.5 14.9A9 9 0 0 0 9.1 3.5",key:"1iebmn"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5.6 5.6C3 8.3 2.2 12.5 4 16l-2 6 6-2c3.4 1.8 7.6 1.1 10.3-1.7",key:"1ov8ce"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l3=R("MessageCirclePlusIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r3=R("MessageCircleQuestionIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i3=R("MessageCircleReplyIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"m10 15-3-3 3-3",key:"1pgupc"}],["path",{d:"M7 12h7a2 2 0 0 1 2 2v1",key:"1gheu4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d3=R("MessageCircleWarningIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c3=R("MessageCircleXIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u3=R("MessageCircleIcon",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p3=R("MessageSquareCodeIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"m10 8-2 2 2 2",key:"19bv1o"}],["path",{d:"m14 8 2 2-2 2",key:"1whylv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _3=R("MessageSquareDashedIcon",[["path",{d:"M3 6V5c0-1.1.9-2 2-2h2",key:"9usibi"}],["path",{d:"M11 3h3",key:"1c3ji7"}],["path",{d:"M18 3h1c1.1 0 2 .9 2 2",key:"19esxn"}],["path",{d:"M21 9v2",key:"p14lih"}],["path",{d:"M21 15c0 1.1-.9 2-2 2h-1",key:"1fo1j8"}],["path",{d:"M14 17h-3",key:"1w4p2m"}],["path",{d:"m7 17-4 4v-5",key:"ph9x1h"}],["path",{d:"M3 12v-2",key:"856n1q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m3=R("MessageSquareDiffIcon",[["path",{d:"m5 19-2 2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2",key:"1xuzuj"}],["path",{d:"M9 10h6",key:"9gxzsh"}],["path",{d:"M12 7v6",key:"lw1j43"}],["path",{d:"M9 17h6",key:"r8uit2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v3=R("MessageSquareDotIcon",[["path",{d:"M11.7 3H5a2 2 0 0 0-2 2v16l4-4h12a2 2 0 0 0 2-2v-2.7",key:"uodpkb"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h3=R("MessageSquareHeartIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M14.8 7.5a1.84 1.84 0 0 0-2.6 0l-.2.3-.3-.3a1.84 1.84 0 1 0-2.4 2.8L12 13l2.7-2.7c.9-.9.8-2.1.1-2.8",key:"1blaws"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f3=R("MessageSquareMoreIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M16 10h.01",key:"1m94wz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g3=R("MessageSquareOffIcon",[["path",{d:"M21 15V5a2 2 0 0 0-2-2H9",key:"43el77"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M3.6 3.6c-.4.3-.6.8-.6 1.4v16l4-4h10",key:"pwpm4a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y3=R("MessageSquarePlusIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M12 7v6",key:"lw1j43"}],["path",{d:"M9 10h6",key:"9gxzsh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b3=R("MessageSquareQuoteIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M8 12a2 2 0 0 0 2-2V8H8",key:"1jfesj"}],["path",{d:"M14 12a2 2 0 0 0 2-2V8h-2",key:"1dq9mh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w3=R("MessageSquareReplyIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"m10 7-3 3 3 3",key:"1eugdv"}],["path",{d:"M17 13v-1a2 2 0 0 0-2-2H7",key:"ernfh3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k3=R("MessageSquareShareIcon",[["path",{d:"M21 12v3a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h7",key:"tqtdkg"}],["path",{d:"M16 3h5v5",key:"1806ms"}],["path",{d:"m16 8 5-5",key:"15mbrl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x3=R("MessageSquareTextIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M13 8H7",key:"14i4kc"}],["path",{d:"M17 12H7",key:"16if0g"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $3=R("MessageSquareWarningIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M12 7v2",key:"stiyo7"}],["path",{d:"M12 13h.01",key:"y0uutt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C3=R("MessageSquareXIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"m14.5 7.5-5 5",key:"3lb6iw"}],["path",{d:"m9.5 7.5 5 5",key:"ko136h"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S3=R("MessageSquareIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E3=R("MessagesSquareIcon",[["path",{d:"M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v5Z",key:"16vlm8"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1",key:"1cx29u"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A3=R("Mic2Icon",[["path",{d:"m12 8-9.04 9.06a2.82 2.82 0 1 0 3.98 3.98L16 12",key:"zoua8r"}],["circle",{cx:"17",cy:"7",r:"5",key:"1fomce"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L3=R("MicOffIcon",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2",key:"80xlxr"}],["path",{d:"M5 10v2a7 7 0 0 0 12 5",key:"p2k8kg"}],["path",{d:"M15 9.34V5a3 3 0 0 0-5.68-1.33",key:"1gzdoj"}],["path",{d:"M9 9v3a3 3 0 0 0 5.12 2.12",key:"r2i35w"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I3=R("MicIcon",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V3=R("MicroscopeIcon",[["path",{d:"M6 18h8",key:"1borvv"}],["path",{d:"M3 22h18",key:"8prr45"}],["path",{d:"M14 22a7 7 0 1 0 0-14h-1",key:"1jwaiy"}],["path",{d:"M9 14h2",key:"197e7h"}],["path",{d:"M9 12a2 2 0 0 1-2-2V6h6v4a2 2 0 0 1-2 2Z",key:"1bmzmy"}],["path",{d:"M12 6V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3",key:"1drr47"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M3=R("MicrowaveIcon",[["rect",{width:"20",height:"15",x:"2",y:"4",rx:"2",key:"2no95f"}],["rect",{width:"8",height:"7",x:"6",y:"8",rx:"1",key:"zh9wx"}],["path",{d:"M18 8v7",key:"o5zi4n"}],["path",{d:"M6 19v2",key:"1loha6"}],["path",{d:"M18 19v2",key:"1dawf0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T3=R("MilestoneIcon",[["path",{d:"M18 6H5a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h13l4-3.5L18 6Z",key:"1mp5s7"}],["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M12 3v3",key:"1n5kay"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D3=R("MilkOffIcon",[["path",{d:"M8 2h8",key:"1ssgc1"}],["path",{d:"M9 2v1.343M15 2v2.789a4 4 0 0 0 .672 2.219l.656.984a4 4 0 0 1 .672 2.22v1.131M7.8 7.8l-.128.192A4 4 0 0 0 7 10.212V20a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-3",key:"y0ejgx"}],["path",{d:"M7 15a6.47 6.47 0 0 1 5 0 6.472 6.472 0 0 0 3.435.435",key:"iaxqsy"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P3=R("MilkIcon",[["path",{d:"M8 2h8",key:"1ssgc1"}],["path",{d:"M9 2v2.789a4 4 0 0 1-.672 2.219l-.656.984A4 4 0 0 0 7 10.212V20a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-9.789a4 4 0 0 0-.672-2.219l-.656-.984A4 4 0 0 1 15 4.788V2",key:"qtp12x"}],["path",{d:"M7 15a6.472 6.472 0 0 1 5 0 6.47 6.47 0 0 0 5 0",key:"ygeh44"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U3=R("Minimize2Icon",[["polyline",{points:"4 14 10 14 10 20",key:"11kfnr"}],["polyline",{points:"20 10 14 10 14 4",key:"rlmsce"}],["line",{x1:"14",x2:"21",y1:"10",y2:"3",key:"o5lafz"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R3=R("MinimizeIcon",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O3=R("MinusCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F3=R("MinusSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N3=R("MinusIcon",[["path",{d:"M5 12h14",key:"1ays0h"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j3=R("MonitorCheckIcon",[["path",{d:"m9 10 2 2 4-4",key:"1gnqz4"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H3=R("MonitorDotIcon",[["circle",{cx:"19",cy:"6",r:"3",key:"108a5v"}],["path",{d:"M22 12v3a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9",key:"1fet9y"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q3=R("MonitorDownIcon",[["path",{d:"M12 13V7",key:"h0r20n"}],["path",{d:"m15 10-3 3-3-3",key:"lzhmyn"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z3=R("MonitorOffIcon",[["path",{d:"M17 17H4a2 2 0 0 1-2-2V5c0-1.5 1-2 1-2",key:"k0q8oc"}],["path",{d:"M22 15V5a2 2 0 0 0-2-2H9",key:"cp1ac0"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B3=R("MonitorPauseIcon",[["path",{d:"M10 13V7",key:"1u13u9"}],["path",{d:"M14 13V7",key:"1vj9om"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G3=R("MonitorPlayIcon",[["path",{d:"m10 7 5 3-5 3Z",key:"29ljg6"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W3=R("MonitorSmartphoneIcon",[["path",{d:"M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8",key:"10dyio"}],["path",{d:"M10 19v-3.96 3.15",key:"1irgej"}],["path",{d:"M7 19h5",key:"qswx4l"}],["rect",{width:"6",height:"10",x:"16",y:"12",rx:"2",key:"1egngj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z3=R("MonitorSpeakerIcon",[["path",{d:"M5.5 20H8",key:"1k40s5"}],["path",{d:"M17 9h.01",key:"1j24nn"}],["rect",{width:"10",height:"16",x:"12",y:"4",rx:"2",key:"ixliua"}],["path",{d:"M8 6H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h4",key:"1mp6e1"}],["circle",{cx:"17",cy:"15",r:"1",key:"tqvash"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K3=R("MonitorStopIcon",[["rect",{x:"9",y:"7",width:"6",height:"6",key:"4xvc6r"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y3=R("MonitorUpIcon",[["path",{d:"m9 10 3-3 3 3",key:"11gsxs"}],["path",{d:"M12 13V7",key:"h0r20n"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X3=R("MonitorXIcon",[["path",{d:"m14.5 12.5-5-5",key:"1jahn5"}],["path",{d:"m9.5 12.5 5-5",key:"1k2t7b"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q3=R("MonitorIcon",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J3=R("MoonStarIcon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}],["path",{d:"M19 3v4",key:"vgv24u"}],["path",{d:"M21 5h-4",key:"1wcg1f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e8=R("MoonIcon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t8=R("MoreHorizontalIcon",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a8=R("MoreVerticalIcon",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s8=R("MountainSnowIcon",[["path",{d:"m8 3 4 8 5-5 5 15H2L8 3z",key:"otkl63"}],["path",{d:"M4.14 15.08c2.62-1.57 5.24-1.43 7.86.42 2.74 1.94 5.49 2 8.23.19",key:"1pvmmp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o8=R("MountainIcon",[["path",{d:"m8 3 4 8 5-5 5 15H2L8 3z",key:"otkl63"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n8=R("MousePointer2Icon",[["path",{d:"m4 4 7.07 17 2.51-7.39L21 11.07z",key:"1vqm48"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l8=R("MousePointerClickIcon",[["path",{d:"m9 9 5 12 1.8-5.2L21 14Z",key:"1b76lo"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r8=R("MousePointerSquareDashedIcon",[["path",{d:"M5 3a2 2 0 0 0-2 2",key:"y57alp"}],["path",{d:"M19 3a2 2 0 0 1 2 2",key:"18rm91"}],["path",{d:"m12 12 4 10 1.7-4.3L22 16Z",key:"64ilsv"}],["path",{d:"M5 21a2 2 0 0 1-2-2",key:"sbafld"}],["path",{d:"M9 3h1",key:"1yesri"}],["path",{d:"M9 21h2",key:"1qve2z"}],["path",{d:"M14 3h1",key:"1ec4yj"}],["path",{d:"M3 9v1",key:"1r0deq"}],["path",{d:"M21 9v2",key:"p14lih"}],["path",{d:"M3 14v1",key:"vnatye"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fd=R("MousePointerSquareIcon",[["path",{d:"M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6",key:"14rsvq"}],["path",{d:"m12 12 4 10 1.7-4.3L22 16Z",key:"64ilsv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i8=R("MousePointerIcon",[["path",{d:"m3 3 7.07 16.97 2.51-7.39 7.39-2.51L3 3z",key:"y2ucgo"}],["path",{d:"m13 13 6 6",key:"1nhxnf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d8=R("MouseIcon",[["rect",{x:"5",y:"2",width:"14",height:"20",rx:"7",key:"11ol66"}],["path",{d:"M12 6v4",key:"16clxf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gd=R("Move3dIcon",[["path",{d:"M5 3v16h16",key:"1mqmf9"}],["path",{d:"m5 19 6-6",key:"jh6hbb"}],["path",{d:"m2 6 3-3 3 3",key:"tkyvxa"}],["path",{d:"m18 16 3 3-3 3",key:"1d4glt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c8=R("MoveDiagonal2Icon",[["polyline",{points:"5 11 5 5 11 5",key:"ncfzxk"}],["polyline",{points:"19 13 19 19 13 19",key:"1mk7hk"}],["line",{x1:"5",x2:"19",y1:"5",y2:"19",key:"mcyte3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u8=R("MoveDiagonalIcon",[["polyline",{points:"13 5 19 5 19 11",key:"11219e"}],["polyline",{points:"11 19 5 19 5 13",key:"sfq3wq"}],["line",{x1:"19",x2:"5",y1:"5",y2:"19",key:"1x9vlm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p8=R("MoveDownLeftIcon",[["path",{d:"M11 19H5V13",key:"1akmht"}],["path",{d:"M19 5L5 19",key:"72u4yj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _8=R("MoveDownRightIcon",[["path",{d:"M19 13V19H13",key:"10vkzq"}],["path",{d:"M5 5L19 19",key:"5zm2fv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m8=R("MoveDownIcon",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v8=R("MoveHorizontalIcon",[["polyline",{points:"18 8 22 12 18 16",key:"1hqrds"}],["polyline",{points:"6 8 2 12 6 16",key:"f0ernq"}],["line",{x1:"2",x2:"22",y1:"12",y2:"12",key:"1dnqot"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h8=R("MoveLeftIcon",[["path",{d:"M6 8L2 12L6 16",key:"kyvwex"}],["path",{d:"M2 12H22",key:"1m8cig"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f8=R("MoveRightIcon",[["path",{d:"M18 8L22 12L18 16",key:"1r0oui"}],["path",{d:"M2 12H22",key:"1m8cig"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g8=R("MoveUpLeftIcon",[["path",{d:"M5 11V5H11",key:"3q78g9"}],["path",{d:"M5 5L19 19",key:"5zm2fv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y8=R("MoveUpRightIcon",[["path",{d:"M13 5H19V11",key:"1n1gyv"}],["path",{d:"M19 5L5 19",key:"72u4yj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b8=R("MoveUpIcon",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w8=R("MoveVerticalIcon",[["polyline",{points:"8 18 12 22 16 18",key:"1uutw3"}],["polyline",{points:"8 6 12 2 16 6",key:"d60sxy"}],["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k8=R("MoveIcon",[["polyline",{points:"5 9 2 12 5 15",key:"1r5uj5"}],["polyline",{points:"9 5 12 2 15 5",key:"5v383o"}],["polyline",{points:"15 19 12 22 9 19",key:"g7qi8m"}],["polyline",{points:"19 9 22 12 19 15",key:"tpp73q"}],["line",{x1:"2",x2:"22",y1:"12",y2:"12",key:"1dnqot"}],["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x8=R("Music2Icon",[["circle",{cx:"8",cy:"18",r:"4",key:"1fc0mg"}],["path",{d:"M12 18V2l7 4",key:"g04rme"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $8=R("Music3Icon",[["circle",{cx:"12",cy:"18",r:"4",key:"m3r9ws"}],["path",{d:"M16 18V2",key:"40x2m5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C8=R("Music4Icon",[["path",{d:"M9 18V5l12-2v13",key:"1jmyc2"}],["path",{d:"m9 9 12-2",key:"1e64n2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["circle",{cx:"18",cy:"16",r:"3",key:"1hluhg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S8=R("MusicIcon",[["path",{d:"M9 18V5l12-2v13",key:"1jmyc2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["circle",{cx:"18",cy:"16",r:"3",key:"1hluhg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E8=R("Navigation2OffIcon",[["path",{d:"M9.31 9.31 5 21l7-4 7 4-1.17-3.17",key:"qoq2o2"}],["path",{d:"M14.53 8.88 12 2l-1.17 3.17",key:"k3sjzy"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A8=R("Navigation2Icon",[["polygon",{points:"12 2 19 21 12 17 5 21 12 2",key:"x8c0qg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L8=R("NavigationOffIcon",[["path",{d:"M8.43 8.43 3 11l8 2 2 8 2.57-5.43",key:"1vdtb7"}],["path",{d:"M17.39 11.73 22 2l-9.73 4.61",key:"tya3r6"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I8=R("NavigationIcon",[["polygon",{points:"3 11 22 2 13 21 11 13 3 11",key:"1ltx0t"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V8=R("NetworkIcon",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M8=R("NewspaperIcon",[["path",{d:"M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-2 2Zm0 0a2 2 0 0 1-2-2v-9c0-1.1.9-2 2-2h2",key:"7pis2x"}],["path",{d:"M18 14h-8",key:"sponae"}],["path",{d:"M15 18h-5",key:"95g1m2"}],["path",{d:"M10 6h8v4h-8V6Z",key:"smlsk5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T8=R("NfcIcon",[["path",{d:"M6 8.32a7.43 7.43 0 0 1 0 7.36",key:"9iaqei"}],["path",{d:"M9.46 6.21a11.76 11.76 0 0 1 0 11.58",key:"1yha7l"}],["path",{d:"M12.91 4.1a15.91 15.91 0 0 1 .01 15.8",key:"4iu2gk"}],["path",{d:"M16.37 2a20.16 20.16 0 0 1 0 20",key:"sap9u2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D8=R("NutOffIcon",[["path",{d:"M12 4V2",key:"1k5q1u"}],["path",{d:"M5 10v4a7.004 7.004 0 0 0 5.277 6.787c.412.104.802.292 1.102.592L12 22l.621-.621c.3-.3.69-.488 1.102-.592a7.01 7.01 0 0 0 4.125-2.939",key:"1xcvy9"}],["path",{d:"M19 10v3.343",key:"163tfc"}],["path",{d:"M12 12c-1.349-.573-1.905-1.005-2.5-2-.546.902-1.048 1.353-2.5 2-1.018-.644-1.46-1.08-2-2-1.028.71-1.69.918-3 1 1.081-1.048 1.757-2.03 2-3 .194-.776.84-1.551 1.79-2.21m11.654 5.997c.887-.457 1.28-.891 1.556-1.787 1.032.916 1.683 1.157 3 1-1.297-1.036-1.758-2.03-2-3-.5-2-4-4-8-4-.74 0-1.461.068-2.15.192",key:"17914v"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P8=R("NutIcon",[["path",{d:"M12 4V2",key:"1k5q1u"}],["path",{d:"M5 10v4a7.004 7.004 0 0 0 5.277 6.787c.412.104.802.292 1.102.592L12 22l.621-.621c.3-.3.69-.488 1.102-.592A7.003 7.003 0 0 0 19 14v-4",key:"1tgyif"}],["path",{d:"M12 4C8 4 4.5 6 4 8c-.243.97-.919 1.952-2 3 1.31-.082 1.972-.29 3-1 .54.92.982 1.356 2 2 1.452-.647 1.954-1.098 2.5-2 .595.995 1.151 1.427 2.5 2 1.31-.621 1.862-1.058 2.5-2 .629.977 1.162 1.423 2.5 2 1.209-.548 1.68-.967 2-2 1.032.916 1.683 1.157 3 1-1.297-1.036-1.758-2.03-2-3-.5-2-4-4-8-4Z",key:"tnsqj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U8=R("OctagonIcon",[["polygon",{points:"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2",key:"h1p8hx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R8=R("OptionIcon",[["path",{d:"M3 3h6l6 18h6",key:"ph9rgk"}],["path",{d:"M14 3h7",key:"16f0ms"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O8=R("OrbitIcon",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["circle",{cx:"19",cy:"5",r:"2",key:"mhkx31"}],["circle",{cx:"5",cy:"19",r:"2",key:"v8kfzx"}],["path",{d:"M10.4 21.9a10 10 0 0 0 9.941-15.416",key:"eohfx2"}],["path",{d:"M13.5 2.1a10 10 0 0 0-9.841 15.416",key:"19pvbm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F8=R("OutdentIcon",[["polyline",{points:"7 8 3 12 7 16",key:"2j60jr"}],["line",{x1:"21",x2:"11",y1:"12",y2:"12",key:"1fxxak"}],["line",{x1:"21",x2:"11",y1:"6",y2:"6",key:"asgu94"}],["line",{x1:"21",x2:"11",y1:"18",y2:"18",key:"13dsj7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N8=R("Package2Icon",[["path",{d:"M3 9h18v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9Z",key:"1ront0"}],["path",{d:"m3 9 2.45-4.9A2 2 0 0 1 7.24 3h9.52a2 2 0 0 1 1.8 1.1L21 9",key:"19h2x1"}],["path",{d:"M12 3v6",key:"1holv5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j8=R("PackageCheckIcon",[["path",{d:"m16 16 2 2 4-4",key:"gfu2re"}],["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H8=R("PackageMinusIcon",[["path",{d:"M16 16h6",key:"100bgy"}],["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q8=R("PackageOpenIcon",[["path",{d:"M20.91 8.84 8.56 2.23a1.93 1.93 0 0 0-1.81 0L3.1 4.13a2.12 2.12 0 0 0-.05 3.69l12.22 6.93a2 2 0 0 0 1.94 0L21 12.51a2.12 2.12 0 0 0-.09-3.67Z",key:"1vy178"}],["path",{d:"m3.09 8.84 12.35-6.61a1.93 1.93 0 0 1 1.81 0l3.65 1.9a2.12 2.12 0 0 1 .1 3.69L8.73 14.75a2 2 0 0 1-1.94 0L3 12.51a2.12 2.12 0 0 1 .09-3.67Z",key:"s3bv25"}],["line",{x1:"12",x2:"12",y1:"22",y2:"13",key:"1o4xyi"}],["path",{d:"M20 13.5v3.37a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13.5",key:"1na2nq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z8=R("PackagePlusIcon",[["path",{d:"M16 16h6",key:"100bgy"}],["path",{d:"M19 13v6",key:"85cyf1"}],["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B8=R("PackageSearchIcon",[["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}],["circle",{cx:"18.5",cy:"15.5",r:"2.5",key:"b5zd12"}],["path",{d:"M20.27 17.27 22 19",key:"1l4muz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G8=R("PackageXIcon",[["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}],["path",{d:"m17 13 5 5m-5 0 5-5",key:"im3w4b"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W8=R("PackageIcon",[["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z8=R("PaintBucketIcon",[["path",{d:"m19 11-8-8-8.6 8.6a2 2 0 0 0 0 2.8l5.2 5.2c.8.8 2 .8 2.8 0L19 11Z",key:"irua1i"}],["path",{d:"m5 2 5 5",key:"1lls2c"}],["path",{d:"M2 13h15",key:"1hkzvu"}],["path",{d:"M22 20a2 2 0 1 1-4 0c0-1.6 1.7-2.4 2-4 .3 1.6 2 2.4 2 4Z",key:"xk76lq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K8=R("Paintbrush2Icon",[["path",{d:"M14 19.9V16h3a2 2 0 0 0 2-2v-2H5v2c0 1.1.9 2 2 2h3v3.9a2 2 0 1 0 4 0Z",key:"1c8kta"}],["path",{d:"M6 12V2h12v10",key:"1esbnf"}],["path",{d:"M14 2v4",key:"qmzblu"}],["path",{d:"M10 2v2",key:"7u0qdc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y8=R("PaintbrushIcon",[["path",{d:"M18.37 2.63 14 7l-1.59-1.59a2 2 0 0 0-2.82 0L8 7l9 9 1.59-1.59a2 2 0 0 0 0-2.82L17 10l4.37-4.37a2.12 2.12 0 1 0-3-3Z",key:"m6k5sh"}],["path",{d:"M9 8c-2 3-4 3.5-7 4l8 10c2-1 6-5 6-7",key:"arzq70"}],["path",{d:"M14.5 17.5 4.5 15",key:"s7fvrz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X8=R("PaletteIcon",[["circle",{cx:"13.5",cy:"6.5",r:".5",key:"1xcu5"}],["circle",{cx:"17.5",cy:"10.5",r:".5",key:"736e4u"}],["circle",{cx:"8.5",cy:"7.5",r:".5",key:"clrty"}],["circle",{cx:"6.5",cy:"12.5",r:".5",key:"1s4xz9"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q8=R("PalmtreeIcon",[["path",{d:"M13 8c0-2.76-2.46-5-5.5-5S2 5.24 2 8h2l1-1 1 1h4",key:"foxbe7"}],["path",{d:"M13 7.14A5.82 5.82 0 0 1 16.5 6c3.04 0 5.5 2.24 5.5 5h-3l-1-1-1 1h-3",key:"18arnh"}],["path",{d:"M5.89 9.71c-2.15 2.15-2.3 5.47-.35 7.43l4.24-4.25.7-.7.71-.71 2.12-2.12c-1.95-1.96-5.27-1.8-7.42.35z",key:"epoumf"}],["path",{d:"M11 15.5c.5 2.5-.17 4.5-1 6.5h4c2-5.5-.5-12-1-14",key:"ft0feo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J8=R("PanelBottomCloseIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"m15 8-3 3-3-3",key:"1oxy1z"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yd=R("PanelBottomDashedIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M14 15h1",key:"171nev"}],["path",{d:"M19 15h2",key:"1vnucp"}],["path",{d:"M3 15h2",key:"8bym0q"}],["path",{d:"M9 15h1",key:"1tg3ks"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e5=R("PanelBottomOpenIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"m9 10 3-3 3 3",key:"11gsxs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t5=R("PanelBottomIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 15h18",key:"5xshup"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bd=R("PanelLeftCloseIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wd=R("PanelLeftDashedIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 14v1",key:"askpd8"}],["path",{d:"M9 19v2",key:"16tejx"}],["path",{d:"M9 3v2",key:"1noubl"}],["path",{d:"M9 9v1",key:"19ebxg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kd=R("PanelLeftOpenIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xd=R("PanelLeftIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a5=R("PanelRightCloseIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}],["path",{d:"m8 9 3 3-3 3",key:"12hl5m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $d=R("PanelRightDashedIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 14v1",key:"ilsfch"}],["path",{d:"M15 19v2",key:"1fst2f"}],["path",{d:"M15 3v2",key:"z204g4"}],["path",{d:"M15 9v1",key:"z2a8b1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s5=R("PanelRightOpenIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}],["path",{d:"m10 15-3-3 3-3",key:"1pgupc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o5=R("PanelRightIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n5=R("PanelTopCloseIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"m9 16 3-3 3 3",key:"1idcnm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cd=R("PanelTopDashedIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M14 9h1",key:"l0svgy"}],["path",{d:"M19 9h2",key:"te2zfg"}],["path",{d:"M3 9h2",key:"1h4ldw"}],["path",{d:"M9 9h1",key:"15jzuz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l5=R("PanelTopOpenIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"m15 14-3 3-3-3",key:"g215vf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r5=R("PanelTopIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i5=R("PanelsLeftBottomIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M9 15h12",key:"5ijen5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d5=R("PanelsRightBottomIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 15h12",key:"1wkqb3"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sd=R("PanelsTopLeftIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c5=R("PaperclipIcon",[["path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48",key:"1u3ebp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u5=R("ParenthesesIcon",[["path",{d:"M8 21s-4-3-4-9 4-9 4-9",key:"uto9ud"}],["path",{d:"M16 3s4 3 4 9-4 9-4 9",key:"4w2vsq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p5=R("ParkingCircleOffIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m5 5 14 14",key:"11anup"}],["path",{d:"M13 13a3 3 0 1 0 0-6H9v2",key:"uoagbd"}],["path",{d:"M9 17v-2.34",key:"a9qo08"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _5=R("ParkingCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9 17V7h4a3 3 0 0 1 0 6H9",key:"1dfk2c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m5=R("ParkingMeterIcon",[["path",{d:"M9 9a3 3 0 1 1 6 0",key:"jdoeu8"}],["path",{d:"M12 12v3",key:"158kv8"}],["path",{d:"M11 15h2",key:"199qp6"}],["path",{d:"M19 9a7 7 0 1 0-13.6 2.3C6.4 14.4 8 19 8 19h8s1.6-4.6 2.6-7.7c.3-.8.4-1.5.4-2.3",key:"1l50wn"}],["path",{d:"M12 19v3",key:"npa21l"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v5=R("ParkingSquareOffIcon",[["path",{d:"M3.6 3.6A2 2 0 0 1 5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-.59 1.41",key:"9l1ft6"}],["path",{d:"M3 8.7V19a2 2 0 0 0 2 2h10.3",key:"17knke"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M13 13a3 3 0 1 0 0-6H9v2",key:"uoagbd"}],["path",{d:"M9 17v-2.3",key:"1jxgo2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h5=R("ParkingSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 17V7h4a3 3 0 0 1 0 6H9",key:"1dfk2c"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f5=R("PartyPopperIcon",[["path",{d:"M5.8 11.3 2 22l10.7-3.79",key:"gwxi1d"}],["path",{d:"M4 3h.01",key:"1vcuye"}],["path",{d:"M22 8h.01",key:"1mrtc2"}],["path",{d:"M15 2h.01",key:"1cjtqr"}],["path",{d:"M22 20h.01",key:"1mrys2"}],["path",{d:"m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12v0c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10",key:"bpx1uq"}],["path",{d:"m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11v0c-.11.7-.72 1.22-1.43 1.22H17",key:"1pd0s7"}],["path",{d:"m11 2 .33.82c.34.86-.2 1.82-1.11 1.98v0C9.52 4.9 9 5.52 9 6.23V7",key:"zq5xbz"}],["path",{d:"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z",key:"4kbmks"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g5=R("PauseCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y5=R("PauseOctagonIcon",[["path",{d:"M10 15V9",key:"1lckn7"}],["path",{d:"M14 15V9",key:"1muqhk"}],["path",{d:"M7.714 2h8.572L22 7.714v8.572L16.286 22H7.714L2 16.286V7.714L7.714 2z",key:"1m7qra"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b5=R("PauseIcon",[["rect",{width:"4",height:"16",x:"6",y:"4",key:"iffhe4"}],["rect",{width:"4",height:"16",x:"14",y:"4",key:"sjin7j"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w5=R("PawPrintIcon",[["circle",{cx:"11",cy:"4",r:"2",key:"vol9p0"}],["circle",{cx:"18",cy:"8",r:"2",key:"17gozi"}],["circle",{cx:"20",cy:"16",r:"2",key:"1v9bxh"}],["path",{d:"M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z",key:"1ydw1z"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k5=R("PcCaseIcon",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",key:"1uq1d7"}],["path",{d:"M15 14h.01",key:"1kp3bh"}],["path",{d:"M9 6h6",key:"dgm16u"}],["path",{d:"M9 10h6",key:"9gxzsh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ed=R("PenLineIcon",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z",key:"ymcmye"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ol=R("PenSquareIcon",[["path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1qinfi"}],["path",{d:"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4Z",key:"w2jsv5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x5=R("PenToolIcon",[["path",{d:"m12 19 7-7 3 3-7 7-3-3z",key:"rklqx2"}],["path",{d:"m18 13-1.5-7.5L2 2l3.5 14.5L13 18l5-5z",key:"1et58u"}],["path",{d:"m2 2 7.586 7.586",key:"etlp93"}],["circle",{cx:"11",cy:"11",r:"2",key:"xmgehs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ad=R("PenIcon",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $5=R("PencilLineIcon",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z",key:"ymcmye"}],["path",{d:"m15 5 3 3",key:"1w25hb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C5=R("PencilRulerIcon",[["path",{d:"m15 5 4 4",key:"1mk7zo"}],["path",{d:"M13 7 8.7 2.7a2.41 2.41 0 0 0-3.4 0L2.7 5.3a2.41 2.41 0 0 0 0 3.4L7 13",key:"orapub"}],["path",{d:"m8 6 2-2",key:"115y1s"}],["path",{d:"m2 22 5.5-1.5L21.17 6.83a2.82 2.82 0 0 0-4-4L3.5 16.5Z",key:"hes763"}],["path",{d:"m18 16 2-2",key:"ee94s4"}],["path",{d:"m17 11 4.3 4.3c.94.94.94 2.46 0 3.4l-2.6 2.6c-.94.94-2.46.94-3.4 0L11 17",key:"cfq27r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S5=R("PencilIcon",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E5=R("PentagonIcon",[["path",{d:"M3.5 8.7c-.7.5-1 1.4-.7 2.2l2.8 8.7c.3.8 1 1.4 1.9 1.4h9.1c.9 0 1.6-.6 1.9-1.4l2.8-8.7c.3-.8 0-1.7-.7-2.2l-7.4-5.3a2.1 2.1 0 0 0-2.4 0Z",key:"hsj90r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A5=R("PercentCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M9 9h.01",key:"1q5me6"}],["path",{d:"M15 15h.01",key:"lqbp3k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L5=R("PercentDiamondIcon",[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0Z",key:"1tpxz2"}],["path",{d:"M9.2 9.2h.01",key:"1b7bvt"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"M14.7 14.8h.01",key:"17nsh4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I5=R("PercentSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M9 9h.01",key:"1q5me6"}],["path",{d:"M15 15h.01",key:"lqbp3k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V5=R("PercentIcon",[["line",{x1:"19",x2:"5",y1:"5",y2:"19",key:"1x9vlm"}],["circle",{cx:"6.5",cy:"6.5",r:"2.5",key:"4mh3h7"}],["circle",{cx:"17.5",cy:"17.5",r:"2.5",key:"1mdrzq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M5=R("PersonStandingIcon",[["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["path",{d:"m9 20 3-6 3 6",key:"se2kox"}],["path",{d:"m6 8 6 2 6-2",key:"4o3us4"}],["path",{d:"M12 10v4",key:"1kjpxc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T5=R("PhoneCallIcon",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}],["path",{d:"M14.05 2a9 9 0 0 1 8 7.94",key:"vmijpz"}],["path",{d:"M14.05 6A5 5 0 0 1 18 10",key:"13nbpp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D5=R("PhoneForwardedIcon",[["polyline",{points:"18 2 22 6 18 10",key:"6vjanh"}],["line",{x1:"14",x2:"22",y1:"6",y2:"6",key:"1jsywh"}],["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P5=R("PhoneIncomingIcon",[["polyline",{points:"16 2 16 8 22 8",key:"1ygljm"}],["line",{x1:"22",x2:"16",y1:"2",y2:"8",key:"1xzwqn"}],["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U5=R("PhoneMissedIcon",[["line",{x1:"22",x2:"16",y1:"2",y2:"8",key:"1xzwqn"}],["line",{x1:"16",x2:"22",y1:"2",y2:"8",key:"13zxdn"}],["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R5=R("PhoneOffIcon",[["path",{d:"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91",key:"z86iuo"}],["line",{x1:"22",x2:"2",y1:"2",y2:"22",key:"11kh81"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O5=R("PhoneOutgoingIcon",[["polyline",{points:"22 8 22 2 16 2",key:"1g204g"}],["line",{x1:"16",x2:"22",y1:"8",y2:"2",key:"1ggias"}],["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F5=R("PhoneIcon",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N5=R("PiSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 7h10",key:"udp07y"}],["path",{d:"M10 7v10",key:"i1d9ee"}],["path",{d:"M16 17a2 2 0 0 1-2-2V7",key:"ftwdc7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j5=R("PiIcon",[["line",{x1:"9",x2:"9",y1:"4",y2:"20",key:"ovs5a5"}],["path",{d:"M4 7c0-1.7 1.3-3 3-3h13",key:"10pag4"}],["path",{d:"M18 20c-1.7 0-3-1.3-3-3V4",key:"1gaosr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H5=R("PianoIcon",[["path",{d:"M18.5 8c-1.4 0-2.6-.8-3.2-2A6.87 6.87 0 0 0 2 9v11a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-8.5C22 9.6 20.4 8 18.5 8",key:"lag0yf"}],["path",{d:"M2 14h20",key:"myj16y"}],["path",{d:"M6 14v4",key:"9ng0ue"}],["path",{d:"M10 14v4",key:"1v8uk5"}],["path",{d:"M14 14v4",key:"1tqops"}],["path",{d:"M18 14v4",key:"18uqwm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q5=R("PictureInPicture2Icon",[["path",{d:"M21 9V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10c0 1.1.9 2 2 2h4",key:"daa4of"}],["rect",{width:"10",height:"7",x:"12",y:"13",rx:"2",key:"1nb8gs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z5=R("PictureInPictureIcon",[["path",{d:"M8 4.5v5H3m-1-6 6 6m13 0v-3c0-1.16-.84-2-2-2h-7m-9 9v2c0 1.05.95 2 2 2h3",key:"bcd8fb"}],["rect",{width:"10",height:"7",x:"12",y:"13.5",ry:"2",key:"136fx3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B5=R("PieChartIcon",[["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}],["path",{d:"M22 12A10 10 0 0 0 12 2v10z",key:"1rfc4y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G5=R("PiggyBankIcon",[["path",{d:"M19 5c-1.5 0-2.8 1.4-3 2-3.5-1.5-11-.3-11 5 0 1.8 0 3 2 4.5V20h4v-2h3v2h4v-4c1-.5 1.7-1 2-2h2v-4h-2c0-1-.5-1.5-1-2h0V5z",key:"uf6l00"}],["path",{d:"M2 9v1c0 1.1.9 2 2 2h1",key:"nm575m"}],["path",{d:"M16 11h0",key:"k2aug8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W5=R("PilcrowSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 12H9.5a2.5 2.5 0 0 1 0-5H17",key:"1l9586"}],["path",{d:"M12 7v10",key:"jspqdw"}],["path",{d:"M16 7v10",key:"lavkr4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z5=R("PilcrowIcon",[["path",{d:"M13 4v16",key:"8vvj80"}],["path",{d:"M17 4v16",key:"7dpous"}],["path",{d:"M19 4H9.5a4.5 4.5 0 0 0 0 9H13",key:"sh4n9v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K5=R("PillIcon",[["path",{d:"m10.5 20.5 10-10a4.95 4.95 0 1 0-7-7l-10 10a4.95 4.95 0 1 0 7 7Z",key:"wa1lgi"}],["path",{d:"m8.5 8.5 7 7",key:"rvfmvr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y5=R("PinOffIcon",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["line",{x1:"12",x2:"12",y1:"17",y2:"22",key:"1jrz49"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V17h12",key:"13x2n8"}],["path",{d:"M15 9.34V6h1a2 2 0 0 0 0-4H7.89",key:"reo3ki"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X5=R("PinIcon",[["line",{x1:"12",x2:"12",y1:"17",y2:"22",key:"1jrz49"}],["path",{d:"M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z",key:"13yl11"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q5=R("PipetteIcon",[["path",{d:"m2 22 1-1h3l9-9",key:"1sre89"}],["path",{d:"M3 21v-3l9-9",key:"hpe2y6"}],["path",{d:"m15 6 3.4-3.4a2.1 2.1 0 1 1 3 3L18 9l.4.4a2.1 2.1 0 1 1-3 3l-3.8-3.8a2.1 2.1 0 1 1 3-3l.4.4Z",key:"196du1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J5=R("PizzaIcon",[["path",{d:"M15 11h.01",key:"rns66s"}],["path",{d:"M11 15h.01",key:"k85uqc"}],["path",{d:"M16 16h.01",key:"1f9h7w"}],["path",{d:"m2 16 20 6-6-20A20 20 0 0 0 2 16",key:"e4slt2"}],["path",{d:"M5.71 17.11a17.04 17.04 0 0 1 11.4-11.4",key:"rerf8f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eC=R("PlaneLandingIcon",[["path",{d:"M2 22h20",key:"272qi7"}],["path",{d:"M3.77 10.77 2 9l2-4.5 1.1.55c.55.28.9.84.9 1.45s.35 1.17.9 1.45L8 8.5l3-6 1.05.53a2 2 0 0 1 1.09 1.52l.72 5.4a2 2 0 0 0 1.09 1.52l4.4 2.2c.42.22.78.55 1.01.96l.6 1.03c.49.88-.06 1.98-1.06 2.1l-1.18.15c-.47.06-.95-.02-1.37-.24L4.29 11.15a2 2 0 0 1-.52-.38Z",key:"1ma21e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tC=R("PlaneTakeoffIcon",[["path",{d:"M2 22h20",key:"272qi7"}],["path",{d:"M6.36 17.4 4 17l-2-4 1.1-.55a2 2 0 0 1 1.8 0l.17.1a2 2 0 0 0 1.8 0L8 12 5 6l.9-.45a2 2 0 0 1 2.09.2l4.02 3a2 2 0 0 0 2.1.2l4.19-2.06a2.41 2.41 0 0 1 1.73-.17L21 7a1.4 1.4 0 0 1 .87 1.99l-.38.76c-.23.46-.6.84-1.07 1.08L7.58 17.2a2 2 0 0 1-1.22.18Z",key:"fkigj9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aC=R("PlaneIcon",[["path",{d:"M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z",key:"1v9wt8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sC=R("PlayCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oC=R("PlaySquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m9 8 6 4-6 4Z",key:"f1r3lt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nC=R("PlayIcon",[["polygon",{points:"5 3 19 12 5 21 5 3",key:"191637"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lC=R("Plug2Icon",[["path",{d:"M9 2v6",key:"17ngun"}],["path",{d:"M15 2v6",key:"s7yy2p"}],["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M5 8h14",key:"pcz4l3"}],["path",{d:"M6 11V8h12v3a6 6 0 1 1-12 0v0Z",key:"nd4hoy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rC=R("PlugZap2Icon",[["path",{d:"m13 2-2 2.5h3L12 7",key:"1me98u"}],["path",{d:"M10 14v-3",key:"1mllf3"}],["path",{d:"M14 14v-3",key:"1l3fkq"}],["path",{d:"M11 19c-1.7 0-3-1.3-3-3v-2h8v2c0 1.7-1.3 3-3 3Z",key:"jd5pat"}],["path",{d:"M12 22v-3",key:"kmzjlo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iC=R("PlugZapIcon",[["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m18 3-4 4h6l-4 4",key:"16psg9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dC=R("PlugIcon",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cC=R("PlusCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uC=R("PlusSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pC=R("PlusIcon",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _C=R("PocketKnifeIcon",[["path",{d:"M3 2v1c0 1 2 1 2 2S3 6 3 7s2 1 2 2-2 1-2 2 2 1 2 2",key:"19w3oe"}],["path",{d:"M18 6h.01",key:"1v4wsw"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"M20.83 8.83a4 4 0 0 0-5.66-5.66l-12 12a4 4 0 1 0 5.66 5.66Z",key:"6fykxj"}],["path",{d:"M18 11.66V22a4 4 0 0 0 4-4V6",key:"1utzek"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mC=R("PocketIcon",[["path",{d:"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z",key:"1mz881"}],["polyline",{points:"8 10 12 14 16 10",key:"w4mbv5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vC=R("PodcastIcon",[["circle",{cx:"12",cy:"11",r:"1",key:"1gvufo"}],["path",{d:"M11 17a1 1 0 0 1 2 0c0 .5-.34 3-.5 4.5a.5.5 0 0 1-1 0c-.16-1.5-.5-4-.5-4.5Z",key:"1n5fvv"}],["path",{d:"M8 14a5 5 0 1 1 8 0",key:"fc81rn"}],["path",{d:"M17 18.5a9 9 0 1 0-10 0",key:"jqtxkf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hC=R("PointerOffIcon",[["path",{d:"M10 4.5V4a2 2 0 0 0-2.41-1.957",key:"jsi14n"}],["path",{d:"M13.9 8.4a2 2 0 0 0-1.26-1.295",key:"hirc7f"}],["path",{d:"M21.7 16.2A8 8 0 0 0 22 14v-3a2 2 0 1 0-4 0v-1a2 2 0 0 0-3.63-1.158",key:"1jxb2e"}],["path",{d:"m7 15-1.8-1.8a2 2 0 0 0-2.79 2.86L6 19.7a7.74 7.74 0 0 0 6 2.3h2a8 8 0 0 0 5.657-2.343",key:"10r7hm"}],["path",{d:"M6 6v8",key:"tv5xkp"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fC=R("PointerIcon",[["path",{d:"M22 14a8 8 0 0 1-8 8",key:"56vcr3"}],["path",{d:"M18 11v-1a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0",key:"1pp0yd"}],["path",{d:"M14 10V9a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v1",key:"u654g"}],["path",{d:"M10 9.5V4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v10",key:"1e2dtv"}],["path",{d:"M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15",key:"g6ys72"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gC=R("PopcornIcon",[["path",{d:"M18 8a2 2 0 0 0 0-4 2 2 0 0 0-4 0 2 2 0 0 0-4 0 2 2 0 0 0-4 0 2 2 0 0 0 0 4",key:"10td1f"}],["path",{d:"M10 22 9 8",key:"yjptiv"}],["path",{d:"m14 22 1-14",key:"8jwc8b"}],["path",{d:"M20 8c.5 0 .9.4.8 1l-2.6 12c-.1.5-.7 1-1.2 1H7c-.6 0-1.1-.4-1.2-1L3.2 9c-.1-.6.3-1 .8-1Z",key:"1qo33t"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yC=R("PopsicleIcon",[["path",{d:"M18.6 14.4c.8-.8.8-2 0-2.8l-8.1-8.1a4.95 4.95 0 1 0-7.1 7.1l8.1 8.1c.9.7 2.1.7 2.9-.1Z",key:"1o68ps"}],["path",{d:"m22 22-5.5-5.5",key:"17o70y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bC=R("PoundSterlingIcon",[["path",{d:"M18 7c0-5.333-8-5.333-8 0",key:"1prm2n"}],["path",{d:"M10 7v14",key:"18tmcs"}],["path",{d:"M6 21h12",key:"4dkmi1"}],["path",{d:"M6 13h10",key:"ybwr4a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wC=R("PowerCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 12V6",key:"30zewn"}],["path",{d:"M8 7.5A6.1 6.1 0 0 0 12 18a6 6 0 0 0 4-10.5",key:"1r0tk2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kC=R("PowerOffIcon",[["path",{d:"M18.36 6.64A9 9 0 0 1 20.77 15",key:"dxknvb"}],["path",{d:"M6.16 6.16a9 9 0 1 0 12.68 12.68",key:"1x7qb5"}],["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xC=R("PowerSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 7v5",key:"ma6bk"}],["path",{d:"M8 9a5.14 5.14 0 0 0 4 8 4.95 4.95 0 0 0 4-8",key:"15eubv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $C=R("PowerIcon",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const CC=R("PresentationIcon",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const SC=R("PrinterIcon",[["polyline",{points:"6 9 6 2 18 2 18 9",key:"1306q4"}],["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["rect",{width:"12",height:"8",x:"6",y:"14",key:"5ipwut"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const EC=R("ProjectorIcon",[["path",{d:"M5 7 3 5",key:"1yys58"}],["path",{d:"M9 6V3",key:"1ptz9u"}],["path",{d:"m13 7 2-2",key:"1w3vmq"}],["circle",{cx:"9",cy:"13",r:"3",key:"1mma13"}],["path",{d:"M11.83 12H20a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h2.17",key:"2frwzc"}],["path",{d:"M16 16h2",key:"dnq2od"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const AC=R("PuzzleIcon",[["path",{d:"M19.439 7.85c-.049.322.059.648.289.878l1.568 1.568c.47.47.706 1.087.706 1.704s-.235 1.233-.706 1.704l-1.611 1.611a.98.98 0 0 1-.837.276c-.47-.07-.802-.48-.968-.925a2.501 2.501 0 1 0-3.214 3.214c.446.166.855.497.925.968a.979.979 0 0 1-.276.837l-1.61 1.61a2.404 2.404 0 0 1-1.705.707 2.402 2.402 0 0 1-1.704-.706l-1.568-1.568a1.026 1.026 0 0 0-.877-.29c-.493.074-.84.504-1.02.968a2.5 2.5 0 1 1-3.237-3.237c.464-.18.894-.527.967-1.02a1.026 1.026 0 0 0-.289-.877l-1.568-1.568A2.402 2.402 0 0 1 1.998 12c0-.617.236-1.234.706-1.704L4.23 8.77c.24-.24.581-.353.917-.303.515.077.877.528 1.073 1.01a2.5 2.5 0 1 0 3.259-3.259c-.482-.196-.933-.558-1.01-1.073-.05-.336.062-.676.303-.917l1.525-1.525A2.402 2.402 0 0 1 12 1.998c.617 0 1.234.236 1.704.706l1.568 1.568c.23.23.556.338.877.29.493-.074.84-.504 1.02-.968a2.5 2.5 0 1 1 3.237 3.237c-.464.18-.894.527-.967 1.02Z",key:"i0oyt7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const LC=R("PyramidIcon",[["path",{d:"M2.5 16.88a1 1 0 0 1-.32-1.43l9-13.02a1 1 0 0 1 1.64 0l9 13.01a1 1 0 0 1-.32 1.44l-8.51 4.86a2 2 0 0 1-1.98 0Z",key:"aenxs0"}],["path",{d:"M12 2v20",key:"t6zp3m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IC=R("QrCodeIcon",[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const VC=R("QuoteIcon",[["path",{d:"M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z",key:"4rm80e"}],["path",{d:"M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z",key:"10za9r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const MC=R("RabbitIcon",[["path",{d:"M13 16a3 3 0 0 1 2.24 5",key:"1epib5"}],["path",{d:"M18 12h.01",key:"yjnet6"}],["path",{d:"M18 21h-8a4 4 0 0 1-4-4 7 7 0 0 1 7-7h.2L9.6 6.4a1 1 0 1 1 2.8-2.8L15.8 7h.2c3.3 0 6 2.7 6 6v1a2 2 0 0 1-2 2h-1a3 3 0 0 0-3 3",key:"ue9ozu"}],["path",{d:"M20 8.54V4a2 2 0 1 0-4 0v3",key:"49iql8"}],["path",{d:"M7.612 12.524a3 3 0 1 0-1.6 4.3",key:"1e33i0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const TC=R("RadarIcon",[["path",{d:"M19.07 4.93A10 10 0 0 0 6.99 3.34",key:"z3du51"}],["path",{d:"M4 6h.01",key:"oypzma"}],["path",{d:"M2.29 9.62A10 10 0 1 0 21.31 8.35",key:"qzzz0"}],["path",{d:"M16.24 7.76A6 6 0 1 0 8.23 16.67",key:"1yjesh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M17.99 11.66A6 6 0 0 1 15.77 16.67",key:"1u2y91"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"m13.41 10.59 5.66-5.66",key:"mhq4k0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const DC=R("RadiationIcon",[["path",{d:"M12 12h0.01",key:"6ztbls"}],["path",{d:"M7.5 4.2c-.3-.5-.9-.7-1.3-.4C3.9 5.5 2.3 8.1 2 11c-.1.5.4 1 1 1h5c0-1.5.8-2.8 2-3.4-1.1-1.9-2-3.5-2.5-4.4z",key:"wy49g3"}],["path",{d:"M21 12c.6 0 1-.4 1-1-.3-2.9-1.8-5.5-4.1-7.1-.4-.3-1.1-.2-1.3.3-.6.9-1.5 2.5-2.6 4.3 1.2.7 2 2 2 3.5h5z",key:"vklnvr"}],["path",{d:"M7.5 19.8c-.3.5-.1 1.1.4 1.3 2.6 1.2 5.6 1.2 8.2 0 .5-.2.7-.8.4-1.3-.5-.9-1.4-2.5-2.5-4.3-1.2.7-2.8.7-4 0-1.1 1.8-2 3.4-2.5 4.3z",key:"wkdf1o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const PC=R("RadioReceiverIcon",[["path",{d:"M5 16v2",key:"g5qcv5"}],["path",{d:"M19 16v2",key:"1gbaio"}],["rect",{width:"20",height:"8",x:"2",y:"8",rx:"2",key:"vjsjur"}],["path",{d:"M18 12h0",key:"1ucjzd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const UC=R("RadioTowerIcon",[["path",{d:"M4.9 16.1C1 12.2 1 5.8 4.9 1.9",key:"s0qx1y"}],["path",{d:"M7.8 4.7a6.14 6.14 0 0 0-.8 7.5",key:"1idnkw"}],["circle",{cx:"12",cy:"9",r:"2",key:"1092wv"}],["path",{d:"M16.2 4.8c2 2 2.26 5.11.8 7.47",key:"ojru2q"}],["path",{d:"M19.1 1.9a9.96 9.96 0 0 1 0 14.1",key:"rhi7fg"}],["path",{d:"M9.5 18h5",key:"mfy3pd"}],["path",{d:"m8 22 4-11 4 11",key:"25yftu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const RC=R("RadioIcon",[["path",{d:"M4.9 19.1C1 15.2 1 8.8 4.9 4.9",key:"1vaf9d"}],["path",{d:"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5",key:"u1ii0m"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5",key:"1j5fej"}],["path",{d:"M19.1 4.9C23 8.8 23 15.1 19.1 19",key:"10b0cb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OC=R("RadiusIcon",[["path",{d:"M20.34 17.52a10 10 0 1 0-2.82 2.82",key:"fydyku"}],["circle",{cx:"19",cy:"19",r:"2",key:"17f5cg"}],["path",{d:"m13.41 13.41 4.18 4.18",key:"1gqbwc"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const FC=R("RailSymbolIcon",[["path",{d:"M5 15h14",key:"m0yey3"}],["path",{d:"M5 9h14",key:"7tsvo6"}],["path",{d:"m14 20-5-5 6-6-5-5",key:"1jo42i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NC=R("RainbowIcon",[["path",{d:"M22 17a10 10 0 0 0-20 0",key:"ozegv"}],["path",{d:"M6 17a6 6 0 0 1 12 0",key:"5giftw"}],["path",{d:"M10 17a2 2 0 0 1 4 0",key:"gnsikk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jC=R("RatIcon",[["path",{d:"M17 5c0-1.7-1.3-3-3-3s-3 1.3-3 3c0 .8.3 1.5.8 2H11c-3.9 0-7 3.1-7 7v0c0 2.2 1.8 4 4 4",key:"16aj0u"}],["path",{d:"M16.8 3.9c.3-.3.6-.5 1-.7 1.5-.6 3.3.1 3.9 1.6.6 1.5-.1 3.3-1.6 3.9l1.6 2.8c.2.3.2.7.2 1-.2.8-.9 1.2-1.7 1.1 0 0-1.6-.3-2.7-.6H17c-1.7 0-3 1.3-3 3",key:"1crdmb"}],["path",{d:"M13.2 18a3 3 0 0 0-2.2-5",key:"1ol3lk"}],["path",{d:"M13 22H4a2 2 0 0 1 0-4h12",key:"bt3f23"}],["path",{d:"M16 9h.01",key:"1bdo4e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HC=R("RatioIcon",[["rect",{width:"12",height:"20",x:"6",y:"2",rx:"2",key:"1oxtiu"}],["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qC=R("ReceiptIcon",[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1-2-1Z",key:"wqdwcb"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 17V7",key:"pyj7ub"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zC=R("RectangleHorizontalIcon",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const BC=R("RectangleVerticalIcon",[["rect",{width:"12",height:"20",x:"6",y:"2",rx:"2",key:"1oxtiu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const GC=R("RecycleIcon",[["path",{d:"M7 19H4.815a1.83 1.83 0 0 1-1.57-.881 1.785 1.785 0 0 1-.004-1.784L7.196 9.5",key:"x6z5xu"}],["path",{d:"M11 19h8.203a1.83 1.83 0 0 0 1.556-.89 1.784 1.784 0 0 0 0-1.775l-1.226-2.12",key:"1x4zh5"}],["path",{d:"m14 16-3 3 3 3",key:"f6jyew"}],["path",{d:"M8.293 13.596 7.196 9.5 3.1 10.598",key:"wf1obh"}],["path",{d:"m9.344 5.811 1.093-1.892A1.83 1.83 0 0 1 11.985 3a1.784 1.784 0 0 1 1.546.888l3.943 6.843",key:"9tzpgr"}],["path",{d:"m13.378 9.633 4.096 1.098 1.097-4.096",key:"1oe83g"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const WC=R("Redo2Icon",[["path",{d:"m15 14 5-5-5-5",key:"12vg1m"}],["path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5v0A5.5 5.5 0 0 0 9.5 20H13",key:"19mnr4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ZC=R("RedoDotIcon",[["circle",{cx:"12",cy:"17",r:"1",key:"1ixnty"}],["path",{d:"M21 7v6h-6",key:"3ptur4"}],["path",{d:"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7",key:"1kgawr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const KC=R("RedoIcon",[["path",{d:"M21 7v6h-6",key:"3ptur4"}],["path",{d:"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7",key:"1kgawr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const YC=R("RefreshCcwDotIcon",[["path",{d:"M3 2v6h6",key:"18ldww"}],["path",{d:"M21 12A9 9 0 0 0 6 5.3L3 8",key:"1pbrqz"}],["path",{d:"M21 22v-6h-6",key:"usdfbe"}],["path",{d:"M3 12a9 9 0 0 0 15 6.7l3-2.7",key:"1hosoe"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const XC=R("RefreshCcwIcon",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const QC=R("RefreshCwOffIcon",[["path",{d:"M21 8L18.74 5.74A9.75 9.75 0 0 0 12 3C11 3 10.03 3.16 9.13 3.47",key:"1krf6h"}],["path",{d:"M8 16H3v5",key:"1cv678"}],["path",{d:"M3 12C3 9.51 4 7.26 5.64 5.64",key:"ruvoct"}],["path",{d:"m3 16 2.26 2.26A9.75 9.75 0 0 0 12 21c2.49 0 4.74-1 6.36-2.64",key:"19q130"}],["path",{d:"M21 12c0 1-.16 1.97-.47 2.87",key:"4w8emr"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M22 22 2 2",key:"1r8tn9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const JC=R("RefreshCwIcon",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eS=R("RefrigeratorIcon",[["path",{d:"M5 6a4 4 0 0 1 4-4h6a4 4 0 0 1 4 4v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6Z",key:"fpq118"}],["path",{d:"M5 10h14",key:"elsbfy"}],["path",{d:"M15 7v6",key:"1nx30x"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tS=R("RegexIcon",[["path",{d:"M17 3v10",key:"15fgeh"}],["path",{d:"m12.67 5.5 8.66 5",key:"1gpheq"}],["path",{d:"m12.67 10.5 8.66-5",key:"1dkfa6"}],["path",{d:"M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z",key:"swwfx4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aS=R("RemoveFormattingIcon",[["path",{d:"M4 7V4h16v3",key:"9msm58"}],["path",{d:"M5 20h6",key:"1h6pxn"}],["path",{d:"M13 4 8 20",key:"kqq6aj"}],["path",{d:"m15 15 5 5",key:"me55sn"}],["path",{d:"m20 15-5 5",key:"11p7ol"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sS=R("Repeat1Icon",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}],["path",{d:"M11 10h1v4",key:"70cz1p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oS=R("Repeat2Icon",[["path",{d:"m2 9 3-3 3 3",key:"1ltn5i"}],["path",{d:"M13 18H7a2 2 0 0 1-2-2V6",key:"1r6tfw"}],["path",{d:"m22 15-3 3-3-3",key:"4rnwn2"}],["path",{d:"M11 6h6a2 2 0 0 1 2 2v10",key:"2f72bc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nS=R("RepeatIcon",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lS=R("ReplaceAllIcon",[["path",{d:"M14 4c0-1.1.9-2 2-2",key:"1mvvbw"}],["path",{d:"M20 2c1.1 0 2 .9 2 2",key:"1mj6oe"}],["path",{d:"M22 8c0 1.1-.9 2-2 2",key:"v1wql3"}],["path",{d:"M16 10c-1.1 0-2-.9-2-2",key:"821ux0"}],["path",{d:"m3 7 3 3 3-3",key:"x25e72"}],["path",{d:"M6 10V5c0-1.7 1.3-3 3-3h1",key:"13af7h"}],["rect",{width:"8",height:"8",x:"2",y:"14",rx:"2",key:"17ihk4"}],["path",{d:"M14 14c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2",key:"1w9p8c"}],["path",{d:"M20 14c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2",key:"m45eaa"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rS=R("ReplaceIcon",[["path",{d:"M14 4c0-1.1.9-2 2-2",key:"1mvvbw"}],["path",{d:"M20 2c1.1 0 2 .9 2 2",key:"1mj6oe"}],["path",{d:"M22 8c0 1.1-.9 2-2 2",key:"v1wql3"}],["path",{d:"M16 10c-1.1 0-2-.9-2-2",key:"821ux0"}],["path",{d:"m3 7 3 3 3-3",key:"x25e72"}],["path",{d:"M6 10V5c0-1.7 1.3-3 3-3h1",key:"13af7h"}],["rect",{width:"8",height:"8",x:"2",y:"14",rx:"2",key:"17ihk4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iS=R("ReplyAllIcon",[["polyline",{points:"7 17 2 12 7 7",key:"t83bqg"}],["polyline",{points:"12 17 7 12 12 7",key:"1g4ajm"}],["path",{d:"M22 18v-2a4 4 0 0 0-4-4H7",key:"1fcyog"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dS=R("ReplyIcon",[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cS=R("RewindIcon",[["polygon",{points:"11 19 2 12 11 5 11 19",key:"14yba5"}],["polygon",{points:"22 19 13 12 22 5 22 19",key:"1pi1cj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uS=R("RibbonIcon",[["path",{d:"M17.75 9.01c-.52 2.08-1.83 3.64-3.18 5.49l-2.6 3.54-2.97 4-3.5-2.54 3.85-4.97c-1.86-2.61-2.8-3.77-3.16-5.44",key:"1njedg"}],["path",{d:"M17.75 9.01A7 7 0 0 0 6.2 9.1C6.06 8.5 6 7.82 6 7c0-3.5 2.83-5 5.98-5C15.24 2 18 3.5 18 7c0 .73-.09 1.4-.25 2.01Z",key:"10len7"}],["path",{d:"m9.35 14.53 2.64-3.31",key:"1wfi09"}],["path",{d:"m11.97 18.04 2.99 4 3.54-2.54-3.93-5",key:"1ezyge"}],["path",{d:"M14 8c0 1-1 2-2.01 3.22C11 10 10 9 10 8a2 2 0 1 1 4 0",key:"aw0zq5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pS=R("RocketIcon",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _S=R("RockingChairIcon",[["polyline",{points:"3.5 2 6.5 12.5 18 12.5",key:"y3iy52"}],["line",{x1:"9.5",x2:"5.5",y1:"12.5",y2:"20",key:"19vg5i"}],["line",{x1:"15",x2:"18.5",y1:"12.5",y2:"20",key:"1inpmv"}],["path",{d:"M2.75 18a13 13 0 0 0 18.5 0",key:"1nquas"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mS=R("RollerCoasterIcon",[["path",{d:"M6 19V5",key:"1r845m"}],["path",{d:"M10 19V6.8",key:"9j2tfs"}],["path",{d:"M14 19v-7.8",key:"10s8qv"}],["path",{d:"M18 5v4",key:"1tajlv"}],["path",{d:"M18 19v-6",key:"ielfq3"}],["path",{d:"M22 19V9",key:"158nzp"}],["path",{d:"M2 19V9a4 4 0 0 1 4-4c2 0 4 1.33 6 4s4 4 6 4a4 4 0 1 0-3-6.65",key:"1930oh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ld=R("Rotate3dIcon",[["path",{d:"M16.466 7.5C15.643 4.237 13.952 2 12 2 9.239 2 7 6.477 7 12s2.239 10 5 10c.342 0 .677-.069 1-.2",key:"10n0gc"}],["path",{d:"m15.194 13.707 3.814 1.86-1.86 3.814",key:"16shm9"}],["path",{d:"M19 15.57c-1.804.885-4.274 1.43-7 1.43-5.523 0-10-2.239-10-5s4.477-5 10-5c4.838 0 8.873 1.718 9.8 4",key:"1lxi77"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vS=R("RotateCcwIcon",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hS=R("RotateCwIcon",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fS=R("RouteOffIcon",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5c.4 0 .9-.1 1.3-.2",key:"1effex"}],["path",{d:"M5.2 5.2A3.5 3.53 0 0 0 6.5 12H12",key:"k9y2ds"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M21 15.3a3.5 3.5 0 0 0-3.3-3.3",key:"11nlu2"}],["path",{d:"M15 5h-4.3",key:"6537je"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gS=R("RouteIcon",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yS=R("RouterIcon",[["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",key:"w68u3i"}],["path",{d:"M6.01 18H6",key:"19vcac"}],["path",{d:"M10.01 18H10",key:"uamcmx"}],["path",{d:"M15 10v4",key:"qjz1xs"}],["path",{d:"M17.84 7.17a4 4 0 0 0-5.66 0",key:"1rif40"}],["path",{d:"M20.66 4.34a8 8 0 0 0-11.31 0",key:"6a5xfq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Id=R("Rows2Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 12h18",key:"1i2n21"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vd=R("Rows3Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M21 9H3",key:"1338ky"}],["path",{d:"M21 15H3",key:"9uk58r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bS=R("Rows4Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M21 7.5H3",key:"1hm9pq"}],["path",{d:"M21 12H3",key:"2avoz0"}],["path",{d:"M21 16.5H3",key:"n7jzkj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wS=R("RssIcon",[["path",{d:"M4 11a9 9 0 0 1 9 9",key:"pv89mb"}],["path",{d:"M4 4a16 16 0 0 1 16 16",key:"k0647b"}],["circle",{cx:"5",cy:"19",r:"1",key:"bfqh0e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kS=R("RulerIcon",[["path",{d:"M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z",key:"icamh8"}],["path",{d:"m14.5 12.5 2-2",key:"inckbg"}],["path",{d:"m11.5 9.5 2-2",key:"fmmyf7"}],["path",{d:"m8.5 6.5 2-2",key:"vc6u1g"}],["path",{d:"m17.5 15.5 2-2",key:"wo5hmg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xS=R("RussianRubleIcon",[["path",{d:"M6 11h8a4 4 0 0 0 0-8H9v18",key:"18ai8t"}],["path",{d:"M6 15h8",key:"1y8f6l"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $S=R("SailboatIcon",[["path",{d:"M22 18H2a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4Z",key:"1404fh"}],["path",{d:"M21 14 10 2 3 14h18Z",key:"1nzg7v"}],["path",{d:"M10 2v16",key:"1labyt"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const CS=R("SaladIcon",[["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z",key:"4rw317"}],["path",{d:"M11.38 12a2.4 2.4 0 0 1-.4-4.77 2.4 2.4 0 0 1 3.2-2.77 2.4 2.4 0 0 1 3.47-.63 2.4 2.4 0 0 1 3.37 3.37 2.4 2.4 0 0 1-1.1 3.7 2.51 2.51 0 0 1 .03 1.1",key:"10xrj0"}],["path",{d:"m13 12 4-4",key:"1hckqy"}],["path",{d:"M10.9 7.25A3.99 3.99 0 0 0 4 10c0 .73.2 1.41.54 2",key:"1p4srx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const SS=R("SandwichIcon",[["path",{d:"M3 11v3a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-3",key:"34v9d7"}],["path",{d:"M12 19H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-3.83",key:"1k5vfb"}],["path",{d:"m3 11 7.77-6.04a2 2 0 0 1 2.46 0L21 11H3Z",key:"1oe7l6"}],["path",{d:"M12.97 19.77 7 15h12.5l-3.75 4.5a2 2 0 0 1-2.78.27Z",key:"1ts2ri"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ES=R("SatelliteDishIcon",[["path",{d:"M4 10a7.31 7.31 0 0 0 10 10Z",key:"1fzpp3"}],["path",{d:"m9 15 3-3",key:"88sc13"}],["path",{d:"M17 13a6 6 0 0 0-6-6",key:"15cc6u"}],["path",{d:"M21 13A10 10 0 0 0 11 3",key:"11nf8s"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const AS=R("SatelliteIcon",[["path",{d:"M13 7 9 3 5 7l4 4",key:"vyckw6"}],["path",{d:"m17 11 4 4-4 4-4-4",key:"rchckc"}],["path",{d:"m8 12 4 4 6-6-4-4Z",key:"1sshf7"}],["path",{d:"m16 8 3-3",key:"x428zp"}],["path",{d:"M9 21a6 6 0 0 0-6-6",key:"1iajcf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const LS=R("SaveAllIcon",[["path",{d:"M6 4a2 2 0 0 1 2-2h10l4 4v10.2a2 2 0 0 1-2 1.8H8a2 2 0 0 1-2-2Z",key:"1unput"}],["path",{d:"M10 2v4h6",key:"1p5sg6"}],["path",{d:"M18 18v-7h-8v7",key:"1oniuk"}],["path",{d:"M18 22H4a2 2 0 0 1-2-2V6",key:"pblm9e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IS=R("SaveIcon",[["path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z",key:"1owoqh"}],["polyline",{points:"17 21 17 13 7 13 7 21",key:"1md35c"}],["polyline",{points:"7 3 7 8 15 8",key:"8nz8an"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Md=R("Scale3dIcon",[["circle",{cx:"19",cy:"19",r:"2",key:"17f5cg"}],["circle",{cx:"5",cy:"5",r:"2",key:"1gwv83"}],["path",{d:"M5 7v12h12",key:"vtaa4r"}],["path",{d:"m5 19 6-6",key:"jh6hbb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const VS=R("ScaleIcon",[["path",{d:"m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"7g6ntu"}],["path",{d:"m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"ijws7r"}],["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2",key:"3gwbw2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const MS=R("ScalingIcon",[["path",{d:"M21 3 9 15",key:"15kdhq"}],["path",{d:"M12 3H3v18h18v-9",key:"8suug0"}],["path",{d:"M16 3h5v5",key:"1806ms"}],["path",{d:"M14 15H9v-5",key:"pi4jk9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const TS=R("ScanBarcodeIcon",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["path",{d:"M8 7v10",key:"23sfjj"}],["path",{d:"M12 7v10",key:"jspqdw"}],["path",{d:"M17 7v10",key:"578dap"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const DS=R("ScanEyeIcon",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M5 12s2.5-5 7-5 7 5 7 5-2.5 5-7 5-7-5-7-5",key:"nhuolu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const PS=R("ScanFaceIcon",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["path",{d:"M9 9h.01",key:"1q5me6"}],["path",{d:"M15 9h.01",key:"x1ddxp"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const US=R("ScanLineIcon",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["path",{d:"M7 12h10",key:"b7w52i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const RS=R("ScanSearchIcon",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"m16 16-1.9-1.9",key:"1dq9hf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OS=R("ScanTextIcon",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["path",{d:"M7 8h8",key:"1jbsf9"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M7 16h6",key:"1vyc9m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const FS=R("ScanIcon",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NS=R("ScatterChartIcon",[["circle",{cx:"7.5",cy:"7.5",r:".5",key:"1x97lo"}],["circle",{cx:"18.5",cy:"5.5",r:".5",key:"56iowl"}],["circle",{cx:"11.5",cy:"11.5",r:".5",key:"m9xkw9"}],["circle",{cx:"7.5",cy:"16.5",r:".5",key:"14ln9z"}],["circle",{cx:"17.5",cy:"14.5",r:".5",key:"14qxqt"}],["path",{d:"M3 3v18h18",key:"1s2lah"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jS=R("School2Icon",[["circle",{cx:"12",cy:"10",r:"1",key:"1gnqs8"}],["path",{d:"M22 20V8h-4l-6-4-6 4H2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2Z",key:"8z0lq4"}],["path",{d:"M6 17v.01",key:"roodi6"}],["path",{d:"M6 13v.01",key:"67c122"}],["path",{d:"M18 17v.01",key:"12ktxm"}],["path",{d:"M18 13v.01",key:"tn1rt1"}],["path",{d:"M14 22v-5a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v5",key:"jfgdp0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HS=R("SchoolIcon",[["path",{d:"m4 6 8-4 8 4",key:"1q0ilc"}],["path",{d:"m18 10 4 2v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-8l4-2",key:"1vwozw"}],["path",{d:"M14 22v-4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v4",key:"cpkuc4"}],["path",{d:"M18 5v17",key:"1sw6gf"}],["path",{d:"M6 5v17",key:"1xfsm0"}],["circle",{cx:"12",cy:"9",r:"2",key:"1092wv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qS=R("ScissorsLineDashedIcon",[["path",{d:"M5.42 9.42 8 12",key:"12pkuq"}],["circle",{cx:"4",cy:"8",r:"2",key:"107mxr"}],["path",{d:"m14 6-8.58 8.58",key:"gvzu5l"}],["circle",{cx:"4",cy:"16",r:"2",key:"1ehqvc"}],["path",{d:"M10.8 14.8 14 18",key:"ax7m9r"}],["path",{d:"M16 12h-2",key:"10asgb"}],["path",{d:"M22 12h-2",key:"14jgyd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zS=R("ScissorsSquareDashedBottomIcon",[["path",{d:"M4 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2",key:"1vzg26"}],["path",{d:"M10 22H8",key:"euku7a"}],["path",{d:"M16 22h-2",key:"18d249"}],["circle",{cx:"8",cy:"8",r:"2",key:"14cg06"}],["path",{d:"M9.414 9.414 12 12",key:"qz4lzr"}],["path",{d:"M14.8 14.8 18 18",key:"11flf1"}],["circle",{cx:"8",cy:"16",r:"2",key:"1acxsx"}],["path",{d:"m18 6-8.586 8.586",key:"11kzk1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const BS=R("ScissorsSquareIcon",[["rect",{width:"20",height:"20",x:"2",y:"2",rx:"2",key:"1btzen"}],["circle",{cx:"8",cy:"8",r:"2",key:"14cg06"}],["path",{d:"M9.414 9.414 12 12",key:"qz4lzr"}],["path",{d:"M14.8 14.8 18 18",key:"11flf1"}],["circle",{cx:"8",cy:"16",r:"2",key:"1acxsx"}],["path",{d:"m18 6-8.586 8.586",key:"11kzk1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const GS=R("ScissorsIcon",[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M8.12 8.12 12 12",key:"1alkpv"}],["path",{d:"M20 4 8.12 15.88",key:"xgtan2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M14.8 14.8 20 20",key:"ptml3r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const WS=R("ScreenShareOffIcon",[["path",{d:"M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3",key:"i8wdob"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"m22 3-5 5",key:"12jva0"}],["path",{d:"m17 3 5 5",key:"k36vhe"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ZS=R("ScreenShareIcon",[["path",{d:"M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3",key:"i8wdob"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"m17 8 5-5",key:"fqif7o"}],["path",{d:"M17 3h5v5",key:"1o3tu8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const KS=R("ScrollTextIcon",[["path",{d:"M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4",key:"13a6an"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M15 12h-5",key:"r7krc0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const YS=R("ScrollIcon",[["path",{d:"M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4",key:"13a6an"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const XS=R("SearchCheckIcon",[["path",{d:"m8 11 2 2 4-4",key:"1sed1v"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const QS=R("SearchCodeIcon",[["path",{d:"m9 9-2 2 2 2",key:"17gsfh"}],["path",{d:"m13 13 2-2-2-2",key:"186z8k"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const JS=R("SearchSlashIcon",[["path",{d:"m13.5 8.5-5 5",key:"1cs55j"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e6=R("SearchXIcon",[["path",{d:"m13.5 8.5-5 5",key:"1cs55j"}],["path",{d:"m8.5 8.5 5 5",key:"a8mexj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t6=R("SearchIcon",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Td=R("SendHorizontalIcon",[["path",{d:"m3 3 3 9-3 9 19-9Z",key:"1aobqy"}],["path",{d:"M6 12h16",key:"s4cdu5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a6=R("SendToBackIcon",[["rect",{x:"14",y:"14",width:"8",height:"8",rx:"2",key:"1b0bso"}],["rect",{x:"2",y:"2",width:"8",height:"8",rx:"2",key:"1x09vl"}],["path",{d:"M7 14v1a2 2 0 0 0 2 2h1",key:"pao6x6"}],["path",{d:"M14 7h1a2 2 0 0 1 2 2v1",key:"19tdru"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s6=R("SendIcon",[["path",{d:"m22 2-7 20-4-9-9-4Z",key:"1q3vgg"}],["path",{d:"M22 2 11 13",key:"nzbqef"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o6=R("SeparatorHorizontalIcon",[["line",{x1:"3",x2:"21",y1:"12",y2:"12",key:"10d38w"}],["polyline",{points:"8 8 12 4 16 8",key:"zo8t4w"}],["polyline",{points:"16 16 12 20 8 16",key:"1oyrid"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n6=R("SeparatorVerticalIcon",[["line",{x1:"12",x2:"12",y1:"3",y2:"21",key:"1efggb"}],["polyline",{points:"8 8 4 12 8 16",key:"bnfmv4"}],["polyline",{points:"16 16 20 12 16 8",key:"u90052"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l6=R("ServerCogIcon",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5",key:"tn8das"}],["path",{d:"M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5",key:"1g2pve"}],["path",{d:"M6 6h.01",key:"1utrut"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"m15.7 13.4-.9-.3",key:"1jwmzr"}],["path",{d:"m9.2 10.9-.9-.3",key:"qapnim"}],["path",{d:"m10.6 15.7.3-.9",key:"quwk0k"}],["path",{d:"m13.6 15.7-.4-1",key:"cb9xp7"}],["path",{d:"m10.8 9.3-.4-1",key:"1uaiz5"}],["path",{d:"m8.3 13.6 1-.4",key:"s6srou"}],["path",{d:"m14.7 10.8 1-.4",key:"4d31cq"}],["path",{d:"m13.4 8.3-.3.9",key:"1bm987"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r6=R("ServerCrashIcon",[["path",{d:"M6 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-2",key:"4b9dqc"}],["path",{d:"M6 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-2",key:"22nnkd"}],["path",{d:"M6 6h.01",key:"1utrut"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"m13 6-4 6h6l-4 6",key:"14hqih"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i6=R("ServerOffIcon",[["path",{d:"M7 2h13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-5",key:"bt2siv"}],["path",{d:"M10 10 2.5 2.5C2 2 2 2.5 2 5v3a2 2 0 0 0 2 2h6z",key:"1hjrv1"}],["path",{d:"M22 17v-1a2 2 0 0 0-2-2h-1",key:"1iynyr"}],["path",{d:"M4 14a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16.5l1-.5.5.5-8-8H4z",key:"161ggg"}],["path",{d:"M6 18h.01",key:"uhywen"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d6=R("ServerIcon",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c6=R("Settings2Icon",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u6=R("SettingsIcon",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p6=R("ShapesIcon",[["path",{d:"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z",key:"1bo67w"}],["rect",{x:"3",y:"14",width:"7",height:"7",rx:"1",key:"1bkyp8"}],["circle",{cx:"17.5",cy:"17.5",r:"3.5",key:"w3z12y"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _6=R("Share2Icon",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m6=R("ShareIcon",[["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["polyline",{points:"16 6 12 2 8 6",key:"m901s6"}],["line",{x1:"12",x2:"12",y1:"2",y2:"15",key:"1p0rca"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v6=R("SheetIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["line",{x1:"3",x2:"21",y1:"9",y2:"9",key:"1vqk6q"}],["line",{x1:"3",x2:"21",y1:"15",y2:"15",key:"o2sbyz"}],["line",{x1:"9",x2:"9",y1:"9",y2:"21",key:"1ib60c"}],["line",{x1:"15",x2:"15",y1:"9",y2:"21",key:"1n26ft"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h6=R("ShellIcon",[["path",{d:"M14 11a2 2 0 1 1-4 0 4 4 0 0 1 8 0 6 6 0 0 1-12 0 8 8 0 0 1 16 0 10 10 0 1 1-20 0 11.93 11.93 0 0 1 2.42-7.22 2 2 0 1 1 3.16 2.44",key:"1cn552"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f6=R("ShieldAlertIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g6=R("ShieldBanIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"m4 5 14 12",key:"1ta6nf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y6=R("ShieldCheckIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b6=R("ShieldEllipsisIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M12 11h.01",key:"z322tv"}],["path",{d:"M16 11h.01",key:"xkw8gn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w6=R("ShieldHalfIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"M12 22V2",key:"zs6s6o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k6=R("ShieldMinusIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"M8 11h8",key:"vwpz6n"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x6=R("ShieldOffIcon",[["path",{d:"M19.7 14a6.9 6.9 0 0 0 .3-2V5l-8-3-3.2 1.2",key:"342pvf"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M4.7 4.7 4 5v7c0 6 8 10 8 10a20.3 20.3 0 0 0 5.62-4.38",key:"p0ycf4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $6=R("ShieldPlusIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"M8 11h8",key:"vwpz6n"}],["path",{d:"M12 15V7",key:"1ycneb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C6=R("ShieldQuestionIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dd=R("ShieldXIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}],["path",{d:"m14.5 9-5 5",key:"1m49dw"}],["path",{d:"m9.5 9 5 5",key:"wyx7zg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S6=R("ShieldIcon",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E6=R("ShipWheelIcon",[["circle",{cx:"12",cy:"12",r:"8",key:"46899m"}],["path",{d:"M12 2v7.5",key:"1e5rl5"}],["path",{d:"m19 5-5.23 5.23",key:"1ezxxf"}],["path",{d:"M22 12h-7.5",key:"le1719"}],["path",{d:"m19 19-5.23-5.23",key:"p3fmgn"}],["path",{d:"M12 14.5V22",key:"dgcmos"}],["path",{d:"M10.23 13.77 5 19",key:"qwopd4"}],["path",{d:"M9.5 12H2",key:"r7bup8"}],["path",{d:"M10.23 10.23 5 5",key:"k2y7lj"}],["circle",{cx:"12",cy:"12",r:"2.5",key:"ix0uyj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A6=R("ShipIcon",[["path",{d:"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1 .6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"iegodh"}],["path",{d:"M19.38 20A11.6 11.6 0 0 0 21 14l-9-4-9 4c0 2.9.94 5.34 2.81 7.76",key:"fp8vka"}],["path",{d:"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6",key:"qpkstq"}],["path",{d:"M12 10v4",key:"1kjpxc"}],["path",{d:"M12 2v3",key:"qbqxhf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L6=R("ShirtIcon",[["path",{d:"M20.38 3.46 16 2a4 4 0 0 1-8 0L3.62 3.46a2 2 0 0 0-1.34 2.23l.58 3.47a1 1 0 0 0 .99.84H6v10c0 1.1.9 2 2 2h8a2 2 0 0 0 2-2V10h2.15a1 1 0 0 0 .99-.84l.58-3.47a2 2 0 0 0-1.34-2.23z",key:"1wgbhj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I6=R("ShoppingBagIcon",[["path",{d:"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z",key:"hou9p0"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M16 10a4 4 0 0 1-8 0",key:"1ltviw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V6=R("ShoppingBasketIcon",[["path",{d:"m5 11 4-7",key:"116ra9"}],["path",{d:"m19 11-4-7",key:"cnml18"}],["path",{d:"M2 11h20",key:"3eubbj"}],["path",{d:"m3.5 11 1.6 7.4a2 2 0 0 0 2 1.6h9.8c.9 0 1.8-.7 2-1.6l1.7-7.4",key:"1x2lvw"}],["path",{d:"m9 11 1 9",key:"1ojof7"}],["path",{d:"M4.5 15.5h15",key:"13mye1"}],["path",{d:"m15 11-1 9",key:"5wnq3a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M6=R("ShoppingCartIcon",[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T6=R("ShovelIcon",[["path",{d:"M2 22v-5l5-5 5 5-5 5z",key:"1fh25c"}],["path",{d:"M9.5 14.5 16 8",key:"1smz5x"}],["path",{d:"m17 2 5 5-.5.5a3.53 3.53 0 0 1-5 0s0 0 0 0a3.53 3.53 0 0 1 0-5L17 2",key:"1q8uv5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D6=R("ShowerHeadIcon",[["path",{d:"m4 4 2.5 2.5",key:"uv2vmf"}],["path",{d:"M13.5 6.5a4.95 4.95 0 0 0-7 7",key:"frdkwv"}],["path",{d:"M15 5 5 15",key:"1ag8rq"}],["path",{d:"M14 17v.01",key:"eokfpp"}],["path",{d:"M10 16v.01",key:"14uyyl"}],["path",{d:"M13 13v.01",key:"1v1k97"}],["path",{d:"M16 10v.01",key:"5169yg"}],["path",{d:"M11 20v.01",key:"cj92p8"}],["path",{d:"M17 14v.01",key:"11cswd"}],["path",{d:"M20 11v.01",key:"19e0od"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P6=R("ShrinkIcon",[["path",{d:"m15 15 6 6m-6-6v4.8m0-4.8h4.8",key:"17vawe"}],["path",{d:"M9 19.8V15m0 0H4.2M9 15l-6 6",key:"chjx8e"}],["path",{d:"M15 4.2V9m0 0h4.8M15 9l6-6",key:"lav6yq"}],["path",{d:"M9 4.2V9m0 0H4.2M9 9 3 3",key:"1pxi2q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U6=R("ShrubIcon",[["path",{d:"M12 22v-7l-2-2",key:"eqv9mc"}],["path",{d:"M17 8v.8A6 6 0 0 1 13.8 20v0H10v0A6.5 6.5 0 0 1 7 8h0a5 5 0 0 1 10 0Z",key:"12jcau"}],["path",{d:"m14 14-2 2",key:"847xa2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R6=R("ShuffleIcon",[["path",{d:"M2 18h1.4c1.3 0 2.5-.6 3.3-1.7l6.1-8.6c.7-1.1 2-1.7 3.3-1.7H22",key:"1wmou1"}],["path",{d:"m18 2 4 4-4 4",key:"pucp1d"}],["path",{d:"M2 6h1.9c1.5 0 2.9.9 3.6 2.2",key:"10bdb2"}],["path",{d:"M22 18h-5.9c-1.3 0-2.6-.7-3.3-1.8l-.5-.8",key:"vgxac0"}],["path",{d:"m18 14 4 4-4 4",key:"10pe0f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O6=R("SigmaSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M16 8.9V7H8l4 5-4 5h8v-1.9",key:"9nih0i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F6=R("SigmaIcon",[["path",{d:"M18 7V4H6l6 8-6 8h12v-3",key:"zis8ev"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N6=R("SignalHighIcon",[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}],["path",{d:"M17 20V8",key:"1tkaf5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j6=R("SignalLowIcon",[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H6=R("SignalMediumIcon",[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q6=R("SignalZeroIcon",[["path",{d:"M2 20h.01",key:"4haj6o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z6=R("SignalIcon",[["path",{d:"M2 20h.01",key:"4haj6o"}],["path",{d:"M7 20v-4",key:"j294jx"}],["path",{d:"M12 20v-8",key:"i3yub9"}],["path",{d:"M17 20V8",key:"1tkaf5"}],["path",{d:"M22 4v16",key:"sih9yq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B6=R("SignpostBigIcon",[["path",{d:"M10 9H4L2 7l2-2h6",key:"1hq7x2"}],["path",{d:"M14 5h6l2 2-2 2h-6",key:"bv62ej"}],["path",{d:"M10 22V4a2 2 0 1 1 4 0v18",key:"eqpcf2"}],["path",{d:"M8 22h8",key:"rmew8v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G6=R("SignpostIcon",[["path",{d:"M12 3v3",key:"1n5kay"}],["path",{d:"M18.5 13h-13L2 9.5 5.5 6h13L22 9.5Z",key:"27os56"}],["path",{d:"M12 13v8",key:"1l5pq0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W6=R("SirenIcon",[["path",{d:"M7 12a5 5 0 0 1 5-5v0a5 5 0 0 1 5 5v6H7v-6Z",key:"rmc51c"}],["path",{d:"M5 20a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2H5v-2Z",key:"yyvmjy"}],["path",{d:"M21 12h1",key:"jtio3y"}],["path",{d:"M18.5 4.5 18 5",key:"g5sp9y"}],["path",{d:"M2 12h1",key:"1uaihz"}],["path",{d:"M12 2v1",key:"11qlp1"}],["path",{d:"m4.929 4.929.707.707",key:"1i51kw"}],["path",{d:"M12 12v6",key:"3ahymv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z6=R("SkipBackIcon",[["polygon",{points:"19 20 9 12 19 4 19 20",key:"o2sva"}],["line",{x1:"5",x2:"5",y1:"19",y2:"5",key:"1ocqjk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const K6=R("SkipForwardIcon",[["polygon",{points:"5 4 15 12 5 20 5 4",key:"16p6eg"}],["line",{x1:"19",x2:"19",y1:"5",y2:"19",key:"futhcm"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y6=R("SkullIcon",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["path",{d:"M8 20v2h8v-2",key:"ded4og"}],["path",{d:"m12.5 17-.5-1-.5 1h1z",key:"3me087"}],["path",{d:"M16 20a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20",key:"xq9p5u"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X6=R("SlackIcon",[["rect",{width:"3",height:"8",x:"13",y:"2",rx:"1.5",key:"diqz80"}],["path",{d:"M19 8.5V10h1.5A1.5 1.5 0 1 0 19 8.5",key:"183iwg"}],["rect",{width:"3",height:"8",x:"8",y:"14",rx:"1.5",key:"hqg7r1"}],["path",{d:"M5 15.5V14H3.5A1.5 1.5 0 1 0 5 15.5",key:"76g71w"}],["rect",{width:"8",height:"3",x:"14",y:"13",rx:"1.5",key:"1kmz0a"}],["path",{d:"M15.5 19H14v1.5a1.5 1.5 0 1 0 1.5-1.5",key:"jc4sz0"}],["rect",{width:"8",height:"3",x:"2",y:"8",rx:"1.5",key:"1omvl4"}],["path",{d:"M8.5 5H10V3.5A1.5 1.5 0 1 0 8.5 5",key:"16f3cl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q6=R("SlashIcon",[["path",{d:"M22 2 2 22",key:"y4kqgn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J6=R("SliceIcon",[["path",{d:"m8 14-6 6h9v-3",key:"zo3j9a"}],["path",{d:"M18.37 3.63 8 14l3 3L21.37 6.63a2.12 2.12 0 1 0-3-3Z",key:"1dzx0j"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eE=R("SlidersHorizontalIcon",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tE=R("SlidersIcon",[["line",{x1:"4",x2:"4",y1:"21",y2:"14",key:"1p332r"}],["line",{x1:"4",x2:"4",y1:"10",y2:"3",key:"gb41h5"}],["line",{x1:"12",x2:"12",y1:"21",y2:"12",key:"hf2csr"}],["line",{x1:"12",x2:"12",y1:"8",y2:"3",key:"1kfi7u"}],["line",{x1:"20",x2:"20",y1:"21",y2:"16",key:"1lhrwl"}],["line",{x1:"20",x2:"20",y1:"12",y2:"3",key:"16vvfq"}],["line",{x1:"2",x2:"6",y1:"14",y2:"14",key:"1uebub"}],["line",{x1:"10",x2:"14",y1:"8",y2:"8",key:"1yglbp"}],["line",{x1:"18",x2:"22",y1:"16",y2:"16",key:"1jxqpz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aE=R("SmartphoneChargingIcon",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12.667 8 10 12h4l-2.667 4",key:"h9lk2d"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sE=R("SmartphoneNfcIcon",[["rect",{width:"7",height:"12",x:"2",y:"6",rx:"1",key:"5nje8w"}],["path",{d:"M13 8.32a7.43 7.43 0 0 1 0 7.36",key:"1g306n"}],["path",{d:"M16.46 6.21a11.76 11.76 0 0 1 0 11.58",key:"uqvjvo"}],["path",{d:"M19.91 4.1a15.91 15.91 0 0 1 .01 15.8",key:"ujntz3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oE=R("SmartphoneIcon",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nE=R("SmilePlusIcon",[["path",{d:"M22 11v1a10 10 0 1 1-9-10",key:"ew0xw9"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}],["path",{d:"M16 5h6",key:"1vod17"}],["path",{d:"M19 2v6",key:"4bpg5p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lE=R("SmileIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rE=R("SnailIcon",[["path",{d:"M2 13a6 6 0 1 0 12 0 4 4 0 1 0-8 0 2 2 0 0 0 4 0",key:"hneq2s"}],["circle",{cx:"10",cy:"13",r:"8",key:"194lz3"}],["path",{d:"M2 21h12c4.4 0 8-3.6 8-8V7a2 2 0 1 0-4 0v6",key:"ixqyt7"}],["path",{d:"M18 3 19.1 5.2",key:"9tjm43"}],["path",{d:"M22 3 20.9 5.2",key:"j3odrs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iE=R("SnowflakeIcon",[["line",{x1:"2",x2:"22",y1:"12",y2:"12",key:"1dnqot"}],["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"m20 16-4-4 4-4",key:"rquw4f"}],["path",{d:"m4 8 4 4-4 4",key:"12s3z9"}],["path",{d:"m16 4-4 4-4-4",key:"1tumq1"}],["path",{d:"m8 20 4-4 4 4",key:"9p200w"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dE=R("SofaIcon",[["path",{d:"M20 9V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3",key:"1dgpiv"}],["path",{d:"M2 11v5a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v2H6v-2a2 2 0 0 0-4 0Z",key:"u5qfb7"}],["path",{d:"M4 18v2",key:"jwo5n2"}],["path",{d:"M20 18v2",key:"1ar1qi"}],["path",{d:"M12 4v9",key:"oqhhn3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cE=R("SoupIcon",[["path",{d:"M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z",key:"4rw317"}],["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M19.5 12 22 6",key:"shfsr5"}],["path",{d:"M16.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.73 1.62",key:"rpc6vp"}],["path",{d:"M11.25 3c.27.1.8.53.74 1.36-.05.83-.93 1.2-.98 2.02-.06.78.33 1.24.72 1.62",key:"1lf63m"}],["path",{d:"M6.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.74 1.62",key:"97tijn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uE=R("SpaceIcon",[["path",{d:"M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1",key:"lt2kga"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pE=R("SpadeIcon",[["path",{d:"M5 9c-1.5 1.5-3 3.2-3 5.5A5.5 5.5 0 0 0 7.5 20c1.8 0 3-.5 4.5-2 1.5 1.5 2.7 2 4.5 2a5.5 5.5 0 0 0 5.5-5.5c0-2.3-1.5-4-3-5.5l-7-7-7 7Z",key:"40bo9n"}],["path",{d:"M12 18v4",key:"jadmvz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _E=R("SparkleIcon",[["path",{d:"m12 3-1.9 5.8a2 2 0 0 1-1.287 1.288L3 12l5.8 1.9a2 2 0 0 1 1.288 1.287L12 21l1.9-5.8a2 2 0 0 1 1.287-1.288L21 12l-5.8-1.9a2 2 0 0 1-1.288-1.287Z",key:"nraa5p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pd=R("SparklesIcon",[["path",{d:"m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z",key:"17u4zn"}],["path",{d:"M5 3v4",key:"bklmnn"}],["path",{d:"M19 17v4",key:"iiml17"}],["path",{d:"M3 5h4",key:"nem4j1"}],["path",{d:"M17 19h4",key:"lbex7p"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mE=R("SpeakerIcon",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["path",{d:"M12 6h.01",key:"1vi96p"}],["circle",{cx:"12",cy:"14",r:"4",key:"1jruaj"}],["path",{d:"M12 14h.01",key:"1etili"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vE=R("SpeechIcon",[["path",{d:"M8.8 20v-4.1l1.9.2a2.3 2.3 0 0 0 2.164-2.1V8.3A5.37 5.37 0 0 0 2 8.25c0 2.8.656 3.054 1 4.55a5.77 5.77 0 0 1 .029 2.758L2 20",key:"11atix"}],["path",{d:"M19.8 17.8a7.5 7.5 0 0 0 .003-10.603",key:"yol142"}],["path",{d:"M17 15a3.5 3.5 0 0 0-.025-4.975",key:"ssbmkc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hE=R("SpellCheck2Icon",[["path",{d:"m6 16 6-12 6 12",key:"1b4byz"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M4 21c1.1 0 1.1-1 2.3-1s1.1 1 2.3 1c1.1 0 1.1-1 2.3-1 1.1 0 1.1 1 2.3 1 1.1 0 1.1-1 2.3-1 1.1 0 1.1 1 2.3 1 1.1 0 1.1-1 2.3-1",key:"8mdmtu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fE=R("SpellCheckIcon",[["path",{d:"m6 16 6-12 6 12",key:"1b4byz"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"m16 20 2 2 4-4",key:"13tcca"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gE=R("SplineIcon",[["circle",{cx:"19",cy:"5",r:"2",key:"mhkx31"}],["circle",{cx:"5",cy:"19",r:"2",key:"v8kfzx"}],["path",{d:"M5 17A12 12 0 0 1 17 5",key:"1okkup"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yE=R("SplitSquareHorizontalIcon",[["path",{d:"M8 19H5c-1 0-2-1-2-2V7c0-1 1-2 2-2h3",key:"lubmu8"}],["path",{d:"M16 5h3c1 0 2 1 2 2v10c0 1-1 2-2 2h-3",key:"1ag34g"}],["line",{x1:"12",x2:"12",y1:"4",y2:"20",key:"1tx1rr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bE=R("SplitSquareVerticalIcon",[["path",{d:"M5 8V5c0-1 1-2 2-2h10c1 0 2 1 2 2v3",key:"1pi83i"}],["path",{d:"M19 16v3c0 1-1 2-2 2H7c-1 0-2-1-2-2v-3",key:"ido5k7"}],["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wE=R("SplitIcon",[["path",{d:"M16 3h5v5",key:"1806ms"}],["path",{d:"M8 3H3v5",key:"15dfkv"}],["path",{d:"M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3",key:"1qrqzj"}],["path",{d:"m15 9 6-6",key:"ko1vev"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kE=R("SprayCanIcon",[["path",{d:"M3 3h.01",key:"159qn6"}],["path",{d:"M7 5h.01",key:"1hq22a"}],["path",{d:"M11 7h.01",key:"1osv80"}],["path",{d:"M3 7h.01",key:"1xzrh3"}],["path",{d:"M7 9h.01",key:"19b3jx"}],["path",{d:"M3 11h.01",key:"1eifu7"}],["rect",{width:"4",height:"4",x:"15",y:"5",key:"mri9e4"}],["path",{d:"m19 9 2 2v10c0 .6-.4 1-1 1h-6c-.6 0-1-.4-1-1V11l2-2",key:"aib6hk"}],["path",{d:"m13 14 8-2",key:"1d7bmk"}],["path",{d:"m13 19 8-2",key:"1y2vml"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xE=R("SproutIcon",[["path",{d:"M7 20h10",key:"e6iznv"}],["path",{d:"M10 20c5.5-2.5.8-6.4 3-10",key:"161w41"}],["path",{d:"M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z",key:"9gtqwd"}],["path",{d:"M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z",key:"bkxnd2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $E=R("SquareAsteriskIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"m8.5 14 7-4",key:"12hpby"}],["path",{d:"m8.5 10 7 4",key:"wwy2dy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const CE=R("SquareCodeIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m10 10-2 2 2 2",key:"p6et6i"}],["path",{d:"m14 14 2-2-2-2",key:"m075q2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const SE=R("SquareDashedBottomCodeIcon",[["path",{d:"m10 10-2 2 2 2",key:"p6et6i"}],["path",{d:"m14 14 2-2-2-2",key:"m075q2"}],["path",{d:"M5 21a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2",key:"as5y1o"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M14 21h1",key:"v9vybs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const EE=R("SquareDashedBottomIcon",[["path",{d:"M5 21a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2",key:"as5y1o"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M14 21h1",key:"v9vybs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const AE=R("SquareDotIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const LE=R("SquareEqualIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 10h10",key:"1101jm"}],["path",{d:"M7 14h10",key:"1mhdw3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IE=R("SquareSlashIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["line",{x1:"9",x2:"15",y1:"15",y2:"9",key:"1dfufj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const VE=R("SquareStackIcon",[["path",{d:"M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2",key:"4i38lg"}],["path",{d:"M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2",key:"mlte4a"}],["rect",{width:"8",height:"8",x:"14",y:"14",rx:"2",key:"1fa9i4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ud=R("SquareUserRoundIcon",[["path",{d:"M18 21a6 6 0 0 0-12 0",key:"kaz2du"}],["circle",{cx:"12",cy:"11",r:"4",key:"1gt34v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rd=R("SquareUserIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 21v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2",key:"1m6ac2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ME=R("SquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const TE=R("SquircleIcon",[["path",{d:"M12 3c7.2 0 9 1.8 9 9s-1.8 9-9 9-9-1.8-9-9 1.8-9 9-9",key:"garfkc"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const DE=R("SquirrelIcon",[["path",{d:"M15.236 22a3 3 0 0 0-2.2-5",key:"21bitc"}],["path",{d:"M16 20a3 3 0 0 1 3-3h1a2 2 0 0 0 2-2v-2a4 4 0 0 0-4-4V4",key:"oh0fg0"}],["path",{d:"M18 13h.01",key:"9veqaj"}],["path",{d:"M18 6a4 4 0 0 0-4 4 7 7 0 0 0-7 7c0-5 4-5 4-10.5a4.5 4.5 0 1 0-9 0 2.5 2.5 0 0 0 5 0C7 10 3 11 3 17c0 2.8 2.2 5 5 5h10",key:"980v8a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const PE=R("StampIcon",[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M19.27 13.73A2.5 2.5 0 0 0 17.5 13h-11A2.5 2.5 0 0 0 4 15.5V17a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-1.5c0-.66-.26-1.3-.73-1.77Z",key:"1sy9ra"}],["path",{d:"M14 13V8.5C14 7 15 7 15 5a3 3 0 0 0-3-3c-1.66 0-3 1-3 3s1 2 1 3.5V13",key:"cnxgux"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const UE=R("StarHalfIcon",[["path",{d:"M12 17.8 5.8 21 7 14.1 2 9.3l7-1L12 2",key:"nare05"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const RE=R("StarOffIcon",[["path",{d:"M8.34 8.34 2 9.27l5 4.87L5.82 21 12 17.77 18.18 21l-.59-3.43",key:"16m0ql"}],["path",{d:"M18.42 12.76 22 9.27l-6.91-1L12 2l-1.44 2.91",key:"1vt8nq"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OE=R("StarIcon",[["polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2",key:"8f66p6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const FE=R("StepBackIcon",[["line",{x1:"18",x2:"18",y1:"20",y2:"4",key:"cun8e5"}],["polygon",{points:"14,20 4,12 14,4",key:"ypakod"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NE=R("StepForwardIcon",[["line",{x1:"6",x2:"6",y1:"4",y2:"20",key:"fy8qot"}],["polygon",{points:"10,4 20,12 10,20",key:"1mc1pf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jE=R("StethoscopeIcon",[["path",{d:"M4.8 2.3A.3.3 0 1 0 5 2H4a2 2 0 0 0-2 2v5a6 6 0 0 0 6 6v0a6 6 0 0 0 6-6V4a2 2 0 0 0-2-2h-1a.2.2 0 1 0 .3.3",key:"1jd90r"}],["path",{d:"M8 15v1a6 6 0 0 0 6 6v0a6 6 0 0 0 6-6v-4",key:"126ukv"}],["circle",{cx:"20",cy:"10",r:"2",key:"ts1r5v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HE=R("StickerIcon",[["path",{d:"M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z",key:"1wis1t"}],["path",{d:"M15 3v6h6",key:"edgan2"}],["path",{d:"M10 16s.8 1 2 1c1.3 0 2-1 2-1",key:"1vvgv3"}],["path",{d:"M8 13h0",key:"jdup5h"}],["path",{d:"M16 13h0",key:"l4i2ga"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qE=R("StickyNoteIcon",[["path",{d:"M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z",key:"1wis1t"}],["path",{d:"M15 3v6h6",key:"edgan2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zE=R("StopCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{width:"6",height:"6",x:"9",y:"9",key:"1wrtvo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const BE=R("StoreIcon",[["path",{d:"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7",key:"ztvudi"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["path",{d:"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4",key:"2ebpfo"}],["path",{d:"M2 7h20",key:"1fcdvo"}],["path",{d:"M22 7v3a2 2 0 0 1-2 2v0a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12v0a2 2 0 0 1-2-2V7",key:"jon5kx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const GE=R("StretchHorizontalIcon",[["rect",{width:"20",height:"6",x:"2",y:"4",rx:"2",key:"qdearl"}],["rect",{width:"20",height:"6",x:"2",y:"14",rx:"2",key:"1xrn6j"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const WE=R("StretchVerticalIcon",[["rect",{width:"6",height:"20",x:"4",y:"2",rx:"2",key:"19qu7m"}],["rect",{width:"6",height:"20",x:"14",y:"2",rx:"2",key:"24v0nk"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ZE=R("StrikethroughIcon",[["path",{d:"M16 4H9a3 3 0 0 0-2.83 4",key:"43sutm"}],["path",{d:"M14 12a4 4 0 0 1 0 8H6",key:"nlfj13"}],["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const KE=R("SubscriptIcon",[["path",{d:"m4 5 8 8",key:"1eunvl"}],["path",{d:"m12 5-8 8",key:"1ah0jp"}],["path",{d:"M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07",key:"e8ta8j"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const YE=R("SubtitlesIcon",[["path",{d:"M7 13h4",key:"1m1xj0"}],["path",{d:"M15 13h2",key:"vgjay3"}],["path",{d:"M7 9h2",key:"1q072n"}],["path",{d:"M13 9h4",key:"o7fxw0"}],["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2Z",key:"5somay"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const XE=R("SunDimIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 4h.01",key:"1ujb9j"}],["path",{d:"M20 12h.01",key:"1ykeid"}],["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M4 12h.01",key:"158zrr"}],["path",{d:"M17.657 6.343h.01",key:"31pqzk"}],["path",{d:"M17.657 17.657h.01",key:"jehnf4"}],["path",{d:"M6.343 17.657h.01",key:"gdk6ow"}],["path",{d:"M6.343 6.343h.01",key:"1uurf0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const QE=R("SunMediumIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 3v1",key:"1asbbs"}],["path",{d:"M12 20v1",key:"1wcdkc"}],["path",{d:"M3 12h1",key:"lp3yf2"}],["path",{d:"M20 12h1",key:"1vloll"}],["path",{d:"m18.364 5.636-.707.707",key:"1hakh0"}],["path",{d:"m6.343 17.657-.707.707",key:"18m9nf"}],["path",{d:"m5.636 5.636.707.707",key:"1xv1c5"}],["path",{d:"m17.657 17.657.707.707",key:"vl76zb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const JE=R("SunMoonIcon",[["path",{d:"M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4",key:"1fu5g2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.9 4.9 1.4 1.4",key:"b9915j"}],["path",{d:"m17.7 17.7 1.4 1.4",key:"qc3ed3"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.3 17.7-1.4 1.4",key:"5gca6"}],["path",{d:"m19.1 4.9-1.4 1.4",key:"wpu9u6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eA=R("SunSnowIcon",[["path",{d:"M10 9a3 3 0 1 0 0 6",key:"6zmtdl"}],["path",{d:"M2 12h1",key:"1uaihz"}],["path",{d:"M14 21V3",key:"1llu3z"}],["path",{d:"M10 4V3",key:"pkzwkn"}],["path",{d:"M10 21v-1",key:"1u8rkd"}],["path",{d:"m3.64 18.36.7-.7",key:"105rm9"}],["path",{d:"m4.34 6.34-.7-.7",key:"d3unjp"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"m17 4-3 3",key:"15jcng"}],["path",{d:"m14 17 3 3",key:"6tlq38"}],["path",{d:"m21 15-3-3 3-3",key:"1nlnje"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tA=R("SunIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aA=R("SunriseIcon",[["path",{d:"M12 2v8",key:"1q4o3n"}],["path",{d:"m4.93 10.93 1.41 1.41",key:"2a7f42"}],["path",{d:"M2 18h2",key:"j10viu"}],["path",{d:"M20 18h2",key:"wocana"}],["path",{d:"m19.07 10.93-1.41 1.41",key:"15zs5n"}],["path",{d:"M22 22H2",key:"19qnx5"}],["path",{d:"m8 6 4-4 4 4",key:"ybng9g"}],["path",{d:"M16 18a4 4 0 0 0-8 0",key:"1lzouq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sA=R("SunsetIcon",[["path",{d:"M12 10V2",key:"16sf7g"}],["path",{d:"m4.93 10.93 1.41 1.41",key:"2a7f42"}],["path",{d:"M2 18h2",key:"j10viu"}],["path",{d:"M20 18h2",key:"wocana"}],["path",{d:"m19.07 10.93-1.41 1.41",key:"15zs5n"}],["path",{d:"M22 22H2",key:"19qnx5"}],["path",{d:"m16 6-4 4-4-4",key:"6wukr"}],["path",{d:"M16 18a4 4 0 0 0-8 0",key:"1lzouq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oA=R("SuperscriptIcon",[["path",{d:"m4 19 8-8",key:"hr47gm"}],["path",{d:"m12 19-8-8",key:"1dhhmo"}],["path",{d:"M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06",key:"1dfcux"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nA=R("SwissFrancIcon",[["path",{d:"M10 21V3h8",key:"br2l0g"}],["path",{d:"M6 16h9",key:"2py0wn"}],["path",{d:"M10 9.5h7",key:"13dmhz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lA=R("SwitchCameraIcon",[["path",{d:"M11 19H4a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5",key:"mtk2lu"}],["path",{d:"M13 5h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-5",key:"120jsl"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"m18 22-3-3 3-3",key:"kgdoj7"}],["path",{d:"m6 2 3 3-3 3",key:"1fnbkv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rA=R("SwordIcon",[["polyline",{points:"14.5 17.5 3 6 3 3 6 3 17.5 14.5",key:"1hfsw2"}],["line",{x1:"13",x2:"19",y1:"19",y2:"13",key:"1vrmhu"}],["line",{x1:"16",x2:"20",y1:"16",y2:"20",key:"1bron3"}],["line",{x1:"19",x2:"21",y1:"21",y2:"19",key:"13pww6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iA=R("SwordsIcon",[["polyline",{points:"14.5 17.5 3 6 3 3 6 3 17.5 14.5",key:"1hfsw2"}],["line",{x1:"13",x2:"19",y1:"19",y2:"13",key:"1vrmhu"}],["line",{x1:"16",x2:"20",y1:"16",y2:"20",key:"1bron3"}],["line",{x1:"19",x2:"21",y1:"21",y2:"19",key:"13pww6"}],["polyline",{points:"14.5 6.5 18 3 21 3 21 6 17.5 9.5",key:"hbey2j"}],["line",{x1:"5",x2:"9",y1:"14",y2:"18",key:"1hf58s"}],["line",{x1:"7",x2:"4",y1:"17",y2:"20",key:"pidxm4"}],["line",{x1:"3",x2:"5",y1:"19",y2:"21",key:"1pehsh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dA=R("SyringeIcon",[["path",{d:"m18 2 4 4",key:"22kx64"}],["path",{d:"m17 7 3-3",key:"1w1zoj"}],["path",{d:"M19 9 8.7 19.3c-1 1-2.5 1-3.4 0l-.6-.6c-1-1-1-2.5 0-3.4L15 5",key:"1exhtz"}],["path",{d:"m9 11 4 4",key:"rovt3i"}],["path",{d:"m5 19-3 3",key:"59f2uf"}],["path",{d:"m14 4 6 6",key:"yqp9t2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cA=R("Table2Icon",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uA=R("TablePropertiesIcon",[["path",{d:"M15 3v18",key:"14nvp0"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M21 9H3",key:"1338ky"}],["path",{d:"M21 15H3",key:"9uk58r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pA=R("TableIcon",[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _A=R("TabletSmartphoneIcon",[["rect",{width:"10",height:"14",x:"3",y:"8",rx:"2",key:"1vrsiq"}],["path",{d:"M5 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2h-2.4",key:"1j4zmg"}],["path",{d:"M8 18h.01",key:"lrp35t"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mA=R("TabletIcon",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["line",{x1:"12",x2:"12.01",y1:"18",y2:"18",key:"1dp563"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vA=R("TabletsIcon",[["circle",{cx:"7",cy:"7",r:"5",key:"x29byf"}],["circle",{cx:"17",cy:"17",r:"5",key:"1op1d2"}],["path",{d:"M12 17h10",key:"ls21zv"}],["path",{d:"m3.46 10.54 7.08-7.08",key:"1rehiu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hA=R("TagIcon",[["path",{d:"M12 2H2v10l9.29 9.29c.94.94 2.48.94 3.42 0l6.58-6.58c.94-.94.94-2.48 0-3.42L12 2Z",key:"14b2ls"}],["path",{d:"M7 7h.01",key:"7u93v4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fA=R("TagsIcon",[["path",{d:"M9 5H2v7l6.29 6.29c.94.94 2.48.94 3.42 0l3.58-3.58c.94-.94.94-2.48 0-3.42L9 5Z",key:"gt587u"}],["path",{d:"M6 9.01V9",key:"1flxpt"}],["path",{d:"m15 5 6.3 6.3a2.4 2.4 0 0 1 0 3.4L17 19",key:"1cbfv1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gA=R("Tally1Icon",[["path",{d:"M4 4v16",key:"6qkkli"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yA=R("Tally2Icon",[["path",{d:"M4 4v16",key:"6qkkli"}],["path",{d:"M9 4v16",key:"81ygyz"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bA=R("Tally3Icon",[["path",{d:"M4 4v16",key:"6qkkli"}],["path",{d:"M9 4v16",key:"81ygyz"}],["path",{d:"M14 4v16",key:"12vmem"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wA=R("Tally4Icon",[["path",{d:"M4 4v16",key:"6qkkli"}],["path",{d:"M9 4v16",key:"81ygyz"}],["path",{d:"M14 4v16",key:"12vmem"}],["path",{d:"M19 4v16",key:"8ij5ei"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kA=R("Tally5Icon",[["path",{d:"M4 4v16",key:"6qkkli"}],["path",{d:"M9 4v16",key:"81ygyz"}],["path",{d:"M14 4v16",key:"12vmem"}],["path",{d:"M19 4v16",key:"8ij5ei"}],["path",{d:"M22 6 2 18",key:"h9moai"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xA=R("TangentIcon",[["circle",{cx:"17",cy:"4",r:"2",key:"y5j2s2"}],["path",{d:"M15.59 5.41 5.41 15.59",key:"l0vprr"}],["circle",{cx:"4",cy:"17",r:"2",key:"9p4efm"}],["path",{d:"M12 22s-4-9-1.5-11.5S22 12 22 12",key:"1twk4o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $A=R("TargetIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const CA=R("TentTreeIcon",[["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}],["path",{d:"m14 5 3-3 3 3",key:"1sorif"}],["path",{d:"m14 10 3-3 3 3",key:"1jyi9h"}],["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M17 14H7l-5 8h20Z",key:"13ar7p"}],["path",{d:"M8 14v8",key:"1ghmqk"}],["path",{d:"m9 14 5 8",key:"13pgi6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const SA=R("TentIcon",[["path",{d:"M3.5 21 14 3",key:"1szst5"}],["path",{d:"M20.5 21 10 3",key:"1310c3"}],["path",{d:"M15.5 21 12 15l-3.5 6",key:"1ddtfw"}],["path",{d:"M2 21h20",key:"1nyx9w"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const EA=R("TerminalSquareIcon",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const AA=R("TerminalIcon",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const LA=R("TestTube2Icon",[["path",{d:"M21 7 6.82 21.18a2.83 2.83 0 0 1-3.99-.01v0a2.83 2.83 0 0 1 0-4L17 3",key:"dg8b2p"}],["path",{d:"m16 2 6 6",key:"1gw87d"}],["path",{d:"M12 16H4",key:"1cjfip"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IA=R("TestTubeIcon",[["path",{d:"M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5h0c-1.4 0-2.5-1.1-2.5-2.5V2",key:"187lwq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M14.5 16h-5",key:"1ox875"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const VA=R("TestTubesIcon",[["path",{d:"M9 2v17.5A2.5 2.5 0 0 1 6.5 22v0A2.5 2.5 0 0 1 4 19.5V2",key:"12z67u"}],["path",{d:"M20 2v17.5a2.5 2.5 0 0 1-2.5 2.5v0a2.5 2.5 0 0 1-2.5-2.5V2",key:"1q2nfy"}],["path",{d:"M3 2h7",key:"7s29d5"}],["path",{d:"M14 2h7",key:"7sicin"}],["path",{d:"M9 16H4",key:"1bfye3"}],["path",{d:"M20 16h-5",key:"ddnjpe"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const MA=R("TextCursorInputIcon",[["path",{d:"M5 4h1a3 3 0 0 1 3 3 3 3 0 0 1 3-3h1",key:"18xjzo"}],["path",{d:"M13 20h-1a3 3 0 0 1-3-3 3 3 0 0 1-3 3H5",key:"fj48gi"}],["path",{d:"M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1",key:"1n9rhb"}],["path",{d:"M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7",key:"13ksps"}],["path",{d:"M9 7v10",key:"1vc8ob"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const TA=R("TextCursorIcon",[["path",{d:"M17 22h-1a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4h1",key:"uvaxm9"}],["path",{d:"M7 22h1a4 4 0 0 0 4-4v-1",key:"11xy8d"}],["path",{d:"M7 2h1a4 4 0 0 1 4 4v1",key:"1uw06m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const DA=R("TextQuoteIcon",[["path",{d:"M17 6H3",key:"16j9eg"}],["path",{d:"M21 12H8",key:"scolzb"}],["path",{d:"M21 18H8",key:"1wfozv"}],["path",{d:"M3 12v6",key:"fv4c87"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Od=R("TextSelectIcon",[["path",{d:"M5 3a2 2 0 0 0-2 2",key:"y57alp"}],["path",{d:"M19 3a2 2 0 0 1 2 2",key:"18rm91"}],["path",{d:"M21 19a2 2 0 0 1-2 2",key:"1j7049"}],["path",{d:"M5 21a2 2 0 0 1-2-2",key:"sbafld"}],["path",{d:"M9 3h1",key:"1yesri"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M14 3h1",key:"1ec4yj"}],["path",{d:"M14 21h1",key:"v9vybs"}],["path",{d:"M3 9v1",key:"1r0deq"}],["path",{d:"M21 9v1",key:"mxsmne"}],["path",{d:"M3 14v1",key:"vnatye"}],["path",{d:"M21 14v1",key:"169vum"}],["line",{x1:"7",x2:"15",y1:"8",y2:"8",key:"1758g8"}],["line",{x1:"7",x2:"17",y1:"12",y2:"12",key:"197423"}],["line",{x1:"7",x2:"13",y1:"16",y2:"16",key:"37cgm6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const PA=R("TextIcon",[["path",{d:"M17 6.1H3",key:"wptmhv"}],["path",{d:"M21 12.1H3",key:"1j38uz"}],["path",{d:"M15.1 18H3",key:"1nb16a"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const UA=R("TheaterIcon",[["path",{d:"M2 10s3-3 3-8",key:"3xiif0"}],["path",{d:"M22 10s-3-3-3-8",key:"ioaa5q"}],["path",{d:"M10 2c0 4.4-3.6 8-8 8",key:"16fkpi"}],["path",{d:"M14 2c0 4.4 3.6 8 8 8",key:"b9eulq"}],["path",{d:"M2 10s2 2 2 5",key:"1au1lb"}],["path",{d:"M22 10s-2 2-2 5",key:"qi2y5e"}],["path",{d:"M8 15h8",key:"45n4r"}],["path",{d:"M2 22v-1a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1",key:"1vsc2m"}],["path",{d:"M14 22v-1a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1",key:"hrha4u"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const RA=R("ThermometerSnowflakeIcon",[["path",{d:"M2 12h10",key:"19562f"}],["path",{d:"M9 4v16",key:"81ygyz"}],["path",{d:"m3 9 3 3-3 3",key:"1sas0l"}],["path",{d:"M12 6 9 9 6 6",key:"pfrgxu"}],["path",{d:"m6 18 3-3 1.5 1.5",key:"1e277p"}],["path",{d:"M20 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",key:"iof6y5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OA=R("ThermometerSunIcon",[["path",{d:"M12 9a4 4 0 0 0-2 7.5",key:"1jvsq6"}],["path",{d:"M12 3v2",key:"1w22ol"}],["path",{d:"m6.6 18.4-1.4 1.4",key:"w2yidj"}],["path",{d:"M20 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",key:"iof6y5"}],["path",{d:"M4 13H2",key:"118le4"}],["path",{d:"M6.34 7.34 4.93 5.93",key:"1brd51"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const FA=R("ThermometerIcon",[["path",{d:"M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",key:"17jzev"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NA=R("ThumbsDownIcon",[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22h0a3.13 3.13 0 0 1-3-3.88Z",key:"s6e0r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jA=R("ThumbsUpIcon",[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2h0a3.13 3.13 0 0 1 3 3.88Z",key:"y3tblf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HA=R("TicketIcon",[["path",{d:"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",key:"qn84l0"}],["path",{d:"M13 5v2",key:"dyzc3o"}],["path",{d:"M13 17v2",key:"1ont0d"}],["path",{d:"M13 11v2",key:"1wjjxi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qA=R("TimerOffIcon",[["path",{d:"M10 2h4",key:"n1abiw"}],["path",{d:"M4.6 11a8 8 0 0 0 1.7 8.7 8 8 0 0 0 8.7 1.7",key:"10he05"}],["path",{d:"M7.4 7.4a8 8 0 0 1 10.3 1 8 8 0 0 1 .9 10.2",key:"15f7sh"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M12 12v-2",key:"fwoke6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zA=R("TimerResetIcon",[["path",{d:"M10 2h4",key:"n1abiw"}],["path",{d:"M12 14v-4",key:"1evpnu"}],["path",{d:"M4 13a8 8 0 0 1 8-7 8 8 0 1 1-5.3 14L4 17.6",key:"1ts96g"}],["path",{d:"M9 17H4v5",key:"8t5av"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const BA=R("TimerIcon",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const GA=R("ToggleLeftIcon",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6",key:"f2vt7d"}],["circle",{cx:"8",cy:"12",r:"2",key:"1nvbw3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const WA=R("ToggleRightIcon",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6",key:"f2vt7d"}],["circle",{cx:"16",cy:"12",r:"2",key:"4ma0v8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ZA=R("TornadoIcon",[["path",{d:"M21 4H3",key:"1hwok0"}],["path",{d:"M18 8H6",key:"41n648"}],["path",{d:"M19 12H9",key:"1g4lpz"}],["path",{d:"M16 16h-6",key:"1j5d54"}],["path",{d:"M11 20H9",key:"39obr8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const KA=R("TorusIcon",[["ellipse",{cx:"12",cy:"11",rx:"3",ry:"2",key:"1b2qxu"}],["ellipse",{cx:"12",cy:"12.5",rx:"10",ry:"8.5",key:"h8emeu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const YA=R("TouchpadOffIcon",[["path",{d:"M4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16",key:"lnt0bk"}],["path",{d:"M2 14h12",key:"d8icqz"}],["path",{d:"M22 14h-2",key:"jrx26d"}],["path",{d:"M12 20v-6",key:"1rm09r"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M22 16V6a2 2 0 0 0-2-2H10",key:"11y8e4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const XA=R("TouchpadIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"M2 14h20",key:"myj16y"}],["path",{d:"M12 20v-6",key:"1rm09r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const QA=R("TowerControlIcon",[["path",{d:"M18.2 12.27 20 6H4l1.8 6.27a1 1 0 0 0 .95.73h10.5a1 1 0 0 0 .96-.73Z",key:"1pledb"}],["path",{d:"M8 13v9",key:"hmv0ci"}],["path",{d:"M16 22v-9",key:"ylnf1u"}],["path",{d:"m9 6 1 7",key:"dpdgam"}],["path",{d:"m15 6-1 7",key:"ls7zgu"}],["path",{d:"M12 6V2",key:"1pj48d"}],["path",{d:"M13 2h-2",key:"mj6ths"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const JA=R("ToyBrickIcon",[["rect",{width:"18",height:"12",x:"3",y:"8",rx:"1",key:"158fvp"}],["path",{d:"M10 8V5c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v3",key:"s0042v"}],["path",{d:"M19 8V5c0-.6-.4-1-1-1h-3a1 1 0 0 0-1 1v3",key:"9wmeh2"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eL=R("TractorIcon",[["path",{d:"M3 4h9l1 7",key:"1ftpo8"}],["path",{d:"M4 11V4",key:"9ft8pt"}],["path",{d:"M8 10V4",key:"1y5f7n"}],["path",{d:"M18 5c-.6 0-1 .4-1 1v5.6",key:"10zbvr"}],["path",{d:"m10 11 11 .9c.6 0 .9.5.8 1.1l-.8 5h-1",key:"2w242w"}],["circle",{cx:"7",cy:"15",r:".5",key:"fbsjqy"}],["circle",{cx:"7",cy:"15",r:"5",key:"ddtuc"}],["path",{d:"M16 18h-5",key:"bq60fd"}],["circle",{cx:"18",cy:"18",r:"2",key:"1emm8v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tL=R("TrafficConeIcon",[["path",{d:"M9.3 6.2a4.55 4.55 0 0 0 5.4 0",key:"flyxqv"}],["path",{d:"M7.9 10.7c.9.8 2.4 1.3 4.1 1.3s3.2-.5 4.1-1.3",key:"1nlxxg"}],["path",{d:"M13.9 3.5a1.93 1.93 0 0 0-3.8-.1l-3 10c-.1.2-.1.4-.1.6 0 1.7 2.2 3 5 3s5-1.3 5-3c0-.2 0-.4-.1-.5Z",key:"vz7x1l"}],["path",{d:"m7.5 12.2-4.7 2.7c-.5.3-.8.7-.8 1.1s.3.8.8 1.1l7.6 4.5c.9.5 2.1.5 3 0l7.6-4.5c.7-.3 1-.7 1-1.1s-.3-.8-.8-1.1l-4.7-2.8",key:"1xfzlw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aL=R("TrainFrontTunnelIcon",[["path",{d:"M2 22V12a10 10 0 1 1 20 0v10",key:"o0fyp0"}],["path",{d:"M15 6.8v1.4a3 2.8 0 1 1-6 0V6.8",key:"m8q3n9"}],["path",{d:"M10 15h.01",key:"44in9x"}],["path",{d:"M14 15h.01",key:"5mohn5"}],["path",{d:"M10 19a4 4 0 0 1-4-4v-3a6 6 0 1 1 12 0v3a4 4 0 0 1-4 4Z",key:"hckbmu"}],["path",{d:"m9 19-2 3",key:"iij7hm"}],["path",{d:"m15 19 2 3",key:"npx8sa"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sL=R("TrainFrontIcon",[["path",{d:"M8 3.1V7a4 4 0 0 0 8 0V3.1",key:"1v71zp"}],["path",{d:"m9 15-1-1",key:"1yrq24"}],["path",{d:"m15 15 1-1",key:"1t0d6s"}],["path",{d:"M9 19c-2.8 0-5-2.2-5-5v-4a8 8 0 0 1 16 0v4c0 2.8-2.2 5-5 5Z",key:"1p0hjs"}],["path",{d:"m8 19-2 3",key:"13i0xs"}],["path",{d:"m16 19 2 3",key:"xo31yx"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oL=R("TrainTrackIcon",[["path",{d:"M2 17 17 2",key:"18b09t"}],["path",{d:"m2 14 8 8",key:"1gv9hu"}],["path",{d:"m5 11 8 8",key:"189pqp"}],["path",{d:"m8 8 8 8",key:"1imecy"}],["path",{d:"m11 5 8 8",key:"ummqn6"}],["path",{d:"m14 2 8 8",key:"1vk7dn"}],["path",{d:"M7 22 22 7",key:"15mb1i"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fd=R("TramFrontIcon",[["rect",{width:"16",height:"16",x:"4",y:"3",rx:"2",key:"1wxw4b"}],["path",{d:"M4 11h16",key:"mpoxn0"}],["path",{d:"M12 3v8",key:"1h2ygw"}],["path",{d:"m8 19-2 3",key:"13i0xs"}],["path",{d:"m18 22-2-3",key:"1p0ohu"}],["path",{d:"M8 15h0",key:"q9eq1f"}],["path",{d:"M16 15h0",key:"pzrbjg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nL=R("Trash2Icon",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lL=R("TrashIcon",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rL=R("TreeDeciduousIcon",[["path",{d:"M8 19a4 4 0 0 1-2.24-7.32A3.5 3.5 0 0 1 9 6.03V6a3 3 0 1 1 6 0v.04a3.5 3.5 0 0 1 3.24 5.65A4 4 0 0 1 16 19Z",key:"oadzkq"}],["path",{d:"M12 19v3",key:"npa21l"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iL=R("TreePineIcon",[["path",{d:"m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z",key:"cpyugq"}],["path",{d:"M12 22v-3",key:"kmzjlo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dL=R("TreesIcon",[["path",{d:"M10 10v.2A3 3 0 0 1 8.9 16v0H5v0h0a3 3 0 0 1-1-5.8V10a3 3 0 0 1 6 0Z",key:"yh07w9"}],["path",{d:"M7 16v6",key:"1a82de"}],["path",{d:"M13 19v3",key:"13sx9i"}],["path",{d:"M12 19h8.3a1 1 0 0 0 .7-1.7L18 14h.3a1 1 0 0 0 .7-1.7L16 9h.2a1 1 0 0 0 .8-1.7L13 3l-1.4 1.5",key:"1sj9kv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cL=R("TrelloIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["rect",{width:"3",height:"9",x:"7",y:"7",key:"14n3xi"}],["rect",{width:"3",height:"5",x:"14",y:"7",key:"s4azjd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uL=R("TrendingDownIcon",[["polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7",key:"1r2t7k"}],["polyline",{points:"16 17 22 17 22 11",key:"11uiuu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pL=R("TrendingUpIcon",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _L=R("TriangleRightIcon",[["path",{d:"M22 18a2 2 0 0 1-2 2H3c-1.1 0-1.3-.6-.4-1.3L20.4 4.3c.9-.7 1.6-.4 1.6.7Z",key:"183wce"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mL=R("TriangleIcon",[["path",{d:"M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"14u9p9"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vL=R("TrophyIcon",[["path",{d:"M6 9H4.5a2.5 2.5 0 0 1 0-5H6",key:"17hqa7"}],["path",{d:"M18 9h1.5a2.5 2.5 0 0 0 0-5H18",key:"lmptdp"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22",key:"1nw9bq"}],["path",{d:"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22",key:"1np0yb"}],["path",{d:"M18 2H6v7a6 6 0 0 0 12 0V2Z",key:"u46fv3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hL=R("TruckIcon",[["path",{d:"M5 18H3c-.6 0-1-.4-1-1V7c0-.6.4-1 1-1h10c.6 0 1 .4 1 1v11",key:"hs4xqm"}],["path",{d:"M14 9h4l4 4v4c0 .6-.4 1-1 1h-2",key:"11fp61"}],["circle",{cx:"7",cy:"18",r:"2",key:"19iecd"}],["path",{d:"M15 18H9",key:"1lyqi6"}],["circle",{cx:"17",cy:"18",r:"2",key:"332jqn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fL=R("TurtleIcon",[["path",{d:"m12 10 2 4v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3a8 8 0 1 0-16 0v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3l2-4h4Z",key:"1lbbv7"}],["path",{d:"M4.82 7.9 8 10",key:"m9wose"}],["path",{d:"M15.18 7.9 12 10",key:"p8dp2u"}],["path",{d:"M16.93 10H20a2 2 0 0 1 0 4H2",key:"12nsm7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gL=R("Tv2Icon",[["path",{d:"M7 21h10",key:"1b0cd5"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yL=R("TvIcon",[["rect",{width:"20",height:"15",x:"2",y:"7",rx:"2",ry:"2",key:"10ag99"}],["polyline",{points:"17 2 12 7 7 2",key:"11pgbg"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bL=R("TwitchIcon",[["path",{d:"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7",key:"c0yzno"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wL=R("TwitterIcon",[["path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z",key:"pff0z6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kL=R("TypeIcon",[["polyline",{points:"4 7 4 4 20 4 20 7",key:"1nosan"}],["line",{x1:"9",x2:"15",y1:"20",y2:"20",key:"swin9y"}],["line",{x1:"12",x2:"12",y1:"4",y2:"20",key:"1tx1rr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xL=R("UmbrellaOffIcon",[["path",{d:"M12 2v1",key:"11qlp1"}],["path",{d:"M15.5 21a1.85 1.85 0 0 1-3.5-1v-8H2a10 10 0 0 1 3.428-6.575",key:"eki10q"}],["path",{d:"M17.5 12H22A10 10 0 0 0 9.004 3.455",key:"n2ayka"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $L=R("UmbrellaIcon",[["path",{d:"M22 12a10.06 10.06 1 0 0-20 0Z",key:"1teyop"}],["path",{d:"M12 12v8a2 2 0 0 0 4 0",key:"ulpmoc"}],["path",{d:"M12 2v1",key:"11qlp1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const CL=R("UnderlineIcon",[["path",{d:"M6 4v6a6 6 0 0 0 12 0V4",key:"9kb039"}],["line",{x1:"4",x2:"20",y1:"20",y2:"20",key:"nun2al"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const SL=R("Undo2Icon",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5v0a5.5 5.5 0 0 1-5.5 5.5H11",key:"llx8ln"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const EL=R("UndoDotIcon",[["circle",{cx:"12",cy:"17",r:"1",key:"1ixnty"}],["path",{d:"M3 7v6h6",key:"1v2h90"}],["path",{d:"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13",key:"1r6uu6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const AL=R("UndoIcon",[["path",{d:"M3 7v6h6",key:"1v2h90"}],["path",{d:"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13",key:"1r6uu6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const LL=R("UnfoldHorizontalIcon",[["path",{d:"M16 12h6",key:"15xry1"}],["path",{d:"M8 12H2",key:"1jqql6"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 8v2",key:"1woqiv"}],["path",{d:"M12 14v2",key:"8jcxud"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m19 15 3-3-3-3",key:"wjy7rq"}],["path",{d:"m5 9-3 3 3 3",key:"j64kie"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IL=R("UnfoldVerticalIcon",[["path",{d:"M12 22v-6",key:"6o8u61"}],["path",{d:"M12 8V2",key:"1wkif3"}],["path",{d:"M4 12H2",key:"rhcxmi"}],["path",{d:"M10 12H8",key:"s88cx1"}],["path",{d:"M16 12h-2",key:"10asgb"}],["path",{d:"M22 12h-2",key:"14jgyd"}],["path",{d:"m15 19-3 3-3-3",key:"11eu04"}],["path",{d:"m15 5-3-3-3 3",key:"itvq4r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const VL=R("UngroupIcon",[["rect",{width:"8",height:"6",x:"5",y:"4",rx:"1",key:"nzclkv"}],["rect",{width:"8",height:"6",x:"11",y:"14",rx:"1",key:"4tytwb"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ML=R("Unlink2Icon",[["path",{d:"M15 7h2a5 5 0 0 1 0 10h-2m-6 0H7A5 5 0 0 1 7 7h2",key:"1re2ne"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const TL=R("UnlinkIcon",[["path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71",key:"yqzxt4"}],["path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71",key:"4qinb0"}],["line",{x1:"8",x2:"8",y1:"2",y2:"5",key:"1041cp"}],["line",{x1:"2",x2:"5",y1:"8",y2:"8",key:"14m1p5"}],["line",{x1:"16",x2:"16",y1:"19",y2:"22",key:"rzdirn"}],["line",{x1:"19",x2:"22",y1:"16",y2:"16",key:"ox905f"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const DL=R("UnlockKeyholeIcon",[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 9.33-2.5",key:"car5b7"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const PL=R("UnlockIcon",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const UL=R("UnplugIcon",[["path",{d:"m19 5 3-3",key:"yk6iyv"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z",key:"1snsnr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const RL=R("UploadCloudIcon",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M12 12v9",key:"192myk"}],["path",{d:"m16 16-4-4-4 4",key:"119tzi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OL=R("UploadIcon",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const FL=R("UsbIcon",[["circle",{cx:"10",cy:"7",r:"1",key:"dypaad"}],["circle",{cx:"4",cy:"20",r:"1",key:"22iqad"}],["path",{d:"M4.7 19.3 19 5",key:"1enqfc"}],["path",{d:"m21 3-3 1 2 2Z",key:"d3ov82"}],["path",{d:"M9.26 7.68 5 12l2 5",key:"1esawj"}],["path",{d:"m10 14 5 2 3.5-3.5",key:"v8oal5"}],["path",{d:"m18 12 1-1 1 1-1 1Z",key:"1bh22v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NL=R("UserCheckIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["polyline",{points:"16 11 18 13 22 9",key:"1pwet4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jL=R("UserCogIcon",[["circle",{cx:"18",cy:"15",r:"3",key:"gjjjvw"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M10 15H6a4 4 0 0 0-4 4v2",key:"1nfge6"}],["path",{d:"m21.7 16.4-.9-.3",key:"12j9ji"}],["path",{d:"m15.2 13.9-.9-.3",key:"1fdjdi"}],["path",{d:"m16.6 18.7.3-.9",key:"heedtr"}],["path",{d:"m19.1 12.2.3-.9",key:"1af3ki"}],["path",{d:"m19.6 18.7-.4-1",key:"1x9vze"}],["path",{d:"m16.8 12.3-.4-1",key:"vqeiwj"}],["path",{d:"m14.3 16.6 1-.4",key:"1qlj63"}],["path",{d:"m20.7 13.8 1-.4",key:"1v5t8k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HL=R("UserMinusIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qL=R("UserPlusIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nd=R("UserRoundCheckIcon",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jd=R("UserRoundCogIcon",[["path",{d:"M2 21a8 8 0 0 1 10.434-7.62",key:"1yezr2"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["path",{d:"m19.5 14.3-.4.9",key:"1eb35c"}],["path",{d:"m16.9 20.8-.4.9",key:"dfjc4z"}],["path",{d:"m21.7 19.5-.9-.4",key:"q4dx6b"}],["path",{d:"m15.2 16.9-.9-.4",key:"1r0w5f"}],["path",{d:"m21.7 16.5-.9.4",key:"1knoei"}],["path",{d:"m15.2 19.1-.9.4",key:"j188fs"}],["path",{d:"m19.5 21.7-.4-.9",key:"1tonu5"}],["path",{d:"m16.9 15.2-.4-.9",key:"699xu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hd=R("UserRoundMinusIcon",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 19h-6",key:"vcuq98"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qd=R("UserRoundPlusIcon",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M19 16v6",key:"tddt3s"}],["path",{d:"M22 19h-6",key:"vcuq98"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zL=R("UserRoundSearchIcon",[["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M2 21a8 8 0 0 1 10.434-7.62",key:"1yezr2"}],["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["path",{d:"m22 22-1.9-1.9",key:"1e5ubv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zd=R("UserRoundXIcon",[["path",{d:"M2 21a8 8 0 0 1 11.873-7",key:"74fkxq"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"m17 17 5 5",key:"p7ous7"}],["path",{d:"m22 17-5 5",key:"gqnmv0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bd=R("UserRoundIcon",[["circle",{cx:"12",cy:"8",r:"5",key:"1hypcn"}],["path",{d:"M20 21a8 8 0 0 0-16 0",key:"rfgkzh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const BL=R("UserSearchIcon",[["circle",{cx:"10",cy:"7",r:"4",key:"e45bow"}],["path",{d:"M10.3 15H7a4 4 0 0 0-4 4v2",key:"3bnktk"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["path",{d:"m21 21-1.9-1.9",key:"1g2n9r"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const GL=R("UserXIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"17",x2:"22",y1:"8",y2:"13",key:"3nzzx3"}],["line",{x1:"22",x2:"17",y1:"8",y2:"13",key:"1swrse"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const WL=R("UserIcon",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gd=R("UsersRoundIcon",[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ZL=R("UsersIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const KL=R("UtensilsCrossedIcon",[["path",{d:"m16 2-2.3 2.3a3 3 0 0 0 0 4.2l1.8 1.8a3 3 0 0 0 4.2 0L22 8",key:"n7qcjb"}],["path",{d:"M15 15 3.3 3.3a4.2 4.2 0 0 0 0 6l7.3 7.3c.7.7 2 .7 2.8 0L15 15Zm0 0 7 7",key:"d0u48b"}],["path",{d:"m2.1 21.8 6.4-6.3",key:"yn04lh"}],["path",{d:"m19 5-7 7",key:"194lzd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const YL=R("UtensilsIcon",[["path",{d:"M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2",key:"cjf0a3"}],["path",{d:"M7 2v20",key:"1473qp"}],["path",{d:"M21 15V2v0a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7",key:"1ogz0v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const XL=R("UtilityPoleIcon",[["path",{d:"M12 2v20",key:"t6zp3m"}],["path",{d:"M2 5h20",key:"1fs1ex"}],["path",{d:"M3 3v2",key:"9imdir"}],["path",{d:"M7 3v2",key:"n0os7"}],["path",{d:"M17 3v2",key:"1l2re6"}],["path",{d:"M21 3v2",key:"1duuac"}],["path",{d:"m19 5-7 7-7-7",key:"133zxf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const QL=R("VariableIcon",[["path",{d:"M8 21s-4-3-4-9 4-9 4-9",key:"uto9ud"}],["path",{d:"M16 3s4 3 4 9-4 9-4 9",key:"4w2vsq"}],["line",{x1:"15",x2:"9",y1:"9",y2:"15",key:"f7djnv"}],["line",{x1:"9",x2:"15",y1:"9",y2:"15",key:"1shsy8"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const JL=R("VeganIcon",[["path",{d:"M2 2a26.6 26.6 0 0 1 10 20c.9-6.82 1.5-9.5 4-14",key:"qiv7li"}],["path",{d:"M16 8c4 0 6-2 6-6-4 0-6 2-6 6",key:"n7eohy"}],["path",{d:"M17.41 3.6a10 10 0 1 0 3 3",key:"1dion0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e7=R("VenetianMaskIcon",[["path",{d:"M2 12a5 5 0 0 0 5 5 8 8 0 0 1 5 2 8 8 0 0 1 5-2 5 5 0 0 0 5-5V7h-5a8 8 0 0 0-5 2 8 8 0 0 0-5-2H2Z",key:"1g6z3j"}],["path",{d:"M6 11c1.5 0 3 .5 3 2-2 0-3 0-3-2Z",key:"c2lwnf"}],["path",{d:"M18 11c-1.5 0-3 .5-3 2 2 0 3 0 3-2Z",key:"njd9zo"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t7=R("VibrateOffIcon",[["path",{d:"m2 8 2 2-2 2 2 2-2 2",key:"sv1b1"}],["path",{d:"m22 8-2 2 2 2-2 2 2 2",key:"101i4y"}],["path",{d:"M8 8v10c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2",key:"1hbad5"}],["path",{d:"M16 10.34V6c0-.55-.45-1-1-1h-4.34",key:"1x5tf0"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a7=R("VibrateIcon",[["path",{d:"m2 8 2 2-2 2 2 2-2 2",key:"sv1b1"}],["path",{d:"m22 8-2 2 2 2-2 2 2 2",key:"101i4y"}],["rect",{width:"8",height:"14",x:"8",y:"5",rx:"1",key:"1oyrl4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const s7=R("VideoOffIcon",[["path",{d:"M10.66 6H14a2 2 0 0 1 2 2v2.34l1 1L22 8v8",key:"ubwiq0"}],["path",{d:"M16 16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2l10 10Z",key:"1l10zd"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o7=R("VideoIcon",[["path",{d:"m22 8-6 4 6 4V8Z",key:"50v9me"}],["rect",{width:"14",height:"12",x:"2",y:"6",rx:"2",ry:"2",key:"1rqjg6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n7=R("VideotapeIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"M2 8h20",key:"d11cs7"}],["circle",{cx:"8",cy:"14",r:"2",key:"1k2qr5"}],["path",{d:"M8 12h8",key:"1wcyev"}],["circle",{cx:"16",cy:"14",r:"2",key:"14k7lr"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l7=R("ViewIcon",[["path",{d:"M5 12s2.545-5 7-5c4.454 0 7 5 7 5s-2.546 5-7 5c-4.455 0-7-5-7-5z",key:"vptub8"}],["path",{d:"M12 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2z",key:"10lhjs"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2",key:"mrq65r"}],["path",{d:"M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2",key:"be3xqs"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const r7=R("VoicemailIcon",[["circle",{cx:"6",cy:"12",r:"4",key:"1ehtga"}],["circle",{cx:"18",cy:"12",r:"4",key:"4vafl8"}],["line",{x1:"6",x2:"18",y1:"16",y2:"16",key:"pmt8us"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i7=R("Volume1Icon",[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07",key:"ltjumu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const d7=R("Volume2Icon",[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07",key:"ltjumu"}],["path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14",key:"1kegas"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c7=R("VolumeXIcon",[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["line",{x1:"22",x2:"16",y1:"9",y2:"15",key:"1ewh16"}],["line",{x1:"16",x2:"22",y1:"9",y2:"15",key:"5ykzw1"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u7=R("VolumeIcon",[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const p7=R("VoteIcon",[["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}],["path",{d:"M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z",key:"1ezoue"}],["path",{d:"M22 19H2",key:"nuriw5"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _7=R("Wallet2Icon",[["path",{d:"M17 14h.01",key:"7oqj8z"}],["path",{d:"M7 7h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14",key:"u1rqew"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m7=R("WalletCardsIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2",key:"4125el"}],["path",{d:"M3 11h3c.8 0 1.6.3 2.1.9l1.1.9c1.6 1.6 4.1 1.6 5.7 0l1.1-.9c.5-.5 1.3-.9 2.1-.9H21",key:"1dpki6"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const v7=R("WalletIcon",[["path",{d:"M21 12V7H5a2 2 0 0 1 0-4h14v4",key:"195gfw"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h16v-5",key:"195n9w"}],["path",{d:"M18 12a2 2 0 0 0 0 4h4v-4Z",key:"vllfpd"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h7=R("WallpaperIcon",[["circle",{cx:"8",cy:"9",r:"2",key:"gjzl9d"}],["path",{d:"m9 17 6.1-6.1a2 2 0 0 1 2.81.01L22 15V5a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2",key:"69xh40"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["path",{d:"M12 17v4",key:"1riwvh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f7=R("Wand2Icon",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72Z",key:"1bcowg"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g7=R("WandIcon",[["path",{d:"M15 4V2",key:"z1p9b7"}],["path",{d:"M15 16v-2",key:"px0unx"}],["path",{d:"M8 9h2",key:"1g203m"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M17.8 11.8 19 13",key:"yihg8r"}],["path",{d:"M15 9h0",key:"kg5t1u"}],["path",{d:"M17.8 6.2 19 5",key:"fd4us0"}],["path",{d:"m3 21 9-9",key:"1jfql5"}],["path",{d:"M12.2 6.2 11 5",key:"i3da3b"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const y7=R("WarehouseIcon",[["path",{d:"M22 8.35V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8.35A2 2 0 0 1 3.26 6.5l8-3.2a2 2 0 0 1 1.48 0l8 3.2A2 2 0 0 1 22 8.35Z",key:"gksnxg"}],["path",{d:"M6 18h12",key:"9pbo8z"}],["path",{d:"M6 14h12",key:"4cwo0f"}],["rect",{width:"12",height:"12",x:"6",y:"10",key:"apd30q"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b7=R("WatchIcon",[["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["polyline",{points:"12 10 12 12 13 13",key:"19dquz"}],["path",{d:"m16.13 7.66-.81-4.05a2 2 0 0 0-2-1.61h-2.68a2 2 0 0 0-2 1.61l-.78 4.05",key:"18k57s"}],["path",{d:"m7.88 16.36.8 4a2 2 0 0 0 2 1.61h2.72a2 2 0 0 0 2-1.61l.81-4.05",key:"16ny36"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w7=R("WavesIcon",[["path",{d:"M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"knzxuh"}],["path",{d:"M2 12c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"2jd2cc"}],["path",{d:"M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"rd2r6e"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k7=R("WaypointsIcon",[["circle",{cx:"12",cy:"4.5",r:"2.5",key:"r5ysbb"}],["path",{d:"m10.2 6.3-3.9 3.9",key:"1nzqf6"}],["circle",{cx:"4.5",cy:"12",r:"2.5",key:"jydg6v"}],["path",{d:"M7 12h10",key:"b7w52i"}],["circle",{cx:"19.5",cy:"12",r:"2.5",key:"1piiel"}],["path",{d:"m13.8 17.7 3.9-3.9",key:"1wyg1y"}],["circle",{cx:"12",cy:"19.5",r:"2.5",key:"13o1pw"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x7=R("WebcamIcon",[["circle",{cx:"12",cy:"10",r:"8",key:"1gshiw"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 22h10",key:"10w4w3"}],["path",{d:"M12 22v-4",key:"1utk9m"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $7=R("WebhookIcon",[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C7=R("WeightIcon",[["circle",{cx:"12",cy:"5",r:"3",key:"rqqgnr"}],["path",{d:"M6.5 8a2 2 0 0 0-1.905 1.46L2.1 18.5A2 2 0 0 0 4 21h16a2 2 0 0 0 1.925-2.54L19.4 9.5A2 2 0 0 0 17.48 8Z",key:"56o5sh"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S7=R("WheatOffIcon",[["path",{d:"m2 22 10-10",key:"28ilpk"}],["path",{d:"m16 8-1.17 1.17",key:"1qqm82"}],["path",{d:"M3.47 12.53 5 11l1.53 1.53a3.5 3.5 0 0 1 0 4.94L5 19l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z",key:"1rdhi6"}],["path",{d:"m8 8-.53.53a3.5 3.5 0 0 0 0 4.94L9 15l1.53-1.53c.55-.55.88-1.25.98-1.97",key:"4wz8re"}],["path",{d:"M10.91 5.26c.15-.26.34-.51.56-.73L13 3l1.53 1.53a3.5 3.5 0 0 1 .28 4.62",key:"rves66"}],["path",{d:"M20 2h2v2a4 4 0 0 1-4 4h-2V6a4 4 0 0 1 4-4Z",key:"19rau1"}],["path",{d:"M11.47 17.47 13 19l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L5 19l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z",key:"tc8ph9"}],["path",{d:"m16 16-.53.53a3.5 3.5 0 0 1-4.94 0L9 15l1.53-1.53a3.49 3.49 0 0 1 1.97-.98",key:"ak46r"}],["path",{d:"M18.74 13.09c.26-.15.51-.34.73-.56L21 11l-1.53-1.53a3.5 3.5 0 0 0-4.62-.28",key:"1tw520"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E7=R("WheatIcon",[["path",{d:"M2 22 16 8",key:"60hf96"}],["path",{d:"M3.47 12.53 5 11l1.53 1.53a3.5 3.5 0 0 1 0 4.94L5 19l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z",key:"1rdhi6"}],["path",{d:"M7.47 8.53 9 7l1.53 1.53a3.5 3.5 0 0 1 0 4.94L9 15l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z",key:"1sdzmb"}],["path",{d:"M11.47 4.53 13 3l1.53 1.53a3.5 3.5 0 0 1 0 4.94L13 11l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z",key:"eoatbi"}],["path",{d:"M20 2h2v2a4 4 0 0 1-4 4h-2V6a4 4 0 0 1 4-4Z",key:"19rau1"}],["path",{d:"M11.47 17.47 13 19l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L5 19l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z",key:"tc8ph9"}],["path",{d:"M15.47 13.47 17 15l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L9 15l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z",key:"2m8kc5"}],["path",{d:"M19.47 9.47 21 11l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L13 11l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z",key:"vex3ng"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A7=R("WholeWordIcon",[["circle",{cx:"7",cy:"12",r:"3",key:"12clwm"}],["path",{d:"M10 9v6",key:"17i7lo"}],["circle",{cx:"17",cy:"12",r:"3",key:"gl7c2s"}],["path",{d:"M14 7v8",key:"dl84cr"}],["path",{d:"M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1",key:"lt2kga"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L7=R("WifiOffIcon",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M8.5 16.5a5 5 0 0 1 7 0",key:"sej527"}],["path",{d:"M2 8.82a15 15 0 0 1 4.17-2.65",key:"11utq1"}],["path",{d:"M10.66 5c4.01-.36 8.14.9 11.34 3.76",key:"hxefdu"}],["path",{d:"M16.85 11.25a10 10 0 0 1 2.22 1.68",key:"q734kn"}],["path",{d:"M5 13a10 10 0 0 1 5.24-2.76",key:"piq4yl"}],["line",{x1:"12",x2:"12.01",y1:"20",y2:"20",key:"of4bc4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I7=R("WifiIcon",[["path",{d:"M5 13a10 10 0 0 1 14 0",key:"6v8j51"}],["path",{d:"M8.5 16.5a5 5 0 0 1 7 0",key:"sej527"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["line",{x1:"12",x2:"12.01",y1:"20",y2:"20",key:"of4bc4"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V7=R("WindIcon",[["path",{d:"M17.7 7.7a2.5 2.5 0 1 1 1.8 4.3H2",key:"1k4u03"}],["path",{d:"M9.6 4.6A2 2 0 1 1 11 8H2",key:"b7d0fd"}],["path",{d:"M12.6 19.4A2 2 0 1 0 14 16H2",key:"1p5cb3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M7=R("WineOffIcon",[["path",{d:"M8 22h8",key:"rmew8v"}],["path",{d:"M7 10h3m7 0h-1.343",key:"v48bem"}],["path",{d:"M12 15v7",key:"t2xh3l"}],["path",{d:"M7.307 7.307A12.33 12.33 0 0 0 7 10a5 5 0 0 0 7.391 4.391M8.638 2.981C8.75 2.668 8.872 2.34 9 2h6c1.5 4 2 6 2 8 0 .407-.05.809-.145 1.198",key:"1ymjlu"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T7=R("WineIcon",[["path",{d:"M8 22h8",key:"rmew8v"}],["path",{d:"M7 10h10",key:"1101jm"}],["path",{d:"M12 15v7",key:"t2xh3l"}],["path",{d:"M12 15a5 5 0 0 0 5-5c0-2-.5-4-2-8H9c-1.5 4-2 6-2 8a5 5 0 0 0 5 5Z",key:"10ffi3"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const D7=R("WorkflowIcon",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const P7=R("WrapTextIcon",[["line",{x1:"3",x2:"21",y1:"6",y2:"6",key:"4m8b97"}],["path",{d:"M3 12h15a3 3 0 1 1 0 6h-4",key:"1cl7v7"}],["polyline",{points:"16 16 14 18 16 20",key:"1jznyi"}],["line",{x1:"3",x2:"10",y1:"18",y2:"18",key:"1h33wv"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const U7=R("WrenchIcon",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const R7=R("XCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const O7=R("XOctagonIcon",[["polygon",{points:"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2",key:"h1p8hx"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F7=R("XSquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const N7=R("XIcon",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j7=R("YoutubeIcon",[["path",{d:"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17",key:"1q2vi4"}],["path",{d:"m10 15 5-3-5-3z",key:"1jp15x"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const H7=R("ZapOffIcon",[["polyline",{points:"12.41 6.75 13 2 10.57 4.92",key:"122m05"}],["polyline",{points:"18.57 12.91 21 10 15.66 10",key:"16r43o"}],["polyline",{points:"8 8 3 14 12 14 11 22 16 16",key:"tmh4bc"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q7=R("ZapIcon",[["polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2",key:"45s27k"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const z7=R("ZoomInIcon",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const B7=R("ZoomOutIcon",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]);/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ene=Object.freeze(Object.defineProperty({__proto__:null,AArrowDown:Lm,AArrowUp:Im,ALargeSmall:Vm,Accessibility:Mm,Activity:Dm,ActivitySquare:Tm,AirVent:Pm,Airplay:Um,AlarmClock:Om,AlarmClockCheck:Bi,AlarmClockMinus:Gi,AlarmClockOff:Rm,AlarmClockPlus:Wi,AlarmSmoke:Fm,Album:Nm,AlertCircle:jm,AlertOctagon:Hm,AlertTriangle:qm,AlignCenter:Gm,AlignCenterHorizontal:zm,AlignCenterVertical:Bm,AlignEndHorizontal:Wm,AlignEndVertical:Zm,AlignHorizontalDistributeCenter:Km,AlignHorizontalDistributeEnd:Ym,AlignHorizontalDistributeStart:Xm,AlignHorizontalJustifyCenter:Qm,AlignHorizontalJustifyEnd:Jm,AlignHorizontalJustifyStart:ev,AlignHorizontalSpaceAround:tv,AlignHorizontalSpaceBetween:av,AlignJustify:sv,AlignLeft:ov,AlignRight:nv,AlignStartHorizontal:lv,AlignStartVertical:rv,AlignVerticalDistributeCenter:iv,AlignVerticalDistributeEnd:dv,AlignVerticalDistributeStart:cv,AlignVerticalJustifyCenter:uv,AlignVerticalJustifyEnd:pv,AlignVerticalJustifyStart:_v,AlignVerticalSpaceAround:mv,AlignVerticalSpaceBetween:vv,Ampersand:hv,Ampersands:fv,Anchor:gv,Angry:yv,Annoyed:bv,Antenna:wv,Anvil:kv,Aperture:xv,AppWindow:$v,Apple:Cv,Archive:Av,ArchiveRestore:Sv,ArchiveX:Ev,AreaChart:Lv,Armchair:Iv,ArrowBigDown:Mv,ArrowBigDownDash:Vv,ArrowBigLeft:Dv,ArrowBigLeftDash:Tv,ArrowBigRight:Uv,ArrowBigRightDash:Pv,ArrowBigUp:Ov,ArrowBigUpDash:Rv,ArrowDown:e1,ArrowDown01:Fv,ArrowDown10:Nv,ArrowDownAZ:Zi,ArrowDownCircle:jv,ArrowDownFromLine:Hv,ArrowDownLeft:Bv,ArrowDownLeftFromCircle:qv,ArrowDownLeftSquare:zv,ArrowDownNarrowWide:Gv,ArrowDownRight:Kv,ArrowDownRightFromCircle:Wv,ArrowDownRightSquare:Zv,ArrowDownSquare:Yv,ArrowDownToDot:Xv,ArrowDownToLine:Qv,ArrowDownUp:Jv,ArrowDownWideNarrow:Ki,ArrowDownZA:Yi,ArrowLeft:l1,ArrowLeftCircle:t1,ArrowLeftFromLine:a1,ArrowLeftRight:s1,ArrowLeftSquare:o1,ArrowLeftToLine:n1,ArrowRight:p1,ArrowRightCircle:r1,ArrowRightFromLine:i1,ArrowRightLeft:d1,ArrowRightSquare:c1,ArrowRightToLine:u1,ArrowUp:A1,ArrowUp01:_1,ArrowUp10:m1,ArrowUpAZ:Xi,ArrowUpCircle:v1,ArrowUpDown:h1,ArrowUpFromDot:f1,ArrowUpFromLine:g1,ArrowUpLeft:w1,ArrowUpLeftFromCircle:y1,ArrowUpLeftSquare:b1,ArrowUpNarrowWide:Qi,ArrowUpRight:$1,ArrowUpRightFromCircle:k1,ArrowUpRightSquare:x1,ArrowUpSquare:C1,ArrowUpToLine:S1,ArrowUpWideNarrow:E1,ArrowUpZA:Ji,ArrowsUpFromLine:L1,Asterisk:I1,AtSign:V1,Atom:M1,AudioLines:T1,AudioWaveform:D1,Award:P1,Axe:U1,Axis3d:ed,Baby:R1,Backpack:O1,Badge:eh,BadgeAlert:F1,BadgeCent:N1,BadgeCheck:td,BadgeDollarSign:j1,BadgeEuro:H1,BadgeHelp:q1,BadgeIndianRupee:z1,BadgeInfo:B1,BadgeJapaneseYen:G1,BadgeMinus:W1,BadgePercent:Z1,BadgePlus:K1,BadgePoundSterling:Y1,BadgeRussianRuble:X1,BadgeSwissFranc:Q1,BadgeX:J1,BaggageClaim:th,Ban:ah,Banana:sh,Banknote:oh,BarChart:uh,BarChart2:nh,BarChart3:lh,BarChart4:rh,BarChartBig:ih,BarChartHorizontal:ch,BarChartHorizontalBig:dh,Barcode:ph,Baseline:_h,Bath:mh,Battery:bh,BatteryCharging:vh,BatteryFull:hh,BatteryLow:fh,BatteryMedium:gh,BatteryWarning:yh,Beaker:wh,Bean:xh,BeanOff:kh,Bed:Sh,BedDouble:$h,BedSingle:Ch,Beef:Eh,Beer:Ah,Bell:Ph,BellDot:Lh,BellElectric:Ih,BellMinus:Vh,BellOff:Mh,BellPlus:Th,BellRing:Dh,Bike:Uh,Binary:Rh,Biohazard:Oh,Bird:Fh,Bitcoin:Nh,Blinds:jh,Blocks:Hh,Bluetooth:Gh,BluetoothConnected:qh,BluetoothOff:zh,BluetoothSearching:Bh,Bold:Wh,Bolt:Zh,Bomb:Kh,Bone:Yh,Book:bf,BookA:Xh,BookAudio:Qh,BookCheck:Jh,BookCopy:ef,BookDashed:ad,BookDown:tf,BookHeadphones:af,BookHeart:sf,BookImage:of,BookKey:nf,BookLock:lf,BookMarked:rf,BookMinus:df,BookOpen:pf,BookOpenCheck:cf,BookOpenText:uf,BookPlus:_f,BookText:mf,BookType:vf,BookUp:ff,BookUp2:hf,BookUser:gf,BookX:yf,Bookmark:Cf,BookmarkCheck:wf,BookmarkMinus:kf,BookmarkPlus:xf,BookmarkX:$f,BoomBox:Sf,Bot:Ef,Box:Lf,BoxSelect:Af,Boxes:If,Braces:sd,Brackets:Vf,Brain:Df,BrainCircuit:Mf,BrainCog:Tf,BrickWall:Pf,Briefcase:Uf,BringToFront:Rf,Brush:Of,Bug:jf,BugOff:Ff,BugPlay:Nf,Building:qf,Building2:Hf,Bus:Bf,BusFront:zf,Cable:Wf,CableCar:Gf,Cake:Kf,CakeSlice:Zf,Calculator:Yf,Calendar:dg,CalendarCheck:Qf,CalendarCheck2:Xf,CalendarClock:Jf,CalendarDays:eg,CalendarHeart:tg,CalendarMinus:ag,CalendarOff:sg,CalendarPlus:og,CalendarRange:ng,CalendarSearch:lg,CalendarX:ig,CalendarX2:rg,Camera:ug,CameraOff:cg,CandlestickChart:pg,Candy:vg,CandyCane:_g,CandyOff:mg,Car:gg,CarFront:hg,CarTaxiFront:fg,Caravan:yg,Carrot:bg,CaseLower:wg,CaseSensitive:kg,CaseUpper:xg,CassetteTape:$g,Cast:Cg,Castle:Sg,Cat:Eg,Cctv:Ag,Check:Dg,CheckCheck:Lg,CheckCircle:Vg,CheckCircle2:Ig,CheckSquare:Tg,CheckSquare2:Mg,ChefHat:Pg,Cherry:Ug,ChevronDown:Fg,ChevronDownCircle:Rg,ChevronDownSquare:Og,ChevronFirst:Ng,ChevronLast:jg,ChevronLeft:zg,ChevronLeftCircle:Hg,ChevronLeftSquare:qg,ChevronRight:Wg,ChevronRightCircle:Bg,ChevronRightSquare:Gg,ChevronUp:Yg,ChevronUpCircle:Zg,ChevronUpSquare:Kg,ChevronsDown:Qg,ChevronsDownUp:Xg,ChevronsLeft:ey,ChevronsLeftRight:Jg,ChevronsRight:ay,ChevronsRightLeft:ty,ChevronsUp:oy,ChevronsUpDown:sy,Chrome:ny,Church:ly,Cigarette:iy,CigaretteOff:ry,Circle:fy,CircleDashed:dy,CircleDollarSign:cy,CircleDot:py,CircleDotDashed:uy,CircleEllipsis:_y,CircleEqual:my,CircleOff:vy,CircleSlash:hy,CircleSlash2:od,CircleUser:ld,CircleUserRound:nd,CircuitBoard:gy,Citrus:yy,Clapperboard:by,Clipboard:Ly,ClipboardCheck:wy,ClipboardCopy:ky,ClipboardEdit:xy,ClipboardList:$y,ClipboardPaste:Cy,ClipboardSignature:Sy,ClipboardType:Ey,ClipboardX:Ay,Clock:Hy,Clock1:Iy,Clock10:Vy,Clock11:My,Clock12:Ty,Clock2:Dy,Clock3:Py,Clock4:Uy,Clock5:Ry,Clock6:Oy,Clock7:Fy,Clock8:Ny,Clock9:jy,Cloud:a0,CloudCog:qy,CloudDrizzle:zy,CloudFog:By,CloudHail:Gy,CloudLightning:Wy,CloudMoon:Ky,CloudMoonRain:Zy,CloudOff:Yy,CloudRain:Qy,CloudRainWind:Xy,CloudSnow:Jy,CloudSun:t0,CloudSunRain:e0,Cloudy:s0,Clover:o0,Club:n0,Code:r0,Code2:l0,Codepen:i0,Codesandbox:d0,Coffee:c0,Cog:u0,Coins:p0,Columns2:rd,Columns3:id,Columns4:_0,Combine:m0,Command:v0,Compass:h0,Component:f0,Computer:g0,ConciergeBell:y0,Cone:b0,Construction:w0,Contact:x0,Contact2:k0,Container:$0,Contrast:C0,Cookie:S0,CookingPot:E0,Copy:T0,CopyCheck:A0,CopyMinus:L0,CopyPlus:I0,CopySlash:V0,CopyX:M0,Copyleft:D0,Copyright:P0,CornerDownLeft:U0,CornerDownRight:R0,CornerLeftDown:O0,CornerLeftUp:F0,CornerRightDown:N0,CornerRightUp:j0,CornerUpLeft:H0,CornerUpRight:q0,Cpu:z0,CreativeCommons:B0,CreditCard:G0,Croissant:W0,Crop:Z0,Cross:K0,Crosshair:Y0,Crown:X0,Cuboid:Q0,CupSoda:J0,Currency:e2,Cylinder:t2,Database:o2,DatabaseBackup:a2,DatabaseZap:s2,Delete:n2,Dessert:l2,Diameter:r2,Diamond:i2,Dice1:d2,Dice2:c2,Dice3:u2,Dice4:p2,Dice5:_2,Dice6:m2,Dices:v2,Diff:h2,Disc:b2,Disc2:f2,Disc3:g2,DiscAlbum:y2,Divide:x2,DivideCircle:w2,DivideSquare:k2,Dna:C2,DnaOff:$2,Dog:S2,DollarSign:E2,Donut:A2,DoorClosed:L2,DoorOpen:I2,Dot:V2,Download:T2,DownloadCloud:M2,DraftingCompass:D2,Drama:P2,Dribbble:U2,Drill:R2,Droplet:O2,Droplets:F2,Drum:N2,Drumstick:j2,Dumbbell:H2,Ear:z2,EarOff:q2,Egg:W2,EggFried:B2,EggOff:G2,Equal:K2,EqualNot:Z2,Eraser:Y2,Euro:X2,Expand:Q2,ExternalLink:J2,Eye:tb,EyeOff:eb,Facebook:ab,Factory:sb,Fan:ob,FastForward:nb,Feather:lb,Fence:rb,FerrisWheel:ib,Figma:db,File:cw,FileArchive:cb,FileAudio:pb,FileAudio2:ub,FileAxis3d:dd,FileBadge:mb,FileBadge2:_b,FileBarChart:hb,FileBarChart2:vb,FileBox:fb,FileCheck:yb,FileCheck2:gb,FileClock:bb,FileCode:kb,FileCode2:wb,FileCog:cd,FileDiff:xb,FileDigit:$b,FileDown:Cb,FileEdit:Sb,FileHeart:Eb,FileImage:Ab,FileInput:Lb,FileJson:Vb,FileJson2:Ib,FileKey:Tb,FileKey2:Mb,FileLineChart:Db,FileLock:Ub,FileLock2:Pb,FileMinus:Ob,FileMinus2:Rb,FileMusic:Fb,FileOutput:Nb,FilePieChart:jb,FilePlus:qb,FilePlus2:Hb,FileQuestion:zb,FileScan:Bb,FileSearch:Wb,FileSearch2:Gb,FileSignature:Zb,FileSpreadsheet:Kb,FileStack:Yb,FileSymlink:Xb,FileTerminal:Qb,FileText:Jb,FileType:tw,FileType2:ew,FileUp:aw,FileVideo:ow,FileVideo2:sw,FileVolume:lw,FileVolume2:nw,FileWarning:rw,FileX:dw,FileX2:iw,Files:uw,Film:pw,Filter:mw,FilterX:_w,Fingerprint:vw,FireExtinguisher:hw,Fish:yw,FishOff:fw,FishSymbol:gw,Flag:xw,FlagOff:bw,FlagTriangleLeft:ww,FlagTriangleRight:kw,Flame:Cw,FlameKindling:$w,Flashlight:Ew,FlashlightOff:Sw,FlaskConical:Lw,FlaskConicalOff:Aw,FlaskRound:Iw,FlipHorizontal:Mw,FlipHorizontal2:Vw,FlipVertical:Dw,FlipVertical2:Tw,Flower:Uw,Flower2:Pw,Focus:Rw,FoldHorizontal:Ow,FoldVertical:Fw,Folder:_k,FolderArchive:Nw,FolderCheck:jw,FolderClock:Hw,FolderClosed:qw,FolderCog:ud,FolderDot:zw,FolderDown:Bw,FolderEdit:Gw,FolderGit:Zw,FolderGit2:Ww,FolderHeart:Kw,FolderInput:Yw,FolderKanban:Xw,FolderKey:Qw,FolderLock:Jw,FolderMinus:ek,FolderOpen:ak,FolderOpenDot:tk,FolderOutput:sk,FolderPlus:ok,FolderRoot:nk,FolderSearch:rk,FolderSearch2:lk,FolderSymlink:ik,FolderSync:dk,FolderTree:ck,FolderUp:uk,FolderX:pk,Folders:mk,Footprints:vk,Forklift:hk,FormInput:fk,Forward:gk,Frame:yk,Framer:bk,Frown:wk,Fuel:kk,Fullscreen:xk,FunctionSquare:$k,GalleryHorizontal:Sk,GalleryHorizontalEnd:Ck,GalleryThumbnails:Ek,GalleryVertical:Lk,GalleryVerticalEnd:Ak,Gamepad:Vk,Gamepad2:Ik,GanttChart:Mk,GanttChartSquare:pd,Gauge:Dk,GaugeCircle:Tk,Gavel:Pk,Gem:Uk,Ghost:Rk,Gift:Ok,GitBranch:Nk,GitBranchPlus:Fk,GitCommitHorizontal:_d,GitCommitVertical:jk,GitCompare:qk,GitCompareArrows:Hk,GitFork:zk,GitGraph:Bk,GitMerge:Gk,GitPullRequest:Qk,GitPullRequestArrow:Wk,GitPullRequestClosed:Zk,GitPullRequestCreate:Yk,GitPullRequestCreateArrow:Kk,GitPullRequestDraft:Xk,Github:Jk,Gitlab:ex,GlassWater:tx,Glasses:ax,Globe:ox,Globe2:sx,Goal:nx,Grab:lx,GraduationCap:rx,Grape:ix,Grid2x2:md,Grid3x3:Rl,Grip:ux,GripHorizontal:dx,GripVertical:cx,Group:px,Guitar:_x,Hammer:mx,Hand:hx,HandMetal:vx,HardDrive:yx,HardDriveDownload:fx,HardDriveUpload:gx,HardHat:bx,Hash:wx,Haze:kx,HdmiPort:xx,Heading:Ix,Heading1:$x,Heading2:Cx,Heading3:Sx,Heading4:Ex,Heading5:Ax,Heading6:Lx,Headphones:Vx,Heart:Ux,HeartCrack:Mx,HeartHandshake:Tx,HeartOff:Dx,HeartPulse:Px,HelpCircle:Rx,HelpingHand:Ox,Hexagon:Fx,Highlighter:Nx,History:jx,Home:Hx,Hop:zx,HopOff:qx,Hotel:Bx,Hourglass:Gx,IceCream:Zx,IceCream2:Wx,Image:Jx,ImageDown:Kx,ImageMinus:Yx,ImageOff:Xx,ImagePlus:Qx,Import:e$,Inbox:t$,Indent:a$,IndianRupee:s$,Infinity:o$,Info:n$,InspectionPanel:l$,Instagram:r$,Italic:i$,IterationCcw:d$,IterationCw:c$,JapaneseYen:u$,Joystick:p$,Kanban:_$,KanbanSquare:hd,KanbanSquareDashed:vd,Key:h$,KeyRound:m$,KeySquare:v$,Keyboard:g$,KeyboardMusic:f$,Lamp:$$,LampCeiling:y$,LampDesk:b$,LampFloor:w$,LampWallDown:k$,LampWallUp:x$,LandPlot:C$,Landmark:S$,Languages:E$,Laptop:L$,Laptop2:A$,Lasso:V$,LassoSelect:I$,Laugh:M$,Layers:P$,Layers2:T$,Layers3:D$,LayoutDashboard:U$,LayoutGrid:R$,LayoutList:O$,LayoutPanelLeft:F$,LayoutPanelTop:N$,LayoutTemplate:j$,Leaf:H$,LeafyGreen:q$,Library:G$,LibraryBig:z$,LibrarySquare:B$,LifeBuoy:W$,Ligature:Z$,Lightbulb:Y$,LightbulbOff:K$,LineChart:X$,Link:e4,Link2:J$,Link2Off:Q$,Linkedin:t4,List:v4,ListChecks:a4,ListEnd:s4,ListFilter:o4,ListMinus:n4,ListMusic:l4,ListOrdered:r4,ListPlus:i4,ListRestart:d4,ListStart:c4,ListTodo:u4,ListTree:p4,ListVideo:_4,ListX:m4,Loader:f4,Loader2:h4,Locate:b4,LocateFixed:g4,LocateOff:y4,Lock:k4,LockKeyhole:w4,LogIn:x4,LogOut:$4,Lollipop:C4,Luggage:S4,MSquare:E4,Magnet:A4,Mail:R4,MailCheck:L4,MailMinus:I4,MailOpen:V4,MailPlus:M4,MailQuestion:T4,MailSearch:D4,MailWarning:P4,MailX:U4,Mailbox:O4,Mails:F4,Map:q4,MapPin:j4,MapPinOff:N4,MapPinned:H4,Martini:z4,Maximize:G4,Maximize2:B4,Medal:W4,Megaphone:K4,MegaphoneOff:Z4,Meh:Y4,MemoryStick:X4,Menu:J4,MenuSquare:Q4,Merge:e3,MessageCircle:u3,MessageCircleCode:t3,MessageCircleDashed:a3,MessageCircleHeart:s3,MessageCircleMore:o3,MessageCircleOff:n3,MessageCirclePlus:l3,MessageCircleQuestion:r3,MessageCircleReply:i3,MessageCircleWarning:d3,MessageCircleX:c3,MessageSquare:S3,MessageSquareCode:p3,MessageSquareDashed:_3,MessageSquareDiff:m3,MessageSquareDot:v3,MessageSquareHeart:h3,MessageSquareMore:f3,MessageSquareOff:g3,MessageSquarePlus:y3,MessageSquareQuote:b3,MessageSquareReply:w3,MessageSquareShare:k3,MessageSquareText:x3,MessageSquareWarning:$3,MessageSquareX:C3,MessagesSquare:E3,Mic:I3,Mic2:A3,MicOff:L3,Microscope:V3,Microwave:M3,Milestone:T3,Milk:P3,MilkOff:D3,Minimize:R3,Minimize2:U3,Minus:N3,MinusCircle:O3,MinusSquare:F3,Monitor:Q3,MonitorCheck:j3,MonitorDot:H3,MonitorDown:q3,MonitorOff:z3,MonitorPause:B3,MonitorPlay:G3,MonitorSmartphone:W3,MonitorSpeaker:Z3,MonitorStop:K3,MonitorUp:Y3,MonitorX:X3,Moon:e8,MoonStar:J3,MoreHorizontal:t8,MoreVertical:a8,Mountain:o8,MountainSnow:s8,Mouse:d8,MousePointer:i8,MousePointer2:n8,MousePointerClick:l8,MousePointerSquare:fd,MousePointerSquareDashed:r8,Move:k8,Move3d:gd,MoveDiagonal:u8,MoveDiagonal2:c8,MoveDown:m8,MoveDownLeft:p8,MoveDownRight:_8,MoveHorizontal:v8,MoveLeft:h8,MoveRight:f8,MoveUp:b8,MoveUpLeft:g8,MoveUpRight:y8,MoveVertical:w8,Music:S8,Music2:x8,Music3:$8,Music4:C8,Navigation:I8,Navigation2:A8,Navigation2Off:E8,NavigationOff:L8,Network:V8,Newspaper:M8,Nfc:T8,Nut:P8,NutOff:D8,Octagon:U8,Option:R8,Orbit:O8,Outdent:F8,Package:W8,Package2:N8,PackageCheck:j8,PackageMinus:H8,PackageOpen:q8,PackagePlus:z8,PackageSearch:B8,PackageX:G8,PaintBucket:Z8,Paintbrush:Y8,Paintbrush2:K8,Palette:X8,Palmtree:Q8,PanelBottom:t5,PanelBottomClose:J8,PanelBottomDashed:yd,PanelBottomOpen:e5,PanelLeft:xd,PanelLeftClose:bd,PanelLeftDashed:wd,PanelLeftOpen:kd,PanelRight:o5,PanelRightClose:a5,PanelRightDashed:$d,PanelRightOpen:s5,PanelTop:r5,PanelTopClose:n5,PanelTopDashed:Cd,PanelTopOpen:l5,PanelsLeftBottom:i5,PanelsRightBottom:d5,PanelsTopLeft:Sd,Paperclip:c5,Parentheses:u5,ParkingCircle:_5,ParkingCircleOff:p5,ParkingMeter:m5,ParkingSquare:h5,ParkingSquareOff:v5,PartyPopper:f5,Pause:b5,PauseCircle:g5,PauseOctagon:y5,PawPrint:w5,PcCase:k5,Pen:Ad,PenLine:Ed,PenSquare:Ol,PenTool:x5,Pencil:S5,PencilLine:$5,PencilRuler:C5,Pentagon:E5,Percent:V5,PercentCircle:A5,PercentDiamond:L5,PercentSquare:I5,PersonStanding:M5,Phone:F5,PhoneCall:T5,PhoneForwarded:D5,PhoneIncoming:P5,PhoneMissed:U5,PhoneOff:R5,PhoneOutgoing:O5,Pi:j5,PiSquare:N5,Piano:H5,PictureInPicture:z5,PictureInPicture2:q5,PieChart:B5,PiggyBank:G5,Pilcrow:Z5,PilcrowSquare:W5,Pill:K5,Pin:X5,PinOff:Y5,Pipette:Q5,Pizza:J5,Plane:aC,PlaneLanding:eC,PlaneTakeoff:tC,Play:nC,PlayCircle:sC,PlaySquare:oC,Plug:dC,Plug2:lC,PlugZap:iC,PlugZap2:rC,Plus:pC,PlusCircle:cC,PlusSquare:uC,Pocket:mC,PocketKnife:_C,Podcast:vC,Pointer:fC,PointerOff:hC,Popcorn:gC,Popsicle:yC,PoundSterling:bC,Power:$C,PowerCircle:wC,PowerOff:kC,PowerSquare:xC,Presentation:CC,Printer:SC,Projector:EC,Puzzle:AC,Pyramid:LC,QrCode:IC,Quote:VC,Rabbit:MC,Radar:TC,Radiation:DC,Radio:RC,RadioReceiver:PC,RadioTower:UC,Radius:OC,RailSymbol:FC,Rainbow:NC,Rat:jC,Ratio:HC,Receipt:qC,RectangleHorizontal:zC,RectangleVertical:BC,Recycle:GC,Redo:KC,Redo2:WC,RedoDot:ZC,RefreshCcw:XC,RefreshCcwDot:YC,RefreshCw:JC,RefreshCwOff:QC,Refrigerator:eS,Regex:tS,RemoveFormatting:aS,Repeat:nS,Repeat1:sS,Repeat2:oS,Replace:rS,ReplaceAll:lS,Reply:dS,ReplyAll:iS,Rewind:cS,Ribbon:uS,Rocket:pS,RockingChair:_S,RollerCoaster:mS,Rotate3d:Ld,RotateCcw:vS,RotateCw:hS,Route:gS,RouteOff:fS,Router:yS,Rows2:Id,Rows3:Vd,Rows4:bS,Rss:wS,Ruler:kS,RussianRuble:xS,Sailboat:$S,Salad:CS,Sandwich:SS,Satellite:AS,SatelliteDish:ES,Save:IS,SaveAll:LS,Scale:VS,Scale3d:Md,Scaling:MS,Scan:FS,ScanBarcode:TS,ScanEye:DS,ScanFace:PS,ScanLine:US,ScanSearch:RS,ScanText:OS,ScatterChart:NS,School:HS,School2:jS,Scissors:GS,ScissorsLineDashed:qS,ScissorsSquare:BS,ScissorsSquareDashedBottom:zS,ScreenShare:ZS,ScreenShareOff:WS,Scroll:YS,ScrollText:KS,Search:t6,SearchCheck:XS,SearchCode:QS,SearchSlash:JS,SearchX:e6,Send:s6,SendHorizontal:Td,SendToBack:a6,SeparatorHorizontal:o6,SeparatorVertical:n6,Server:d6,ServerCog:l6,ServerCrash:r6,ServerOff:i6,Settings:u6,Settings2:c6,Shapes:p6,Share:m6,Share2:_6,Sheet:v6,Shell:h6,Shield:S6,ShieldAlert:f6,ShieldBan:g6,ShieldCheck:y6,ShieldEllipsis:b6,ShieldHalf:w6,ShieldMinus:k6,ShieldOff:x6,ShieldPlus:$6,ShieldQuestion:C6,ShieldX:Dd,Ship:A6,ShipWheel:E6,Shirt:L6,ShoppingBag:I6,ShoppingBasket:V6,ShoppingCart:M6,Shovel:T6,ShowerHead:D6,Shrink:P6,Shrub:U6,Shuffle:R6,Sigma:F6,SigmaSquare:O6,Signal:z6,SignalHigh:N6,SignalLow:j6,SignalMedium:H6,SignalZero:q6,Signpost:G6,SignpostBig:B6,Siren:W6,SkipBack:Z6,SkipForward:K6,Skull:Y6,Slack:X6,Slash:Q6,Slice:J6,Sliders:tE,SlidersHorizontal:eE,Smartphone:oE,SmartphoneCharging:aE,SmartphoneNfc:sE,Smile:lE,SmilePlus:nE,Snail:rE,Snowflake:iE,Sofa:dE,Soup:cE,Space:uE,Spade:pE,Sparkle:_E,Sparkles:Pd,Speaker:mE,Speech:vE,SpellCheck:fE,SpellCheck2:hE,Spline:gE,Split:wE,SplitSquareHorizontal:yE,SplitSquareVertical:bE,SprayCan:kE,Sprout:xE,Square:ME,SquareAsterisk:$E,SquareCode:CE,SquareDashedBottom:EE,SquareDashedBottomCode:SE,SquareDot:AE,SquareEqual:LE,SquareSlash:IE,SquareStack:VE,SquareUser:Rd,SquareUserRound:Ud,Squircle:TE,Squirrel:DE,Stamp:PE,Star:OE,StarHalf:UE,StarOff:RE,StepBack:FE,StepForward:NE,Stethoscope:jE,Sticker:HE,StickyNote:qE,StopCircle:zE,Store:BE,StretchHorizontal:GE,StretchVertical:WE,Strikethrough:ZE,Subscript:KE,Subtitles:YE,Sun:tA,SunDim:XE,SunMedium:QE,SunMoon:JE,SunSnow:eA,Sunrise:aA,Sunset:sA,Superscript:oA,SwissFranc:nA,SwitchCamera:lA,Sword:rA,Swords:iA,Syringe:dA,Table:pA,Table2:cA,TableProperties:uA,Tablet:mA,TabletSmartphone:_A,Tablets:vA,Tag:hA,Tags:fA,Tally1:gA,Tally2:yA,Tally3:bA,Tally4:wA,Tally5:kA,Tangent:xA,Target:$A,Tent:SA,TentTree:CA,Terminal:AA,TerminalSquare:EA,TestTube:IA,TestTube2:LA,TestTubes:VA,Text:PA,TextCursor:TA,TextCursorInput:MA,TextQuote:DA,TextSelect:Od,Theater:UA,Thermometer:FA,ThermometerSnowflake:RA,ThermometerSun:OA,ThumbsDown:NA,ThumbsUp:jA,Ticket:HA,Timer:BA,TimerOff:qA,TimerReset:zA,ToggleLeft:GA,ToggleRight:WA,Tornado:ZA,Torus:KA,Touchpad:XA,TouchpadOff:YA,TowerControl:QA,ToyBrick:JA,Tractor:eL,TrafficCone:tL,TrainFront:sL,TrainFrontTunnel:aL,TrainTrack:oL,TramFront:Fd,Trash:lL,Trash2:nL,TreeDeciduous:rL,TreePine:iL,Trees:dL,Trello:cL,TrendingDown:uL,TrendingUp:pL,Triangle:mL,TriangleRight:_L,Trophy:vL,Truck:hL,Turtle:fL,Tv:yL,Tv2:gL,Twitch:bL,Twitter:wL,Type:kL,Umbrella:$L,UmbrellaOff:xL,Underline:CL,Undo:AL,Undo2:SL,UndoDot:EL,UnfoldHorizontal:LL,UnfoldVertical:IL,Ungroup:VL,Unlink:TL,Unlink2:ML,Unlock:PL,UnlockKeyhole:DL,Unplug:UL,Upload:OL,UploadCloud:RL,Usb:FL,User:WL,UserCheck:NL,UserCog:jL,UserMinus:HL,UserPlus:qL,UserRound:Bd,UserRoundCheck:Nd,UserRoundCog:jd,UserRoundMinus:Hd,UserRoundPlus:qd,UserRoundSearch:zL,UserRoundX:zd,UserSearch:BL,UserX:GL,Users:ZL,UsersRound:Gd,Utensils:YL,UtensilsCrossed:KL,UtilityPole:XL,Variable:QL,Vegan:JL,VenetianMask:e7,Vibrate:a7,VibrateOff:t7,Video:o7,VideoOff:s7,Videotape:n7,View:l7,Voicemail:r7,Volume:u7,Volume1:i7,Volume2:d7,VolumeX:c7,Vote:p7,Wallet:v7,Wallet2:_7,WalletCards:m7,Wallpaper:h7,Wand:g7,Wand2:f7,Warehouse:y7,Watch:b7,Waves:w7,Waypoints:k7,Webcam:x7,Webhook:$7,Weight:C7,Wheat:E7,WheatOff:S7,WholeWord:A7,Wifi:I7,WifiOff:L7,Wind:V7,Wine:T7,WineOff:M7,Workflow:D7,WrapText:P7,Wrench:U7,X:N7,XCircle:R7,XOctagon:O7,XSquare:F7,Youtube:j7,Zap:q7,ZapOff:H7,ZoomIn:z7,ZoomOut:B7},Symbol.toStringTag,{value:"Module"}));/** + * @license lucide-vue-next v0.304.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tne=Object.freeze(Object.defineProperty({__proto__:null,AArrowDown:Lm,AArrowDownIcon:Lm,AArrowUp:Im,AArrowUpIcon:Im,ALargeSmall:Vm,ALargeSmallIcon:Vm,Accessibility:Mm,AccessibilityIcon:Mm,Activity:Dm,ActivityIcon:Dm,ActivitySquare:Tm,ActivitySquareIcon:Tm,AirVent:Pm,AirVentIcon:Pm,Airplay:Um,AirplayIcon:Um,AlarmCheck:Bi,AlarmCheckIcon:Bi,AlarmClock:Om,AlarmClockCheck:Bi,AlarmClockCheckIcon:Bi,AlarmClockIcon:Om,AlarmClockMinus:Gi,AlarmClockMinusIcon:Gi,AlarmClockOff:Rm,AlarmClockOffIcon:Rm,AlarmClockPlus:Wi,AlarmClockPlusIcon:Wi,AlarmMinus:Gi,AlarmMinusIcon:Gi,AlarmPlus:Wi,AlarmPlusIcon:Wi,AlarmSmoke:Fm,AlarmSmokeIcon:Fm,Album:Nm,AlbumIcon:Nm,AlertCircle:jm,AlertCircleIcon:jm,AlertOctagon:Hm,AlertOctagonIcon:Hm,AlertTriangle:qm,AlertTriangleIcon:qm,AlignCenter:Gm,AlignCenterHorizontal:zm,AlignCenterHorizontalIcon:zm,AlignCenterIcon:Gm,AlignCenterVertical:Bm,AlignCenterVerticalIcon:Bm,AlignEndHorizontal:Wm,AlignEndHorizontalIcon:Wm,AlignEndVertical:Zm,AlignEndVerticalIcon:Zm,AlignHorizontalDistributeCenter:Km,AlignHorizontalDistributeCenterIcon:Km,AlignHorizontalDistributeEnd:Ym,AlignHorizontalDistributeEndIcon:Ym,AlignHorizontalDistributeStart:Xm,AlignHorizontalDistributeStartIcon:Xm,AlignHorizontalJustifyCenter:Qm,AlignHorizontalJustifyCenterIcon:Qm,AlignHorizontalJustifyEnd:Jm,AlignHorizontalJustifyEndIcon:Jm,AlignHorizontalJustifyStart:ev,AlignHorizontalJustifyStartIcon:ev,AlignHorizontalSpaceAround:tv,AlignHorizontalSpaceAroundIcon:tv,AlignHorizontalSpaceBetween:av,AlignHorizontalSpaceBetweenIcon:av,AlignJustify:sv,AlignJustifyIcon:sv,AlignLeft:ov,AlignLeftIcon:ov,AlignRight:nv,AlignRightIcon:nv,AlignStartHorizontal:lv,AlignStartHorizontalIcon:lv,AlignStartVertical:rv,AlignStartVerticalIcon:rv,AlignVerticalDistributeCenter:iv,AlignVerticalDistributeCenterIcon:iv,AlignVerticalDistributeEnd:dv,AlignVerticalDistributeEndIcon:dv,AlignVerticalDistributeStart:cv,AlignVerticalDistributeStartIcon:cv,AlignVerticalJustifyCenter:uv,AlignVerticalJustifyCenterIcon:uv,AlignVerticalJustifyEnd:pv,AlignVerticalJustifyEndIcon:pv,AlignVerticalJustifyStart:_v,AlignVerticalJustifyStartIcon:_v,AlignVerticalSpaceAround:mv,AlignVerticalSpaceAroundIcon:mv,AlignVerticalSpaceBetween:vv,AlignVerticalSpaceBetweenIcon:vv,Ampersand:hv,AmpersandIcon:hv,Ampersands:fv,AmpersandsIcon:fv,Anchor:gv,AnchorIcon:gv,Angry:yv,AngryIcon:yv,Annoyed:bv,AnnoyedIcon:bv,Antenna:wv,AntennaIcon:wv,Anvil:kv,AnvilIcon:kv,Aperture:xv,ApertureIcon:xv,AppWindow:$v,AppWindowIcon:$v,Apple:Cv,AppleIcon:Cv,Archive:Av,ArchiveIcon:Av,ArchiveRestore:Sv,ArchiveRestoreIcon:Sv,ArchiveX:Ev,ArchiveXIcon:Ev,AreaChart:Lv,AreaChartIcon:Lv,Armchair:Iv,ArmchairIcon:Iv,ArrowBigDown:Mv,ArrowBigDownDash:Vv,ArrowBigDownDashIcon:Vv,ArrowBigDownIcon:Mv,ArrowBigLeft:Dv,ArrowBigLeftDash:Tv,ArrowBigLeftDashIcon:Tv,ArrowBigLeftIcon:Dv,ArrowBigRight:Uv,ArrowBigRightDash:Pv,ArrowBigRightDashIcon:Pv,ArrowBigRightIcon:Uv,ArrowBigUp:Ov,ArrowBigUpDash:Rv,ArrowBigUpDashIcon:Rv,ArrowBigUpIcon:Ov,ArrowDown:e1,ArrowDown01:Fv,ArrowDown01Icon:Fv,ArrowDown10:Nv,ArrowDown10Icon:Nv,ArrowDownAZ:Zi,ArrowDownAZIcon:Zi,ArrowDownAz:Zi,ArrowDownAzIcon:Zi,ArrowDownCircle:jv,ArrowDownCircleIcon:jv,ArrowDownFromLine:Hv,ArrowDownFromLineIcon:Hv,ArrowDownIcon:e1,ArrowDownLeft:Bv,ArrowDownLeftFromCircle:qv,ArrowDownLeftFromCircleIcon:qv,ArrowDownLeftIcon:Bv,ArrowDownLeftSquare:zv,ArrowDownLeftSquareIcon:zv,ArrowDownNarrowWide:Gv,ArrowDownNarrowWideIcon:Gv,ArrowDownRight:Kv,ArrowDownRightFromCircle:Wv,ArrowDownRightFromCircleIcon:Wv,ArrowDownRightIcon:Kv,ArrowDownRightSquare:Zv,ArrowDownRightSquareIcon:Zv,ArrowDownSquare:Yv,ArrowDownSquareIcon:Yv,ArrowDownToDot:Xv,ArrowDownToDotIcon:Xv,ArrowDownToLine:Qv,ArrowDownToLineIcon:Qv,ArrowDownUp:Jv,ArrowDownUpIcon:Jv,ArrowDownWideNarrow:Ki,ArrowDownWideNarrowIcon:Ki,ArrowDownZA:Yi,ArrowDownZAIcon:Yi,ArrowDownZa:Yi,ArrowDownZaIcon:Yi,ArrowLeft:l1,ArrowLeftCircle:t1,ArrowLeftCircleIcon:t1,ArrowLeftFromLine:a1,ArrowLeftFromLineIcon:a1,ArrowLeftIcon:l1,ArrowLeftRight:s1,ArrowLeftRightIcon:s1,ArrowLeftSquare:o1,ArrowLeftSquareIcon:o1,ArrowLeftToLine:n1,ArrowLeftToLineIcon:n1,ArrowRight:p1,ArrowRightCircle:r1,ArrowRightCircleIcon:r1,ArrowRightFromLine:i1,ArrowRightFromLineIcon:i1,ArrowRightIcon:p1,ArrowRightLeft:d1,ArrowRightLeftIcon:d1,ArrowRightSquare:c1,ArrowRightSquareIcon:c1,ArrowRightToLine:u1,ArrowRightToLineIcon:u1,ArrowUp:A1,ArrowUp01:_1,ArrowUp01Icon:_1,ArrowUp10:m1,ArrowUp10Icon:m1,ArrowUpAZ:Xi,ArrowUpAZIcon:Xi,ArrowUpAz:Xi,ArrowUpAzIcon:Xi,ArrowUpCircle:v1,ArrowUpCircleIcon:v1,ArrowUpDown:h1,ArrowUpDownIcon:h1,ArrowUpFromDot:f1,ArrowUpFromDotIcon:f1,ArrowUpFromLine:g1,ArrowUpFromLineIcon:g1,ArrowUpIcon:A1,ArrowUpLeft:w1,ArrowUpLeftFromCircle:y1,ArrowUpLeftFromCircleIcon:y1,ArrowUpLeftIcon:w1,ArrowUpLeftSquare:b1,ArrowUpLeftSquareIcon:b1,ArrowUpNarrowWide:Qi,ArrowUpNarrowWideIcon:Qi,ArrowUpRight:$1,ArrowUpRightFromCircle:k1,ArrowUpRightFromCircleIcon:k1,ArrowUpRightIcon:$1,ArrowUpRightSquare:x1,ArrowUpRightSquareIcon:x1,ArrowUpSquare:C1,ArrowUpSquareIcon:C1,ArrowUpToLine:S1,ArrowUpToLineIcon:S1,ArrowUpWideNarrow:E1,ArrowUpWideNarrowIcon:E1,ArrowUpZA:Ji,ArrowUpZAIcon:Ji,ArrowUpZa:Ji,ArrowUpZaIcon:Ji,ArrowsUpFromLine:L1,ArrowsUpFromLineIcon:L1,Asterisk:I1,AsteriskIcon:I1,AtSign:V1,AtSignIcon:V1,Atom:M1,AtomIcon:M1,AudioLines:T1,AudioLinesIcon:T1,AudioWaveform:D1,AudioWaveformIcon:D1,Award:P1,AwardIcon:P1,Axe:U1,AxeIcon:U1,Axis3D:ed,Axis3DIcon:ed,Axis3d:ed,Axis3dIcon:ed,Baby:R1,BabyIcon:R1,Backpack:O1,BackpackIcon:O1,Badge:eh,BadgeAlert:F1,BadgeAlertIcon:F1,BadgeCent:N1,BadgeCentIcon:N1,BadgeCheck:td,BadgeCheckIcon:td,BadgeDollarSign:j1,BadgeDollarSignIcon:j1,BadgeEuro:H1,BadgeEuroIcon:H1,BadgeHelp:q1,BadgeHelpIcon:q1,BadgeIcon:eh,BadgeIndianRupee:z1,BadgeIndianRupeeIcon:z1,BadgeInfo:B1,BadgeInfoIcon:B1,BadgeJapaneseYen:G1,BadgeJapaneseYenIcon:G1,BadgeMinus:W1,BadgeMinusIcon:W1,BadgePercent:Z1,BadgePercentIcon:Z1,BadgePlus:K1,BadgePlusIcon:K1,BadgePoundSterling:Y1,BadgePoundSterlingIcon:Y1,BadgeRussianRuble:X1,BadgeRussianRubleIcon:X1,BadgeSwissFranc:Q1,BadgeSwissFrancIcon:Q1,BadgeX:J1,BadgeXIcon:J1,BaggageClaim:th,BaggageClaimIcon:th,Ban:ah,BanIcon:ah,Banana:sh,BananaIcon:sh,Banknote:oh,BanknoteIcon:oh,BarChart:uh,BarChart2:nh,BarChart2Icon:nh,BarChart3:lh,BarChart3Icon:lh,BarChart4:rh,BarChart4Icon:rh,BarChartBig:ih,BarChartBigIcon:ih,BarChartHorizontal:ch,BarChartHorizontalBig:dh,BarChartHorizontalBigIcon:dh,BarChartHorizontalIcon:ch,BarChartIcon:uh,Barcode:ph,BarcodeIcon:ph,Baseline:_h,BaselineIcon:_h,Bath:mh,BathIcon:mh,Battery:bh,BatteryCharging:vh,BatteryChargingIcon:vh,BatteryFull:hh,BatteryFullIcon:hh,BatteryIcon:bh,BatteryLow:fh,BatteryLowIcon:fh,BatteryMedium:gh,BatteryMediumIcon:gh,BatteryWarning:yh,BatteryWarningIcon:yh,Beaker:wh,BeakerIcon:wh,Bean:xh,BeanIcon:xh,BeanOff:kh,BeanOffIcon:kh,Bed:Sh,BedDouble:$h,BedDoubleIcon:$h,BedIcon:Sh,BedSingle:Ch,BedSingleIcon:Ch,Beef:Eh,BeefIcon:Eh,Beer:Ah,BeerIcon:Ah,Bell:Ph,BellDot:Lh,BellDotIcon:Lh,BellElectric:Ih,BellElectricIcon:Ih,BellIcon:Ph,BellMinus:Vh,BellMinusIcon:Vh,BellOff:Mh,BellOffIcon:Mh,BellPlus:Th,BellPlusIcon:Th,BellRing:Dh,BellRingIcon:Dh,Bike:Uh,BikeIcon:Uh,Binary:Rh,BinaryIcon:Rh,Biohazard:Oh,BiohazardIcon:Oh,Bird:Fh,BirdIcon:Fh,Bitcoin:Nh,BitcoinIcon:Nh,Blinds:jh,BlindsIcon:jh,Blocks:Hh,BlocksIcon:Hh,Bluetooth:Gh,BluetoothConnected:qh,BluetoothConnectedIcon:qh,BluetoothIcon:Gh,BluetoothOff:zh,BluetoothOffIcon:zh,BluetoothSearching:Bh,BluetoothSearchingIcon:Bh,Bold:Wh,BoldIcon:Wh,Bolt:Zh,BoltIcon:Zh,Bomb:Kh,BombIcon:Kh,Bone:Yh,BoneIcon:Yh,Book:bf,BookA:Xh,BookAIcon:Xh,BookAudio:Qh,BookAudioIcon:Qh,BookCheck:Jh,BookCheckIcon:Jh,BookCopy:ef,BookCopyIcon:ef,BookDashed:ad,BookDashedIcon:ad,BookDown:tf,BookDownIcon:tf,BookHeadphones:af,BookHeadphonesIcon:af,BookHeart:sf,BookHeartIcon:sf,BookIcon:bf,BookImage:of,BookImageIcon:of,BookKey:nf,BookKeyIcon:nf,BookLock:lf,BookLockIcon:lf,BookMarked:rf,BookMarkedIcon:rf,BookMinus:df,BookMinusIcon:df,BookOpen:pf,BookOpenCheck:cf,BookOpenCheckIcon:cf,BookOpenIcon:pf,BookOpenText:uf,BookOpenTextIcon:uf,BookPlus:_f,BookPlusIcon:_f,BookTemplate:ad,BookTemplateIcon:ad,BookText:mf,BookTextIcon:mf,BookType:vf,BookTypeIcon:vf,BookUp:ff,BookUp2:hf,BookUp2Icon:hf,BookUpIcon:ff,BookUser:gf,BookUserIcon:gf,BookX:yf,BookXIcon:yf,Bookmark:Cf,BookmarkCheck:wf,BookmarkCheckIcon:wf,BookmarkIcon:Cf,BookmarkMinus:kf,BookmarkMinusIcon:kf,BookmarkPlus:xf,BookmarkPlusIcon:xf,BookmarkX:$f,BookmarkXIcon:$f,BoomBox:Sf,BoomBoxIcon:Sf,Bot:Ef,BotIcon:Ef,Box:Lf,BoxIcon:Lf,BoxSelect:Af,BoxSelectIcon:Af,Boxes:If,BoxesIcon:If,Braces:sd,BracesIcon:sd,Brackets:Vf,BracketsIcon:Vf,Brain:Df,BrainCircuit:Mf,BrainCircuitIcon:Mf,BrainCog:Tf,BrainCogIcon:Tf,BrainIcon:Df,BrickWall:Pf,BrickWallIcon:Pf,Briefcase:Uf,BriefcaseIcon:Uf,BringToFront:Rf,BringToFrontIcon:Rf,Brush:Of,BrushIcon:Of,Bug:jf,BugIcon:jf,BugOff:Ff,BugOffIcon:Ff,BugPlay:Nf,BugPlayIcon:Nf,Building:qf,Building2:Hf,Building2Icon:Hf,BuildingIcon:qf,Bus:Bf,BusFront:zf,BusFrontIcon:zf,BusIcon:Bf,Cable:Wf,CableCar:Gf,CableCarIcon:Gf,CableIcon:Wf,Cake:Kf,CakeIcon:Kf,CakeSlice:Zf,CakeSliceIcon:Zf,Calculator:Yf,CalculatorIcon:Yf,Calendar:dg,CalendarCheck:Qf,CalendarCheck2:Xf,CalendarCheck2Icon:Xf,CalendarCheckIcon:Qf,CalendarClock:Jf,CalendarClockIcon:Jf,CalendarDays:eg,CalendarDaysIcon:eg,CalendarHeart:tg,CalendarHeartIcon:tg,CalendarIcon:dg,CalendarMinus:ag,CalendarMinusIcon:ag,CalendarOff:sg,CalendarOffIcon:sg,CalendarPlus:og,CalendarPlusIcon:og,CalendarRange:ng,CalendarRangeIcon:ng,CalendarSearch:lg,CalendarSearchIcon:lg,CalendarX:ig,CalendarX2:rg,CalendarX2Icon:rg,CalendarXIcon:ig,Camera:ug,CameraIcon:ug,CameraOff:cg,CameraOffIcon:cg,CandlestickChart:pg,CandlestickChartIcon:pg,Candy:vg,CandyCane:_g,CandyCaneIcon:_g,CandyIcon:vg,CandyOff:mg,CandyOffIcon:mg,Car:gg,CarFront:hg,CarFrontIcon:hg,CarIcon:gg,CarTaxiFront:fg,CarTaxiFrontIcon:fg,Caravan:yg,CaravanIcon:yg,Carrot:bg,CarrotIcon:bg,CaseLower:wg,CaseLowerIcon:wg,CaseSensitive:kg,CaseSensitiveIcon:kg,CaseUpper:xg,CaseUpperIcon:xg,CassetteTape:$g,CassetteTapeIcon:$g,Cast:Cg,CastIcon:Cg,Castle:Sg,CastleIcon:Sg,Cat:Eg,CatIcon:Eg,Cctv:Ag,CctvIcon:Ag,Check:Dg,CheckCheck:Lg,CheckCheckIcon:Lg,CheckCircle:Vg,CheckCircle2:Ig,CheckCircle2Icon:Ig,CheckCircleIcon:Vg,CheckIcon:Dg,CheckSquare:Tg,CheckSquare2:Mg,CheckSquare2Icon:Mg,CheckSquareIcon:Tg,ChefHat:Pg,ChefHatIcon:Pg,Cherry:Ug,CherryIcon:Ug,ChevronDown:Fg,ChevronDownCircle:Rg,ChevronDownCircleIcon:Rg,ChevronDownIcon:Fg,ChevronDownSquare:Og,ChevronDownSquareIcon:Og,ChevronFirst:Ng,ChevronFirstIcon:Ng,ChevronLast:jg,ChevronLastIcon:jg,ChevronLeft:zg,ChevronLeftCircle:Hg,ChevronLeftCircleIcon:Hg,ChevronLeftIcon:zg,ChevronLeftSquare:qg,ChevronLeftSquareIcon:qg,ChevronRight:Wg,ChevronRightCircle:Bg,ChevronRightCircleIcon:Bg,ChevronRightIcon:Wg,ChevronRightSquare:Gg,ChevronRightSquareIcon:Gg,ChevronUp:Yg,ChevronUpCircle:Zg,ChevronUpCircleIcon:Zg,ChevronUpIcon:Yg,ChevronUpSquare:Kg,ChevronUpSquareIcon:Kg,ChevronsDown:Qg,ChevronsDownIcon:Qg,ChevronsDownUp:Xg,ChevronsDownUpIcon:Xg,ChevronsLeft:ey,ChevronsLeftIcon:ey,ChevronsLeftRight:Jg,ChevronsLeftRightIcon:Jg,ChevronsRight:ay,ChevronsRightIcon:ay,ChevronsRightLeft:ty,ChevronsRightLeftIcon:ty,ChevronsUp:oy,ChevronsUpDown:sy,ChevronsUpDownIcon:sy,ChevronsUpIcon:oy,Chrome:ny,ChromeIcon:ny,Church:ly,ChurchIcon:ly,Cigarette:iy,CigaretteIcon:iy,CigaretteOff:ry,CigaretteOffIcon:ry,Circle:fy,CircleDashed:dy,CircleDashedIcon:dy,CircleDollarSign:cy,CircleDollarSignIcon:cy,CircleDot:py,CircleDotDashed:uy,CircleDotDashedIcon:uy,CircleDotIcon:py,CircleEllipsis:_y,CircleEllipsisIcon:_y,CircleEqual:my,CircleEqualIcon:my,CircleIcon:fy,CircleOff:vy,CircleOffIcon:vy,CircleSlash:hy,CircleSlash2:od,CircleSlash2Icon:od,CircleSlashIcon:hy,CircleSlashed:od,CircleSlashedIcon:od,CircleUser:ld,CircleUserIcon:ld,CircleUserRound:nd,CircleUserRoundIcon:nd,CircuitBoard:gy,CircuitBoardIcon:gy,Citrus:yy,CitrusIcon:yy,Clapperboard:by,ClapperboardIcon:by,Clipboard:Ly,ClipboardCheck:wy,ClipboardCheckIcon:wy,ClipboardCopy:ky,ClipboardCopyIcon:ky,ClipboardEdit:xy,ClipboardEditIcon:xy,ClipboardIcon:Ly,ClipboardList:$y,ClipboardListIcon:$y,ClipboardPaste:Cy,ClipboardPasteIcon:Cy,ClipboardSignature:Sy,ClipboardSignatureIcon:Sy,ClipboardType:Ey,ClipboardTypeIcon:Ey,ClipboardX:Ay,ClipboardXIcon:Ay,Clock:Hy,Clock1:Iy,Clock10:Vy,Clock10Icon:Vy,Clock11:My,Clock11Icon:My,Clock12:Ty,Clock12Icon:Ty,Clock1Icon:Iy,Clock2:Dy,Clock2Icon:Dy,Clock3:Py,Clock3Icon:Py,Clock4:Uy,Clock4Icon:Uy,Clock5:Ry,Clock5Icon:Ry,Clock6:Oy,Clock6Icon:Oy,Clock7:Fy,Clock7Icon:Fy,Clock8:Ny,Clock8Icon:Ny,Clock9:jy,Clock9Icon:jy,ClockIcon:Hy,Cloud:a0,CloudCog:qy,CloudCogIcon:qy,CloudDrizzle:zy,CloudDrizzleIcon:zy,CloudFog:By,CloudFogIcon:By,CloudHail:Gy,CloudHailIcon:Gy,CloudIcon:a0,CloudLightning:Wy,CloudLightningIcon:Wy,CloudMoon:Ky,CloudMoonIcon:Ky,CloudMoonRain:Zy,CloudMoonRainIcon:Zy,CloudOff:Yy,CloudOffIcon:Yy,CloudRain:Qy,CloudRainIcon:Qy,CloudRainWind:Xy,CloudRainWindIcon:Xy,CloudSnow:Jy,CloudSnowIcon:Jy,CloudSun:t0,CloudSunIcon:t0,CloudSunRain:e0,CloudSunRainIcon:e0,Cloudy:s0,CloudyIcon:s0,Clover:o0,CloverIcon:o0,Club:n0,ClubIcon:n0,Code:r0,Code2:l0,Code2Icon:l0,CodeIcon:r0,Codepen:i0,CodepenIcon:i0,Codesandbox:d0,CodesandboxIcon:d0,Coffee:c0,CoffeeIcon:c0,Cog:u0,CogIcon:u0,Coins:p0,CoinsIcon:p0,Columns:rd,Columns2:rd,Columns2Icon:rd,Columns3:id,Columns3Icon:id,Columns4:_0,Columns4Icon:_0,ColumnsIcon:rd,Combine:m0,CombineIcon:m0,Command:v0,CommandIcon:v0,Compass:h0,CompassIcon:h0,Component:f0,ComponentIcon:f0,Computer:g0,ComputerIcon:g0,ConciergeBell:y0,ConciergeBellIcon:y0,Cone:b0,ConeIcon:b0,Construction:w0,ConstructionIcon:w0,Contact:x0,Contact2:k0,Contact2Icon:k0,ContactIcon:x0,Container:$0,ContainerIcon:$0,Contrast:C0,ContrastIcon:C0,Cookie:S0,CookieIcon:S0,CookingPot:E0,CookingPotIcon:E0,Copy:T0,CopyCheck:A0,CopyCheckIcon:A0,CopyIcon:T0,CopyMinus:L0,CopyMinusIcon:L0,CopyPlus:I0,CopyPlusIcon:I0,CopySlash:V0,CopySlashIcon:V0,CopyX:M0,CopyXIcon:M0,Copyleft:D0,CopyleftIcon:D0,Copyright:P0,CopyrightIcon:P0,CornerDownLeft:U0,CornerDownLeftIcon:U0,CornerDownRight:R0,CornerDownRightIcon:R0,CornerLeftDown:O0,CornerLeftDownIcon:O0,CornerLeftUp:F0,CornerLeftUpIcon:F0,CornerRightDown:N0,CornerRightDownIcon:N0,CornerRightUp:j0,CornerRightUpIcon:j0,CornerUpLeft:H0,CornerUpLeftIcon:H0,CornerUpRight:q0,CornerUpRightIcon:q0,Cpu:z0,CpuIcon:z0,CreativeCommons:B0,CreativeCommonsIcon:B0,CreditCard:G0,CreditCardIcon:G0,Croissant:W0,CroissantIcon:W0,Crop:Z0,CropIcon:Z0,Cross:K0,CrossIcon:K0,Crosshair:Y0,CrosshairIcon:Y0,Crown:X0,CrownIcon:X0,Cuboid:Q0,CuboidIcon:Q0,CupSoda:J0,CupSodaIcon:J0,CurlyBraces:sd,CurlyBracesIcon:sd,Currency:e2,CurrencyIcon:e2,Cylinder:t2,CylinderIcon:t2,Database:o2,DatabaseBackup:a2,DatabaseBackupIcon:a2,DatabaseIcon:o2,DatabaseZap:s2,DatabaseZapIcon:s2,Delete:n2,DeleteIcon:n2,Dessert:l2,DessertIcon:l2,Diameter:r2,DiameterIcon:r2,Diamond:i2,DiamondIcon:i2,Dice1:d2,Dice1Icon:d2,Dice2:c2,Dice2Icon:c2,Dice3:u2,Dice3Icon:u2,Dice4:p2,Dice4Icon:p2,Dice5:_2,Dice5Icon:_2,Dice6:m2,Dice6Icon:m2,Dices:v2,DicesIcon:v2,Diff:h2,DiffIcon:h2,Disc:b2,Disc2:f2,Disc2Icon:f2,Disc3:g2,Disc3Icon:g2,DiscAlbum:y2,DiscAlbumIcon:y2,DiscIcon:b2,Divide:x2,DivideCircle:w2,DivideCircleIcon:w2,DivideIcon:x2,DivideSquare:k2,DivideSquareIcon:k2,Dna:C2,DnaIcon:C2,DnaOff:$2,DnaOffIcon:$2,Dog:S2,DogIcon:S2,DollarSign:E2,DollarSignIcon:E2,Donut:A2,DonutIcon:A2,DoorClosed:L2,DoorClosedIcon:L2,DoorOpen:I2,DoorOpenIcon:I2,Dot:V2,DotIcon:V2,Download:T2,DownloadCloud:M2,DownloadCloudIcon:M2,DownloadIcon:T2,DraftingCompass:D2,DraftingCompassIcon:D2,Drama:P2,DramaIcon:P2,Dribbble:U2,DribbbleIcon:U2,Drill:R2,DrillIcon:R2,Droplet:O2,DropletIcon:O2,Droplets:F2,DropletsIcon:F2,Drum:N2,DrumIcon:N2,Drumstick:j2,DrumstickIcon:j2,Dumbbell:H2,DumbbellIcon:H2,Ear:z2,EarIcon:z2,EarOff:q2,EarOffIcon:q2,Edit:Ol,Edit2:Ad,Edit2Icon:Ad,Edit3:Ed,Edit3Icon:Ed,EditIcon:Ol,Egg:W2,EggFried:B2,EggFriedIcon:B2,EggIcon:W2,EggOff:G2,EggOffIcon:G2,Equal:K2,EqualIcon:K2,EqualNot:Z2,EqualNotIcon:Z2,Eraser:Y2,EraserIcon:Y2,Euro:X2,EuroIcon:X2,Expand:Q2,ExpandIcon:Q2,ExternalLink:J2,ExternalLinkIcon:J2,Eye:tb,EyeIcon:tb,EyeOff:eb,EyeOffIcon:eb,Facebook:ab,FacebookIcon:ab,Factory:sb,FactoryIcon:sb,Fan:ob,FanIcon:ob,FastForward:nb,FastForwardIcon:nb,Feather:lb,FeatherIcon:lb,Fence:rb,FenceIcon:rb,FerrisWheel:ib,FerrisWheelIcon:ib,Figma:db,FigmaIcon:db,File:cw,FileArchive:cb,FileArchiveIcon:cb,FileAudio:pb,FileAudio2:ub,FileAudio2Icon:ub,FileAudioIcon:pb,FileAxis3D:dd,FileAxis3DIcon:dd,FileAxis3d:dd,FileAxis3dIcon:dd,FileBadge:mb,FileBadge2:_b,FileBadge2Icon:_b,FileBadgeIcon:mb,FileBarChart:hb,FileBarChart2:vb,FileBarChart2Icon:vb,FileBarChartIcon:hb,FileBox:fb,FileBoxIcon:fb,FileCheck:yb,FileCheck2:gb,FileCheck2Icon:gb,FileCheckIcon:yb,FileClock:bb,FileClockIcon:bb,FileCode:kb,FileCode2:wb,FileCode2Icon:wb,FileCodeIcon:kb,FileCog:cd,FileCog2:cd,FileCog2Icon:cd,FileCogIcon:cd,FileDiff:xb,FileDiffIcon:xb,FileDigit:$b,FileDigitIcon:$b,FileDown:Cb,FileDownIcon:Cb,FileEdit:Sb,FileEditIcon:Sb,FileHeart:Eb,FileHeartIcon:Eb,FileIcon:cw,FileImage:Ab,FileImageIcon:Ab,FileInput:Lb,FileInputIcon:Lb,FileJson:Vb,FileJson2:Ib,FileJson2Icon:Ib,FileJsonIcon:Vb,FileKey:Tb,FileKey2:Mb,FileKey2Icon:Mb,FileKeyIcon:Tb,FileLineChart:Db,FileLineChartIcon:Db,FileLock:Ub,FileLock2:Pb,FileLock2Icon:Pb,FileLockIcon:Ub,FileMinus:Ob,FileMinus2:Rb,FileMinus2Icon:Rb,FileMinusIcon:Ob,FileMusic:Fb,FileMusicIcon:Fb,FileOutput:Nb,FileOutputIcon:Nb,FilePieChart:jb,FilePieChartIcon:jb,FilePlus:qb,FilePlus2:Hb,FilePlus2Icon:Hb,FilePlusIcon:qb,FileQuestion:zb,FileQuestionIcon:zb,FileScan:Bb,FileScanIcon:Bb,FileSearch:Wb,FileSearch2:Gb,FileSearch2Icon:Gb,FileSearchIcon:Wb,FileSignature:Zb,FileSignatureIcon:Zb,FileSpreadsheet:Kb,FileSpreadsheetIcon:Kb,FileStack:Yb,FileStackIcon:Yb,FileSymlink:Xb,FileSymlinkIcon:Xb,FileTerminal:Qb,FileTerminalIcon:Qb,FileText:Jb,FileTextIcon:Jb,FileType:tw,FileType2:ew,FileType2Icon:ew,FileTypeIcon:tw,FileUp:aw,FileUpIcon:aw,FileVideo:ow,FileVideo2:sw,FileVideo2Icon:sw,FileVideoIcon:ow,FileVolume:lw,FileVolume2:nw,FileVolume2Icon:nw,FileVolumeIcon:lw,FileWarning:rw,FileWarningIcon:rw,FileX:dw,FileX2:iw,FileX2Icon:iw,FileXIcon:dw,Files:uw,FilesIcon:uw,Film:pw,FilmIcon:pw,Filter:mw,FilterIcon:mw,FilterX:_w,FilterXIcon:_w,Fingerprint:vw,FingerprintIcon:vw,FireExtinguisher:hw,FireExtinguisherIcon:hw,Fish:yw,FishIcon:yw,FishOff:fw,FishOffIcon:fw,FishSymbol:gw,FishSymbolIcon:gw,Flag:xw,FlagIcon:xw,FlagOff:bw,FlagOffIcon:bw,FlagTriangleLeft:ww,FlagTriangleLeftIcon:ww,FlagTriangleRight:kw,FlagTriangleRightIcon:kw,Flame:Cw,FlameIcon:Cw,FlameKindling:$w,FlameKindlingIcon:$w,Flashlight:Ew,FlashlightIcon:Ew,FlashlightOff:Sw,FlashlightOffIcon:Sw,FlaskConical:Lw,FlaskConicalIcon:Lw,FlaskConicalOff:Aw,FlaskConicalOffIcon:Aw,FlaskRound:Iw,FlaskRoundIcon:Iw,FlipHorizontal:Mw,FlipHorizontal2:Vw,FlipHorizontal2Icon:Vw,FlipHorizontalIcon:Mw,FlipVertical:Dw,FlipVertical2:Tw,FlipVertical2Icon:Tw,FlipVerticalIcon:Dw,Flower:Uw,Flower2:Pw,Flower2Icon:Pw,FlowerIcon:Uw,Focus:Rw,FocusIcon:Rw,FoldHorizontal:Ow,FoldHorizontalIcon:Ow,FoldVertical:Fw,FoldVerticalIcon:Fw,Folder:_k,FolderArchive:Nw,FolderArchiveIcon:Nw,FolderCheck:jw,FolderCheckIcon:jw,FolderClock:Hw,FolderClockIcon:Hw,FolderClosed:qw,FolderClosedIcon:qw,FolderCog:ud,FolderCog2:ud,FolderCog2Icon:ud,FolderCogIcon:ud,FolderDot:zw,FolderDotIcon:zw,FolderDown:Bw,FolderDownIcon:Bw,FolderEdit:Gw,FolderEditIcon:Gw,FolderGit:Zw,FolderGit2:Ww,FolderGit2Icon:Ww,FolderGitIcon:Zw,FolderHeart:Kw,FolderHeartIcon:Kw,FolderIcon:_k,FolderInput:Yw,FolderInputIcon:Yw,FolderKanban:Xw,FolderKanbanIcon:Xw,FolderKey:Qw,FolderKeyIcon:Qw,FolderLock:Jw,FolderLockIcon:Jw,FolderMinus:ek,FolderMinusIcon:ek,FolderOpen:ak,FolderOpenDot:tk,FolderOpenDotIcon:tk,FolderOpenIcon:ak,FolderOutput:sk,FolderOutputIcon:sk,FolderPlus:ok,FolderPlusIcon:ok,FolderRoot:nk,FolderRootIcon:nk,FolderSearch:rk,FolderSearch2:lk,FolderSearch2Icon:lk,FolderSearchIcon:rk,FolderSymlink:ik,FolderSymlinkIcon:ik,FolderSync:dk,FolderSyncIcon:dk,FolderTree:ck,FolderTreeIcon:ck,FolderUp:uk,FolderUpIcon:uk,FolderX:pk,FolderXIcon:pk,Folders:mk,FoldersIcon:mk,Footprints:vk,FootprintsIcon:vk,Forklift:hk,ForkliftIcon:hk,FormInput:fk,FormInputIcon:fk,Forward:gk,ForwardIcon:gk,Frame:yk,FrameIcon:yk,Framer:bk,FramerIcon:bk,Frown:wk,FrownIcon:wk,Fuel:kk,FuelIcon:kk,Fullscreen:xk,FullscreenIcon:xk,FunctionSquare:$k,FunctionSquareIcon:$k,GalleryHorizontal:Sk,GalleryHorizontalEnd:Ck,GalleryHorizontalEndIcon:Ck,GalleryHorizontalIcon:Sk,GalleryThumbnails:Ek,GalleryThumbnailsIcon:Ek,GalleryVertical:Lk,GalleryVerticalEnd:Ak,GalleryVerticalEndIcon:Ak,GalleryVerticalIcon:Lk,Gamepad:Vk,Gamepad2:Ik,Gamepad2Icon:Ik,GamepadIcon:Vk,GanttChart:Mk,GanttChartIcon:Mk,GanttChartSquare:pd,GanttChartSquareIcon:pd,Gauge:Dk,GaugeCircle:Tk,GaugeCircleIcon:Tk,GaugeIcon:Dk,Gavel:Pk,GavelIcon:Pk,Gem:Uk,GemIcon:Uk,Ghost:Rk,GhostIcon:Rk,Gift:Ok,GiftIcon:Ok,GitBranch:Nk,GitBranchIcon:Nk,GitBranchPlus:Fk,GitBranchPlusIcon:Fk,GitCommit:_d,GitCommitHorizontal:_d,GitCommitHorizontalIcon:_d,GitCommitIcon:_d,GitCommitVertical:jk,GitCommitVerticalIcon:jk,GitCompare:qk,GitCompareArrows:Hk,GitCompareArrowsIcon:Hk,GitCompareIcon:qk,GitFork:zk,GitForkIcon:zk,GitGraph:Bk,GitGraphIcon:Bk,GitMerge:Gk,GitMergeIcon:Gk,GitPullRequest:Qk,GitPullRequestArrow:Wk,GitPullRequestArrowIcon:Wk,GitPullRequestClosed:Zk,GitPullRequestClosedIcon:Zk,GitPullRequestCreate:Yk,GitPullRequestCreateArrow:Kk,GitPullRequestCreateArrowIcon:Kk,GitPullRequestCreateIcon:Yk,GitPullRequestDraft:Xk,GitPullRequestDraftIcon:Xk,GitPullRequestIcon:Qk,Github:Jk,GithubIcon:Jk,Gitlab:ex,GitlabIcon:ex,GlassWater:tx,GlassWaterIcon:tx,Glasses:ax,GlassesIcon:ax,Globe:ox,Globe2:sx,Globe2Icon:sx,GlobeIcon:ox,Goal:nx,GoalIcon:nx,Grab:lx,GrabIcon:lx,GraduationCap:rx,GraduationCapIcon:rx,Grape:ix,GrapeIcon:ix,Grid:Rl,Grid2X2:md,Grid2X2Icon:md,Grid2x2:md,Grid2x2Icon:md,Grid3X3:Rl,Grid3X3Icon:Rl,Grid3x3:Rl,Grid3x3Icon:Rl,GridIcon:Rl,Grip:ux,GripHorizontal:dx,GripHorizontalIcon:dx,GripIcon:ux,GripVertical:cx,GripVerticalIcon:cx,Group:px,GroupIcon:px,Guitar:_x,GuitarIcon:_x,Hammer:mx,HammerIcon:mx,Hand:hx,HandIcon:hx,HandMetal:vx,HandMetalIcon:vx,HardDrive:yx,HardDriveDownload:fx,HardDriveDownloadIcon:fx,HardDriveIcon:yx,HardDriveUpload:gx,HardDriveUploadIcon:gx,HardHat:bx,HardHatIcon:bx,Hash:wx,HashIcon:wx,Haze:kx,HazeIcon:kx,HdmiPort:xx,HdmiPortIcon:xx,Heading:Ix,Heading1:$x,Heading1Icon:$x,Heading2:Cx,Heading2Icon:Cx,Heading3:Sx,Heading3Icon:Sx,Heading4:Ex,Heading4Icon:Ex,Heading5:Ax,Heading5Icon:Ax,Heading6:Lx,Heading6Icon:Lx,HeadingIcon:Ix,Headphones:Vx,HeadphonesIcon:Vx,Heart:Ux,HeartCrack:Mx,HeartCrackIcon:Mx,HeartHandshake:Tx,HeartHandshakeIcon:Tx,HeartIcon:Ux,HeartOff:Dx,HeartOffIcon:Dx,HeartPulse:Px,HeartPulseIcon:Px,HelpCircle:Rx,HelpCircleIcon:Rx,HelpingHand:Ox,HelpingHandIcon:Ox,Hexagon:Fx,HexagonIcon:Fx,Highlighter:Nx,HighlighterIcon:Nx,History:jx,HistoryIcon:jx,Home:Hx,HomeIcon:Hx,Hop:zx,HopIcon:zx,HopOff:qx,HopOffIcon:qx,Hotel:Bx,HotelIcon:Bx,Hourglass:Gx,HourglassIcon:Gx,IceCream:Zx,IceCream2:Wx,IceCream2Icon:Wx,IceCreamIcon:Zx,Image:Jx,ImageDown:Kx,ImageDownIcon:Kx,ImageIcon:Jx,ImageMinus:Yx,ImageMinusIcon:Yx,ImageOff:Xx,ImageOffIcon:Xx,ImagePlus:Qx,ImagePlusIcon:Qx,Import:e$,ImportIcon:e$,Inbox:t$,InboxIcon:t$,Indent:a$,IndentIcon:a$,IndianRupee:s$,IndianRupeeIcon:s$,Infinity:o$,InfinityIcon:o$,Info:n$,InfoIcon:n$,Inspect:fd,InspectIcon:fd,InspectionPanel:l$,InspectionPanelIcon:l$,Instagram:r$,InstagramIcon:r$,Italic:i$,ItalicIcon:i$,IterationCcw:d$,IterationCcwIcon:d$,IterationCw:c$,IterationCwIcon:c$,JapaneseYen:u$,JapaneseYenIcon:u$,Joystick:p$,JoystickIcon:p$,Kanban:_$,KanbanIcon:_$,KanbanSquare:hd,KanbanSquareDashed:vd,KanbanSquareDashedIcon:vd,KanbanSquareIcon:hd,Key:h$,KeyIcon:h$,KeyRound:m$,KeyRoundIcon:m$,KeySquare:v$,KeySquareIcon:v$,Keyboard:g$,KeyboardIcon:g$,KeyboardMusic:f$,KeyboardMusicIcon:f$,Lamp:$$,LampCeiling:y$,LampCeilingIcon:y$,LampDesk:b$,LampDeskIcon:b$,LampFloor:w$,LampFloorIcon:w$,LampIcon:$$,LampWallDown:k$,LampWallDownIcon:k$,LampWallUp:x$,LampWallUpIcon:x$,LandPlot:C$,LandPlotIcon:C$,Landmark:S$,LandmarkIcon:S$,Languages:E$,LanguagesIcon:E$,Laptop:L$,Laptop2:A$,Laptop2Icon:A$,LaptopIcon:L$,Lasso:V$,LassoIcon:V$,LassoSelect:I$,LassoSelectIcon:I$,Laugh:M$,LaughIcon:M$,Layers:P$,Layers2:T$,Layers2Icon:T$,Layers3:D$,Layers3Icon:D$,LayersIcon:P$,Layout:Sd,LayoutDashboard:U$,LayoutDashboardIcon:U$,LayoutGrid:R$,LayoutGridIcon:R$,LayoutIcon:Sd,LayoutList:O$,LayoutListIcon:O$,LayoutPanelLeft:F$,LayoutPanelLeftIcon:F$,LayoutPanelTop:N$,LayoutPanelTopIcon:N$,LayoutTemplate:j$,LayoutTemplateIcon:j$,Leaf:H$,LeafIcon:H$,LeafyGreen:q$,LeafyGreenIcon:q$,Library:G$,LibraryBig:z$,LibraryBigIcon:z$,LibraryIcon:G$,LibrarySquare:B$,LibrarySquareIcon:B$,LifeBuoy:W$,LifeBuoyIcon:W$,Ligature:Z$,LigatureIcon:Z$,Lightbulb:Y$,LightbulbIcon:Y$,LightbulbOff:K$,LightbulbOffIcon:K$,LineChart:X$,LineChartIcon:X$,Link:e4,Link2:J$,Link2Icon:J$,Link2Off:Q$,Link2OffIcon:Q$,LinkIcon:e4,Linkedin:t4,LinkedinIcon:t4,List:v4,ListChecks:a4,ListChecksIcon:a4,ListEnd:s4,ListEndIcon:s4,ListFilter:o4,ListFilterIcon:o4,ListIcon:v4,ListMinus:n4,ListMinusIcon:n4,ListMusic:l4,ListMusicIcon:l4,ListOrdered:r4,ListOrderedIcon:r4,ListPlus:i4,ListPlusIcon:i4,ListRestart:d4,ListRestartIcon:d4,ListStart:c4,ListStartIcon:c4,ListTodo:u4,ListTodoIcon:u4,ListTree:p4,ListTreeIcon:p4,ListVideo:_4,ListVideoIcon:_4,ListX:m4,ListXIcon:m4,Loader:f4,Loader2:h4,Loader2Icon:h4,LoaderIcon:f4,Locate:b4,LocateFixed:g4,LocateFixedIcon:g4,LocateIcon:b4,LocateOff:y4,LocateOffIcon:y4,Lock:k4,LockIcon:k4,LockKeyhole:w4,LockKeyholeIcon:w4,LogIn:x4,LogInIcon:x4,LogOut:$4,LogOutIcon:$4,Lollipop:C4,LollipopIcon:C4,LucideAArrowDown:Lm,LucideAArrowUp:Im,LucideALargeSmall:Vm,LucideAccessibility:Mm,LucideActivity:Dm,LucideActivitySquare:Tm,LucideAirVent:Pm,LucideAirplay:Um,LucideAlarmCheck:Bi,LucideAlarmClock:Om,LucideAlarmClockCheck:Bi,LucideAlarmClockMinus:Gi,LucideAlarmClockOff:Rm,LucideAlarmClockPlus:Wi,LucideAlarmMinus:Gi,LucideAlarmPlus:Wi,LucideAlarmSmoke:Fm,LucideAlbum:Nm,LucideAlertCircle:jm,LucideAlertOctagon:Hm,LucideAlertTriangle:qm,LucideAlignCenter:Gm,LucideAlignCenterHorizontal:zm,LucideAlignCenterVertical:Bm,LucideAlignEndHorizontal:Wm,LucideAlignEndVertical:Zm,LucideAlignHorizontalDistributeCenter:Km,LucideAlignHorizontalDistributeEnd:Ym,LucideAlignHorizontalDistributeStart:Xm,LucideAlignHorizontalJustifyCenter:Qm,LucideAlignHorizontalJustifyEnd:Jm,LucideAlignHorizontalJustifyStart:ev,LucideAlignHorizontalSpaceAround:tv,LucideAlignHorizontalSpaceBetween:av,LucideAlignJustify:sv,LucideAlignLeft:ov,LucideAlignRight:nv,LucideAlignStartHorizontal:lv,LucideAlignStartVertical:rv,LucideAlignVerticalDistributeCenter:iv,LucideAlignVerticalDistributeEnd:dv,LucideAlignVerticalDistributeStart:cv,LucideAlignVerticalJustifyCenter:uv,LucideAlignVerticalJustifyEnd:pv,LucideAlignVerticalJustifyStart:_v,LucideAlignVerticalSpaceAround:mv,LucideAlignVerticalSpaceBetween:vv,LucideAmpersand:hv,LucideAmpersands:fv,LucideAnchor:gv,LucideAngry:yv,LucideAnnoyed:bv,LucideAntenna:wv,LucideAnvil:kv,LucideAperture:xv,LucideAppWindow:$v,LucideApple:Cv,LucideArchive:Av,LucideArchiveRestore:Sv,LucideArchiveX:Ev,LucideAreaChart:Lv,LucideArmchair:Iv,LucideArrowBigDown:Mv,LucideArrowBigDownDash:Vv,LucideArrowBigLeft:Dv,LucideArrowBigLeftDash:Tv,LucideArrowBigRight:Uv,LucideArrowBigRightDash:Pv,LucideArrowBigUp:Ov,LucideArrowBigUpDash:Rv,LucideArrowDown:e1,LucideArrowDown01:Fv,LucideArrowDown10:Nv,LucideArrowDownAZ:Zi,LucideArrowDownAz:Zi,LucideArrowDownCircle:jv,LucideArrowDownFromLine:Hv,LucideArrowDownLeft:Bv,LucideArrowDownLeftFromCircle:qv,LucideArrowDownLeftSquare:zv,LucideArrowDownNarrowWide:Gv,LucideArrowDownRight:Kv,LucideArrowDownRightFromCircle:Wv,LucideArrowDownRightSquare:Zv,LucideArrowDownSquare:Yv,LucideArrowDownToDot:Xv,LucideArrowDownToLine:Qv,LucideArrowDownUp:Jv,LucideArrowDownWideNarrow:Ki,LucideArrowDownZA:Yi,LucideArrowDownZa:Yi,LucideArrowLeft:l1,LucideArrowLeftCircle:t1,LucideArrowLeftFromLine:a1,LucideArrowLeftRight:s1,LucideArrowLeftSquare:o1,LucideArrowLeftToLine:n1,LucideArrowRight:p1,LucideArrowRightCircle:r1,LucideArrowRightFromLine:i1,LucideArrowRightLeft:d1,LucideArrowRightSquare:c1,LucideArrowRightToLine:u1,LucideArrowUp:A1,LucideArrowUp01:_1,LucideArrowUp10:m1,LucideArrowUpAZ:Xi,LucideArrowUpAz:Xi,LucideArrowUpCircle:v1,LucideArrowUpDown:h1,LucideArrowUpFromDot:f1,LucideArrowUpFromLine:g1,LucideArrowUpLeft:w1,LucideArrowUpLeftFromCircle:y1,LucideArrowUpLeftSquare:b1,LucideArrowUpNarrowWide:Qi,LucideArrowUpRight:$1,LucideArrowUpRightFromCircle:k1,LucideArrowUpRightSquare:x1,LucideArrowUpSquare:C1,LucideArrowUpToLine:S1,LucideArrowUpWideNarrow:E1,LucideArrowUpZA:Ji,LucideArrowUpZa:Ji,LucideArrowsUpFromLine:L1,LucideAsterisk:I1,LucideAtSign:V1,LucideAtom:M1,LucideAudioLines:T1,LucideAudioWaveform:D1,LucideAward:P1,LucideAxe:U1,LucideAxis3D:ed,LucideAxis3d:ed,LucideBaby:R1,LucideBackpack:O1,LucideBadge:eh,LucideBadgeAlert:F1,LucideBadgeCent:N1,LucideBadgeCheck:td,LucideBadgeDollarSign:j1,LucideBadgeEuro:H1,LucideBadgeHelp:q1,LucideBadgeIndianRupee:z1,LucideBadgeInfo:B1,LucideBadgeJapaneseYen:G1,LucideBadgeMinus:W1,LucideBadgePercent:Z1,LucideBadgePlus:K1,LucideBadgePoundSterling:Y1,LucideBadgeRussianRuble:X1,LucideBadgeSwissFranc:Q1,LucideBadgeX:J1,LucideBaggageClaim:th,LucideBan:ah,LucideBanana:sh,LucideBanknote:oh,LucideBarChart:uh,LucideBarChart2:nh,LucideBarChart3:lh,LucideBarChart4:rh,LucideBarChartBig:ih,LucideBarChartHorizontal:ch,LucideBarChartHorizontalBig:dh,LucideBarcode:ph,LucideBaseline:_h,LucideBath:mh,LucideBattery:bh,LucideBatteryCharging:vh,LucideBatteryFull:hh,LucideBatteryLow:fh,LucideBatteryMedium:gh,LucideBatteryWarning:yh,LucideBeaker:wh,LucideBean:xh,LucideBeanOff:kh,LucideBed:Sh,LucideBedDouble:$h,LucideBedSingle:Ch,LucideBeef:Eh,LucideBeer:Ah,LucideBell:Ph,LucideBellDot:Lh,LucideBellElectric:Ih,LucideBellMinus:Vh,LucideBellOff:Mh,LucideBellPlus:Th,LucideBellRing:Dh,LucideBike:Uh,LucideBinary:Rh,LucideBiohazard:Oh,LucideBird:Fh,LucideBitcoin:Nh,LucideBlinds:jh,LucideBlocks:Hh,LucideBluetooth:Gh,LucideBluetoothConnected:qh,LucideBluetoothOff:zh,LucideBluetoothSearching:Bh,LucideBold:Wh,LucideBolt:Zh,LucideBomb:Kh,LucideBone:Yh,LucideBook:bf,LucideBookA:Xh,LucideBookAudio:Qh,LucideBookCheck:Jh,LucideBookCopy:ef,LucideBookDashed:ad,LucideBookDown:tf,LucideBookHeadphones:af,LucideBookHeart:sf,LucideBookImage:of,LucideBookKey:nf,LucideBookLock:lf,LucideBookMarked:rf,LucideBookMinus:df,LucideBookOpen:pf,LucideBookOpenCheck:cf,LucideBookOpenText:uf,LucideBookPlus:_f,LucideBookTemplate:ad,LucideBookText:mf,LucideBookType:vf,LucideBookUp:ff,LucideBookUp2:hf,LucideBookUser:gf,LucideBookX:yf,LucideBookmark:Cf,LucideBookmarkCheck:wf,LucideBookmarkMinus:kf,LucideBookmarkPlus:xf,LucideBookmarkX:$f,LucideBoomBox:Sf,LucideBot:Ef,LucideBox:Lf,LucideBoxSelect:Af,LucideBoxes:If,LucideBraces:sd,LucideBrackets:Vf,LucideBrain:Df,LucideBrainCircuit:Mf,LucideBrainCog:Tf,LucideBrickWall:Pf,LucideBriefcase:Uf,LucideBringToFront:Rf,LucideBrush:Of,LucideBug:jf,LucideBugOff:Ff,LucideBugPlay:Nf,LucideBuilding:qf,LucideBuilding2:Hf,LucideBus:Bf,LucideBusFront:zf,LucideCable:Wf,LucideCableCar:Gf,LucideCake:Kf,LucideCakeSlice:Zf,LucideCalculator:Yf,LucideCalendar:dg,LucideCalendarCheck:Qf,LucideCalendarCheck2:Xf,LucideCalendarClock:Jf,LucideCalendarDays:eg,LucideCalendarHeart:tg,LucideCalendarMinus:ag,LucideCalendarOff:sg,LucideCalendarPlus:og,LucideCalendarRange:ng,LucideCalendarSearch:lg,LucideCalendarX:ig,LucideCalendarX2:rg,LucideCamera:ug,LucideCameraOff:cg,LucideCandlestickChart:pg,LucideCandy:vg,LucideCandyCane:_g,LucideCandyOff:mg,LucideCar:gg,LucideCarFront:hg,LucideCarTaxiFront:fg,LucideCaravan:yg,LucideCarrot:bg,LucideCaseLower:wg,LucideCaseSensitive:kg,LucideCaseUpper:xg,LucideCassetteTape:$g,LucideCast:Cg,LucideCastle:Sg,LucideCat:Eg,LucideCctv:Ag,LucideCheck:Dg,LucideCheckCheck:Lg,LucideCheckCircle:Vg,LucideCheckCircle2:Ig,LucideCheckSquare:Tg,LucideCheckSquare2:Mg,LucideChefHat:Pg,LucideCherry:Ug,LucideChevronDown:Fg,LucideChevronDownCircle:Rg,LucideChevronDownSquare:Og,LucideChevronFirst:Ng,LucideChevronLast:jg,LucideChevronLeft:zg,LucideChevronLeftCircle:Hg,LucideChevronLeftSquare:qg,LucideChevronRight:Wg,LucideChevronRightCircle:Bg,LucideChevronRightSquare:Gg,LucideChevronUp:Yg,LucideChevronUpCircle:Zg,LucideChevronUpSquare:Kg,LucideChevronsDown:Qg,LucideChevronsDownUp:Xg,LucideChevronsLeft:ey,LucideChevronsLeftRight:Jg,LucideChevronsRight:ay,LucideChevronsRightLeft:ty,LucideChevronsUp:oy,LucideChevronsUpDown:sy,LucideChrome:ny,LucideChurch:ly,LucideCigarette:iy,LucideCigaretteOff:ry,LucideCircle:fy,LucideCircleDashed:dy,LucideCircleDollarSign:cy,LucideCircleDot:py,LucideCircleDotDashed:uy,LucideCircleEllipsis:_y,LucideCircleEqual:my,LucideCircleOff:vy,LucideCircleSlash:hy,LucideCircleSlash2:od,LucideCircleSlashed:od,LucideCircleUser:ld,LucideCircleUserRound:nd,LucideCircuitBoard:gy,LucideCitrus:yy,LucideClapperboard:by,LucideClipboard:Ly,LucideClipboardCheck:wy,LucideClipboardCopy:ky,LucideClipboardEdit:xy,LucideClipboardList:$y,LucideClipboardPaste:Cy,LucideClipboardSignature:Sy,LucideClipboardType:Ey,LucideClipboardX:Ay,LucideClock:Hy,LucideClock1:Iy,LucideClock10:Vy,LucideClock11:My,LucideClock12:Ty,LucideClock2:Dy,LucideClock3:Py,LucideClock4:Uy,LucideClock5:Ry,LucideClock6:Oy,LucideClock7:Fy,LucideClock8:Ny,LucideClock9:jy,LucideCloud:a0,LucideCloudCog:qy,LucideCloudDrizzle:zy,LucideCloudFog:By,LucideCloudHail:Gy,LucideCloudLightning:Wy,LucideCloudMoon:Ky,LucideCloudMoonRain:Zy,LucideCloudOff:Yy,LucideCloudRain:Qy,LucideCloudRainWind:Xy,LucideCloudSnow:Jy,LucideCloudSun:t0,LucideCloudSunRain:e0,LucideCloudy:s0,LucideClover:o0,LucideClub:n0,LucideCode:r0,LucideCode2:l0,LucideCodepen:i0,LucideCodesandbox:d0,LucideCoffee:c0,LucideCog:u0,LucideCoins:p0,LucideColumns:rd,LucideColumns2:rd,LucideColumns3:id,LucideColumns4:_0,LucideCombine:m0,LucideCommand:v0,LucideCompass:h0,LucideComponent:f0,LucideComputer:g0,LucideConciergeBell:y0,LucideCone:b0,LucideConstruction:w0,LucideContact:x0,LucideContact2:k0,LucideContainer:$0,LucideContrast:C0,LucideCookie:S0,LucideCookingPot:E0,LucideCopy:T0,LucideCopyCheck:A0,LucideCopyMinus:L0,LucideCopyPlus:I0,LucideCopySlash:V0,LucideCopyX:M0,LucideCopyleft:D0,LucideCopyright:P0,LucideCornerDownLeft:U0,LucideCornerDownRight:R0,LucideCornerLeftDown:O0,LucideCornerLeftUp:F0,LucideCornerRightDown:N0,LucideCornerRightUp:j0,LucideCornerUpLeft:H0,LucideCornerUpRight:q0,LucideCpu:z0,LucideCreativeCommons:B0,LucideCreditCard:G0,LucideCroissant:W0,LucideCrop:Z0,LucideCross:K0,LucideCrosshair:Y0,LucideCrown:X0,LucideCuboid:Q0,LucideCupSoda:J0,LucideCurlyBraces:sd,LucideCurrency:e2,LucideCylinder:t2,LucideDatabase:o2,LucideDatabaseBackup:a2,LucideDatabaseZap:s2,LucideDelete:n2,LucideDessert:l2,LucideDiameter:r2,LucideDiamond:i2,LucideDice1:d2,LucideDice2:c2,LucideDice3:u2,LucideDice4:p2,LucideDice5:_2,LucideDice6:m2,LucideDices:v2,LucideDiff:h2,LucideDisc:b2,LucideDisc2:f2,LucideDisc3:g2,LucideDiscAlbum:y2,LucideDivide:x2,LucideDivideCircle:w2,LucideDivideSquare:k2,LucideDna:C2,LucideDnaOff:$2,LucideDog:S2,LucideDollarSign:E2,LucideDonut:A2,LucideDoorClosed:L2,LucideDoorOpen:I2,LucideDot:V2,LucideDownload:T2,LucideDownloadCloud:M2,LucideDraftingCompass:D2,LucideDrama:P2,LucideDribbble:U2,LucideDrill:R2,LucideDroplet:O2,LucideDroplets:F2,LucideDrum:N2,LucideDrumstick:j2,LucideDumbbell:H2,LucideEar:z2,LucideEarOff:q2,LucideEdit:Ol,LucideEdit2:Ad,LucideEdit3:Ed,LucideEgg:W2,LucideEggFried:B2,LucideEggOff:G2,LucideEqual:K2,LucideEqualNot:Z2,LucideEraser:Y2,LucideEuro:X2,LucideExpand:Q2,LucideExternalLink:J2,LucideEye:tb,LucideEyeOff:eb,LucideFacebook:ab,LucideFactory:sb,LucideFan:ob,LucideFastForward:nb,LucideFeather:lb,LucideFence:rb,LucideFerrisWheel:ib,LucideFigma:db,LucideFile:cw,LucideFileArchive:cb,LucideFileAudio:pb,LucideFileAudio2:ub,LucideFileAxis3D:dd,LucideFileAxis3d:dd,LucideFileBadge:mb,LucideFileBadge2:_b,LucideFileBarChart:hb,LucideFileBarChart2:vb,LucideFileBox:fb,LucideFileCheck:yb,LucideFileCheck2:gb,LucideFileClock:bb,LucideFileCode:kb,LucideFileCode2:wb,LucideFileCog:cd,LucideFileCog2:cd,LucideFileDiff:xb,LucideFileDigit:$b,LucideFileDown:Cb,LucideFileEdit:Sb,LucideFileHeart:Eb,LucideFileImage:Ab,LucideFileInput:Lb,LucideFileJson:Vb,LucideFileJson2:Ib,LucideFileKey:Tb,LucideFileKey2:Mb,LucideFileLineChart:Db,LucideFileLock:Ub,LucideFileLock2:Pb,LucideFileMinus:Ob,LucideFileMinus2:Rb,LucideFileMusic:Fb,LucideFileOutput:Nb,LucideFilePieChart:jb,LucideFilePlus:qb,LucideFilePlus2:Hb,LucideFileQuestion:zb,LucideFileScan:Bb,LucideFileSearch:Wb,LucideFileSearch2:Gb,LucideFileSignature:Zb,LucideFileSpreadsheet:Kb,LucideFileStack:Yb,LucideFileSymlink:Xb,LucideFileTerminal:Qb,LucideFileText:Jb,LucideFileType:tw,LucideFileType2:ew,LucideFileUp:aw,LucideFileVideo:ow,LucideFileVideo2:sw,LucideFileVolume:lw,LucideFileVolume2:nw,LucideFileWarning:rw,LucideFileX:dw,LucideFileX2:iw,LucideFiles:uw,LucideFilm:pw,LucideFilter:mw,LucideFilterX:_w,LucideFingerprint:vw,LucideFireExtinguisher:hw,LucideFish:yw,LucideFishOff:fw,LucideFishSymbol:gw,LucideFlag:xw,LucideFlagOff:bw,LucideFlagTriangleLeft:ww,LucideFlagTriangleRight:kw,LucideFlame:Cw,LucideFlameKindling:$w,LucideFlashlight:Ew,LucideFlashlightOff:Sw,LucideFlaskConical:Lw,LucideFlaskConicalOff:Aw,LucideFlaskRound:Iw,LucideFlipHorizontal:Mw,LucideFlipHorizontal2:Vw,LucideFlipVertical:Dw,LucideFlipVertical2:Tw,LucideFlower:Uw,LucideFlower2:Pw,LucideFocus:Rw,LucideFoldHorizontal:Ow,LucideFoldVertical:Fw,LucideFolder:_k,LucideFolderArchive:Nw,LucideFolderCheck:jw,LucideFolderClock:Hw,LucideFolderClosed:qw,LucideFolderCog:ud,LucideFolderCog2:ud,LucideFolderDot:zw,LucideFolderDown:Bw,LucideFolderEdit:Gw,LucideFolderGit:Zw,LucideFolderGit2:Ww,LucideFolderHeart:Kw,LucideFolderInput:Yw,LucideFolderKanban:Xw,LucideFolderKey:Qw,LucideFolderLock:Jw,LucideFolderMinus:ek,LucideFolderOpen:ak,LucideFolderOpenDot:tk,LucideFolderOutput:sk,LucideFolderPlus:ok,LucideFolderRoot:nk,LucideFolderSearch:rk,LucideFolderSearch2:lk,LucideFolderSymlink:ik,LucideFolderSync:dk,LucideFolderTree:ck,LucideFolderUp:uk,LucideFolderX:pk,LucideFolders:mk,LucideFootprints:vk,LucideForklift:hk,LucideFormInput:fk,LucideForward:gk,LucideFrame:yk,LucideFramer:bk,LucideFrown:wk,LucideFuel:kk,LucideFullscreen:xk,LucideFunctionSquare:$k,LucideGalleryHorizontal:Sk,LucideGalleryHorizontalEnd:Ck,LucideGalleryThumbnails:Ek,LucideGalleryVertical:Lk,LucideGalleryVerticalEnd:Ak,LucideGamepad:Vk,LucideGamepad2:Ik,LucideGanttChart:Mk,LucideGanttChartSquare:pd,LucideGauge:Dk,LucideGaugeCircle:Tk,LucideGavel:Pk,LucideGem:Uk,LucideGhost:Rk,LucideGift:Ok,LucideGitBranch:Nk,LucideGitBranchPlus:Fk,LucideGitCommit:_d,LucideGitCommitHorizontal:_d,LucideGitCommitVertical:jk,LucideGitCompare:qk,LucideGitCompareArrows:Hk,LucideGitFork:zk,LucideGitGraph:Bk,LucideGitMerge:Gk,LucideGitPullRequest:Qk,LucideGitPullRequestArrow:Wk,LucideGitPullRequestClosed:Zk,LucideGitPullRequestCreate:Yk,LucideGitPullRequestCreateArrow:Kk,LucideGitPullRequestDraft:Xk,LucideGithub:Jk,LucideGitlab:ex,LucideGlassWater:tx,LucideGlasses:ax,LucideGlobe:ox,LucideGlobe2:sx,LucideGoal:nx,LucideGrab:lx,LucideGraduationCap:rx,LucideGrape:ix,LucideGrid:Rl,LucideGrid2X2:md,LucideGrid2x2:md,LucideGrid3X3:Rl,LucideGrid3x3:Rl,LucideGrip:ux,LucideGripHorizontal:dx,LucideGripVertical:cx,LucideGroup:px,LucideGuitar:_x,LucideHammer:mx,LucideHand:hx,LucideHandMetal:vx,LucideHardDrive:yx,LucideHardDriveDownload:fx,LucideHardDriveUpload:gx,LucideHardHat:bx,LucideHash:wx,LucideHaze:kx,LucideHdmiPort:xx,LucideHeading:Ix,LucideHeading1:$x,LucideHeading2:Cx,LucideHeading3:Sx,LucideHeading4:Ex,LucideHeading5:Ax,LucideHeading6:Lx,LucideHeadphones:Vx,LucideHeart:Ux,LucideHeartCrack:Mx,LucideHeartHandshake:Tx,LucideHeartOff:Dx,LucideHeartPulse:Px,LucideHelpCircle:Rx,LucideHelpingHand:Ox,LucideHexagon:Fx,LucideHighlighter:Nx,LucideHistory:jx,LucideHome:Hx,LucideHop:zx,LucideHopOff:qx,LucideHotel:Bx,LucideHourglass:Gx,LucideIceCream:Zx,LucideIceCream2:Wx,LucideImage:Jx,LucideImageDown:Kx,LucideImageMinus:Yx,LucideImageOff:Xx,LucideImagePlus:Qx,LucideImport:e$,LucideInbox:t$,LucideIndent:a$,LucideIndianRupee:s$,LucideInfinity:o$,LucideInfo:n$,LucideInspect:fd,LucideInspectionPanel:l$,LucideInstagram:r$,LucideItalic:i$,LucideIterationCcw:d$,LucideIterationCw:c$,LucideJapaneseYen:u$,LucideJoystick:p$,LucideKanban:_$,LucideKanbanSquare:hd,LucideKanbanSquareDashed:vd,LucideKey:h$,LucideKeyRound:m$,LucideKeySquare:v$,LucideKeyboard:g$,LucideKeyboardMusic:f$,LucideLamp:$$,LucideLampCeiling:y$,LucideLampDesk:b$,LucideLampFloor:w$,LucideLampWallDown:k$,LucideLampWallUp:x$,LucideLandPlot:C$,LucideLandmark:S$,LucideLanguages:E$,LucideLaptop:L$,LucideLaptop2:A$,LucideLasso:V$,LucideLassoSelect:I$,LucideLaugh:M$,LucideLayers:P$,LucideLayers2:T$,LucideLayers3:D$,LucideLayout:Sd,LucideLayoutDashboard:U$,LucideLayoutGrid:R$,LucideLayoutList:O$,LucideLayoutPanelLeft:F$,LucideLayoutPanelTop:N$,LucideLayoutTemplate:j$,LucideLeaf:H$,LucideLeafyGreen:q$,LucideLibrary:G$,LucideLibraryBig:z$,LucideLibrarySquare:B$,LucideLifeBuoy:W$,LucideLigature:Z$,LucideLightbulb:Y$,LucideLightbulbOff:K$,LucideLineChart:X$,LucideLink:e4,LucideLink2:J$,LucideLink2Off:Q$,LucideLinkedin:t4,LucideList:v4,LucideListChecks:a4,LucideListEnd:s4,LucideListFilter:o4,LucideListMinus:n4,LucideListMusic:l4,LucideListOrdered:r4,LucideListPlus:i4,LucideListRestart:d4,LucideListStart:c4,LucideListTodo:u4,LucideListTree:p4,LucideListVideo:_4,LucideListX:m4,LucideLoader:f4,LucideLoader2:h4,LucideLocate:b4,LucideLocateFixed:g4,LucideLocateOff:y4,LucideLock:k4,LucideLockKeyhole:w4,LucideLogIn:x4,LucideLogOut:$4,LucideLollipop:C4,LucideLuggage:S4,LucideMSquare:E4,LucideMagnet:A4,LucideMail:R4,LucideMailCheck:L4,LucideMailMinus:I4,LucideMailOpen:V4,LucideMailPlus:M4,LucideMailQuestion:T4,LucideMailSearch:D4,LucideMailWarning:P4,LucideMailX:U4,LucideMailbox:O4,LucideMails:F4,LucideMap:q4,LucideMapPin:j4,LucideMapPinOff:N4,LucideMapPinned:H4,LucideMartini:z4,LucideMaximize:G4,LucideMaximize2:B4,LucideMedal:W4,LucideMegaphone:K4,LucideMegaphoneOff:Z4,LucideMeh:Y4,LucideMemoryStick:X4,LucideMenu:J4,LucideMenuSquare:Q4,LucideMerge:e3,LucideMessageCircle:u3,LucideMessageCircleCode:t3,LucideMessageCircleDashed:a3,LucideMessageCircleHeart:s3,LucideMessageCircleMore:o3,LucideMessageCircleOff:n3,LucideMessageCirclePlus:l3,LucideMessageCircleQuestion:r3,LucideMessageCircleReply:i3,LucideMessageCircleWarning:d3,LucideMessageCircleX:c3,LucideMessageSquare:S3,LucideMessageSquareCode:p3,LucideMessageSquareDashed:_3,LucideMessageSquareDiff:m3,LucideMessageSquareDot:v3,LucideMessageSquareHeart:h3,LucideMessageSquareMore:f3,LucideMessageSquareOff:g3,LucideMessageSquarePlus:y3,LucideMessageSquareQuote:b3,LucideMessageSquareReply:w3,LucideMessageSquareShare:k3,LucideMessageSquareText:x3,LucideMessageSquareWarning:$3,LucideMessageSquareX:C3,LucideMessagesSquare:E3,LucideMic:I3,LucideMic2:A3,LucideMicOff:L3,LucideMicroscope:V3,LucideMicrowave:M3,LucideMilestone:T3,LucideMilk:P3,LucideMilkOff:D3,LucideMinimize:R3,LucideMinimize2:U3,LucideMinus:N3,LucideMinusCircle:O3,LucideMinusSquare:F3,LucideMonitor:Q3,LucideMonitorCheck:j3,LucideMonitorDot:H3,LucideMonitorDown:q3,LucideMonitorOff:z3,LucideMonitorPause:B3,LucideMonitorPlay:G3,LucideMonitorSmartphone:W3,LucideMonitorSpeaker:Z3,LucideMonitorStop:K3,LucideMonitorUp:Y3,LucideMonitorX:X3,LucideMoon:e8,LucideMoonStar:J3,LucideMoreHorizontal:t8,LucideMoreVertical:a8,LucideMountain:o8,LucideMountainSnow:s8,LucideMouse:d8,LucideMousePointer:i8,LucideMousePointer2:n8,LucideMousePointerClick:l8,LucideMousePointerSquare:fd,LucideMousePointerSquareDashed:r8,LucideMove:k8,LucideMove3D:gd,LucideMove3d:gd,LucideMoveDiagonal:u8,LucideMoveDiagonal2:c8,LucideMoveDown:m8,LucideMoveDownLeft:p8,LucideMoveDownRight:_8,LucideMoveHorizontal:v8,LucideMoveLeft:h8,LucideMoveRight:f8,LucideMoveUp:b8,LucideMoveUpLeft:g8,LucideMoveUpRight:y8,LucideMoveVertical:w8,LucideMusic:S8,LucideMusic2:x8,LucideMusic3:$8,LucideMusic4:C8,LucideNavigation:I8,LucideNavigation2:A8,LucideNavigation2Off:E8,LucideNavigationOff:L8,LucideNetwork:V8,LucideNewspaper:M8,LucideNfc:T8,LucideNut:P8,LucideNutOff:D8,LucideOctagon:U8,LucideOption:R8,LucideOrbit:O8,LucideOutdent:F8,LucidePackage:W8,LucidePackage2:N8,LucidePackageCheck:j8,LucidePackageMinus:H8,LucidePackageOpen:q8,LucidePackagePlus:z8,LucidePackageSearch:B8,LucidePackageX:G8,LucidePaintBucket:Z8,LucidePaintbrush:Y8,LucidePaintbrush2:K8,LucidePalette:X8,LucidePalmtree:Q8,LucidePanelBottom:t5,LucidePanelBottomClose:J8,LucidePanelBottomDashed:yd,LucidePanelBottomInactive:yd,LucidePanelBottomOpen:e5,LucidePanelLeft:xd,LucidePanelLeftClose:bd,LucidePanelLeftDashed:wd,LucidePanelLeftInactive:wd,LucidePanelLeftOpen:kd,LucidePanelRight:o5,LucidePanelRightClose:a5,LucidePanelRightDashed:$d,LucidePanelRightInactive:$d,LucidePanelRightOpen:s5,LucidePanelTop:r5,LucidePanelTopClose:n5,LucidePanelTopDashed:Cd,LucidePanelTopInactive:Cd,LucidePanelTopOpen:l5,LucidePanelsLeftBottom:i5,LucidePanelsLeftRight:id,LucidePanelsRightBottom:d5,LucidePanelsTopBottom:Vd,LucidePanelsTopLeft:Sd,LucidePaperclip:c5,LucideParentheses:u5,LucideParkingCircle:_5,LucideParkingCircleOff:p5,LucideParkingMeter:m5,LucideParkingSquare:h5,LucideParkingSquareOff:v5,LucidePartyPopper:f5,LucidePause:b5,LucidePauseCircle:g5,LucidePauseOctagon:y5,LucidePawPrint:w5,LucidePcCase:k5,LucidePen:Ad,LucidePenBox:Ol,LucidePenLine:Ed,LucidePenSquare:Ol,LucidePenTool:x5,LucidePencil:S5,LucidePencilLine:$5,LucidePencilRuler:C5,LucidePentagon:E5,LucidePercent:V5,LucidePercentCircle:A5,LucidePercentDiamond:L5,LucidePercentSquare:I5,LucidePersonStanding:M5,LucidePhone:F5,LucidePhoneCall:T5,LucidePhoneForwarded:D5,LucidePhoneIncoming:P5,LucidePhoneMissed:U5,LucidePhoneOff:R5,LucidePhoneOutgoing:O5,LucidePi:j5,LucidePiSquare:N5,LucidePiano:H5,LucidePictureInPicture:z5,LucidePictureInPicture2:q5,LucidePieChart:B5,LucidePiggyBank:G5,LucidePilcrow:Z5,LucidePilcrowSquare:W5,LucidePill:K5,LucidePin:X5,LucidePinOff:Y5,LucidePipette:Q5,LucidePizza:J5,LucidePlane:aC,LucidePlaneLanding:eC,LucidePlaneTakeoff:tC,LucidePlay:nC,LucidePlayCircle:sC,LucidePlaySquare:oC,LucidePlug:dC,LucidePlug2:lC,LucidePlugZap:iC,LucidePlugZap2:rC,LucidePlus:pC,LucidePlusCircle:cC,LucidePlusSquare:uC,LucidePocket:mC,LucidePocketKnife:_C,LucidePodcast:vC,LucidePointer:fC,LucidePointerOff:hC,LucidePopcorn:gC,LucidePopsicle:yC,LucidePoundSterling:bC,LucidePower:$C,LucidePowerCircle:wC,LucidePowerOff:kC,LucidePowerSquare:xC,LucidePresentation:CC,LucidePrinter:SC,LucideProjector:EC,LucidePuzzle:AC,LucidePyramid:LC,LucideQrCode:IC,LucideQuote:VC,LucideRabbit:MC,LucideRadar:TC,LucideRadiation:DC,LucideRadio:RC,LucideRadioReceiver:PC,LucideRadioTower:UC,LucideRadius:OC,LucideRailSymbol:FC,LucideRainbow:NC,LucideRat:jC,LucideRatio:HC,LucideReceipt:qC,LucideRectangleHorizontal:zC,LucideRectangleVertical:BC,LucideRecycle:GC,LucideRedo:KC,LucideRedo2:WC,LucideRedoDot:ZC,LucideRefreshCcw:XC,LucideRefreshCcwDot:YC,LucideRefreshCw:JC,LucideRefreshCwOff:QC,LucideRefrigerator:eS,LucideRegex:tS,LucideRemoveFormatting:aS,LucideRepeat:nS,LucideRepeat1:sS,LucideRepeat2:oS,LucideReplace:rS,LucideReplaceAll:lS,LucideReply:dS,LucideReplyAll:iS,LucideRewind:cS,LucideRibbon:uS,LucideRocket:pS,LucideRockingChair:_S,LucideRollerCoaster:mS,LucideRotate3D:Ld,LucideRotate3d:Ld,LucideRotateCcw:vS,LucideRotateCw:hS,LucideRoute:gS,LucideRouteOff:fS,LucideRouter:yS,LucideRows:Id,LucideRows2:Id,LucideRows3:Vd,LucideRows4:bS,LucideRss:wS,LucideRuler:kS,LucideRussianRuble:xS,LucideSailboat:$S,LucideSalad:CS,LucideSandwich:SS,LucideSatellite:AS,LucideSatelliteDish:ES,LucideSave:IS,LucideSaveAll:LS,LucideScale:VS,LucideScale3D:Md,LucideScale3d:Md,LucideScaling:MS,LucideScan:FS,LucideScanBarcode:TS,LucideScanEye:DS,LucideScanFace:PS,LucideScanLine:US,LucideScanSearch:RS,LucideScanText:OS,LucideScatterChart:NS,LucideSchool:HS,LucideSchool2:jS,LucideScissors:GS,LucideScissorsLineDashed:qS,LucideScissorsSquare:BS,LucideScissorsSquareDashedBottom:zS,LucideScreenShare:ZS,LucideScreenShareOff:WS,LucideScroll:YS,LucideScrollText:KS,LucideSearch:t6,LucideSearchCheck:XS,LucideSearchCode:QS,LucideSearchSlash:JS,LucideSearchX:e6,LucideSend:s6,LucideSendHorizonal:Td,LucideSendHorizontal:Td,LucideSendToBack:a6,LucideSeparatorHorizontal:o6,LucideSeparatorVertical:n6,LucideServer:d6,LucideServerCog:l6,LucideServerCrash:r6,LucideServerOff:i6,LucideSettings:u6,LucideSettings2:c6,LucideShapes:p6,LucideShare:m6,LucideShare2:_6,LucideSheet:v6,LucideShell:h6,LucideShield:S6,LucideShieldAlert:f6,LucideShieldBan:g6,LucideShieldCheck:y6,LucideShieldClose:Dd,LucideShieldEllipsis:b6,LucideShieldHalf:w6,LucideShieldMinus:k6,LucideShieldOff:x6,LucideShieldPlus:$6,LucideShieldQuestion:C6,LucideShieldX:Dd,LucideShip:A6,LucideShipWheel:E6,LucideShirt:L6,LucideShoppingBag:I6,LucideShoppingBasket:V6,LucideShoppingCart:M6,LucideShovel:T6,LucideShowerHead:D6,LucideShrink:P6,LucideShrub:U6,LucideShuffle:R6,LucideSidebar:xd,LucideSidebarClose:bd,LucideSidebarOpen:kd,LucideSigma:F6,LucideSigmaSquare:O6,LucideSignal:z6,LucideSignalHigh:N6,LucideSignalLow:j6,LucideSignalMedium:H6,LucideSignalZero:q6,LucideSignpost:G6,LucideSignpostBig:B6,LucideSiren:W6,LucideSkipBack:Z6,LucideSkipForward:K6,LucideSkull:Y6,LucideSlack:X6,LucideSlash:Q6,LucideSlice:J6,LucideSliders:tE,LucideSlidersHorizontal:eE,LucideSmartphone:oE,LucideSmartphoneCharging:aE,LucideSmartphoneNfc:sE,LucideSmile:lE,LucideSmilePlus:nE,LucideSnail:rE,LucideSnowflake:iE,LucideSofa:dE,LucideSortAsc:Qi,LucideSortDesc:Ki,LucideSoup:cE,LucideSpace:uE,LucideSpade:pE,LucideSparkle:_E,LucideSparkles:Pd,LucideSpeaker:mE,LucideSpeech:vE,LucideSpellCheck:fE,LucideSpellCheck2:hE,LucideSpline:gE,LucideSplit:wE,LucideSplitSquareHorizontal:yE,LucideSplitSquareVertical:bE,LucideSprayCan:kE,LucideSprout:xE,LucideSquare:ME,LucideSquareAsterisk:$E,LucideSquareCode:CE,LucideSquareDashedBottom:EE,LucideSquareDashedBottomCode:SE,LucideSquareDot:AE,LucideSquareEqual:LE,LucideSquareGantt:pd,LucideSquareKanban:hd,LucideSquareKanbanDashed:vd,LucideSquareSlash:IE,LucideSquareStack:VE,LucideSquareUser:Rd,LucideSquareUserRound:Ud,LucideSquircle:TE,LucideSquirrel:DE,LucideStamp:PE,LucideStar:OE,LucideStarHalf:UE,LucideStarOff:RE,LucideStars:Pd,LucideStepBack:FE,LucideStepForward:NE,LucideStethoscope:jE,LucideSticker:HE,LucideStickyNote:qE,LucideStopCircle:zE,LucideStore:BE,LucideStretchHorizontal:GE,LucideStretchVertical:WE,LucideStrikethrough:ZE,LucideSubscript:KE,LucideSubtitles:YE,LucideSun:tA,LucideSunDim:XE,LucideSunMedium:QE,LucideSunMoon:JE,LucideSunSnow:eA,LucideSunrise:aA,LucideSunset:sA,LucideSuperscript:oA,LucideSwissFranc:nA,LucideSwitchCamera:lA,LucideSword:rA,LucideSwords:iA,LucideSyringe:dA,LucideTable:pA,LucideTable2:cA,LucideTableProperties:uA,LucideTablet:mA,LucideTabletSmartphone:_A,LucideTablets:vA,LucideTag:hA,LucideTags:fA,LucideTally1:gA,LucideTally2:yA,LucideTally3:bA,LucideTally4:wA,LucideTally5:kA,LucideTangent:xA,LucideTarget:$A,LucideTent:SA,LucideTentTree:CA,LucideTerminal:AA,LucideTerminalSquare:EA,LucideTestTube:IA,LucideTestTube2:LA,LucideTestTubes:VA,LucideText:PA,LucideTextCursor:TA,LucideTextCursorInput:MA,LucideTextQuote:DA,LucideTextSelect:Od,LucideTextSelection:Od,LucideTheater:UA,LucideThermometer:FA,LucideThermometerSnowflake:RA,LucideThermometerSun:OA,LucideThumbsDown:NA,LucideThumbsUp:jA,LucideTicket:HA,LucideTimer:BA,LucideTimerOff:qA,LucideTimerReset:zA,LucideToggleLeft:GA,LucideToggleRight:WA,LucideTornado:ZA,LucideTorus:KA,LucideTouchpad:XA,LucideTouchpadOff:YA,LucideTowerControl:QA,LucideToyBrick:JA,LucideTractor:eL,LucideTrafficCone:tL,LucideTrain:Fd,LucideTrainFront:sL,LucideTrainFrontTunnel:aL,LucideTrainTrack:oL,LucideTramFront:Fd,LucideTrash:lL,LucideTrash2:nL,LucideTreeDeciduous:rL,LucideTreePine:iL,LucideTrees:dL,LucideTrello:cL,LucideTrendingDown:uL,LucideTrendingUp:pL,LucideTriangle:mL,LucideTriangleRight:_L,LucideTrophy:vL,LucideTruck:hL,LucideTurtle:fL,LucideTv:yL,LucideTv2:gL,LucideTwitch:bL,LucideTwitter:wL,LucideType:kL,LucideUmbrella:$L,LucideUmbrellaOff:xL,LucideUnderline:CL,LucideUndo:AL,LucideUndo2:SL,LucideUndoDot:EL,LucideUnfoldHorizontal:LL,LucideUnfoldVertical:IL,LucideUngroup:VL,LucideUnlink:TL,LucideUnlink2:ML,LucideUnlock:PL,LucideUnlockKeyhole:DL,LucideUnplug:UL,LucideUpload:OL,LucideUploadCloud:RL,LucideUsb:FL,LucideUser:WL,LucideUser2:Bd,LucideUserCheck:NL,LucideUserCheck2:Nd,LucideUserCircle:ld,LucideUserCircle2:nd,LucideUserCog:jL,LucideUserCog2:jd,LucideUserMinus:HL,LucideUserMinus2:Hd,LucideUserPlus:qL,LucideUserPlus2:qd,LucideUserRound:Bd,LucideUserRoundCheck:Nd,LucideUserRoundCog:jd,LucideUserRoundMinus:Hd,LucideUserRoundPlus:qd,LucideUserRoundSearch:zL,LucideUserRoundX:zd,LucideUserSearch:BL,LucideUserSquare:Rd,LucideUserSquare2:Ud,LucideUserX:GL,LucideUserX2:zd,LucideUsers:ZL,LucideUsers2:Gd,LucideUsersRound:Gd,LucideUtensils:YL,LucideUtensilsCrossed:KL,LucideUtilityPole:XL,LucideVariable:QL,LucideVegan:JL,LucideVenetianMask:e7,LucideVerified:td,LucideVibrate:a7,LucideVibrateOff:t7,LucideVideo:o7,LucideVideoOff:s7,LucideVideotape:n7,LucideView:l7,LucideVoicemail:r7,LucideVolume:u7,LucideVolume1:i7,LucideVolume2:d7,LucideVolumeX:c7,LucideVote:p7,LucideWallet:v7,LucideWallet2:_7,LucideWalletCards:m7,LucideWallpaper:h7,LucideWand:g7,LucideWand2:f7,LucideWarehouse:y7,LucideWatch:b7,LucideWaves:w7,LucideWaypoints:k7,LucideWebcam:x7,LucideWebhook:$7,LucideWeight:C7,LucideWheat:E7,LucideWheatOff:S7,LucideWholeWord:A7,LucideWifi:I7,LucideWifiOff:L7,LucideWind:V7,LucideWine:T7,LucideWineOff:M7,LucideWorkflow:D7,LucideWrapText:P7,LucideWrench:U7,LucideX:N7,LucideXCircle:R7,LucideXOctagon:O7,LucideXSquare:F7,LucideYoutube:j7,LucideZap:q7,LucideZapOff:H7,LucideZoomIn:z7,LucideZoomOut:B7,Luggage:S4,LuggageIcon:S4,MSquare:E4,MSquareIcon:E4,Magnet:A4,MagnetIcon:A4,Mail:R4,MailCheck:L4,MailCheckIcon:L4,MailIcon:R4,MailMinus:I4,MailMinusIcon:I4,MailOpen:V4,MailOpenIcon:V4,MailPlus:M4,MailPlusIcon:M4,MailQuestion:T4,MailQuestionIcon:T4,MailSearch:D4,MailSearchIcon:D4,MailWarning:P4,MailWarningIcon:P4,MailX:U4,MailXIcon:U4,Mailbox:O4,MailboxIcon:O4,Mails:F4,MailsIcon:F4,Map:q4,MapIcon:q4,MapPin:j4,MapPinIcon:j4,MapPinOff:N4,MapPinOffIcon:N4,MapPinned:H4,MapPinnedIcon:H4,Martini:z4,MartiniIcon:z4,Maximize:G4,Maximize2:B4,Maximize2Icon:B4,MaximizeIcon:G4,Medal:W4,MedalIcon:W4,Megaphone:K4,MegaphoneIcon:K4,MegaphoneOff:Z4,MegaphoneOffIcon:Z4,Meh:Y4,MehIcon:Y4,MemoryStick:X4,MemoryStickIcon:X4,Menu:J4,MenuIcon:J4,MenuSquare:Q4,MenuSquareIcon:Q4,Merge:e3,MergeIcon:e3,MessageCircle:u3,MessageCircleCode:t3,MessageCircleCodeIcon:t3,MessageCircleDashed:a3,MessageCircleDashedIcon:a3,MessageCircleHeart:s3,MessageCircleHeartIcon:s3,MessageCircleIcon:u3,MessageCircleMore:o3,MessageCircleMoreIcon:o3,MessageCircleOff:n3,MessageCircleOffIcon:n3,MessageCirclePlus:l3,MessageCirclePlusIcon:l3,MessageCircleQuestion:r3,MessageCircleQuestionIcon:r3,MessageCircleReply:i3,MessageCircleReplyIcon:i3,MessageCircleWarning:d3,MessageCircleWarningIcon:d3,MessageCircleX:c3,MessageCircleXIcon:c3,MessageSquare:S3,MessageSquareCode:p3,MessageSquareCodeIcon:p3,MessageSquareDashed:_3,MessageSquareDashedIcon:_3,MessageSquareDiff:m3,MessageSquareDiffIcon:m3,MessageSquareDot:v3,MessageSquareDotIcon:v3,MessageSquareHeart:h3,MessageSquareHeartIcon:h3,MessageSquareIcon:S3,MessageSquareMore:f3,MessageSquareMoreIcon:f3,MessageSquareOff:g3,MessageSquareOffIcon:g3,MessageSquarePlus:y3,MessageSquarePlusIcon:y3,MessageSquareQuote:b3,MessageSquareQuoteIcon:b3,MessageSquareReply:w3,MessageSquareReplyIcon:w3,MessageSquareShare:k3,MessageSquareShareIcon:k3,MessageSquareText:x3,MessageSquareTextIcon:x3,MessageSquareWarning:$3,MessageSquareWarningIcon:$3,MessageSquareX:C3,MessageSquareXIcon:C3,MessagesSquare:E3,MessagesSquareIcon:E3,Mic:I3,Mic2:A3,Mic2Icon:A3,MicIcon:I3,MicOff:L3,MicOffIcon:L3,Microscope:V3,MicroscopeIcon:V3,Microwave:M3,MicrowaveIcon:M3,Milestone:T3,MilestoneIcon:T3,Milk:P3,MilkIcon:P3,MilkOff:D3,MilkOffIcon:D3,Minimize:R3,Minimize2:U3,Minimize2Icon:U3,MinimizeIcon:R3,Minus:N3,MinusCircle:O3,MinusCircleIcon:O3,MinusIcon:N3,MinusSquare:F3,MinusSquareIcon:F3,Monitor:Q3,MonitorCheck:j3,MonitorCheckIcon:j3,MonitorDot:H3,MonitorDotIcon:H3,MonitorDown:q3,MonitorDownIcon:q3,MonitorIcon:Q3,MonitorOff:z3,MonitorOffIcon:z3,MonitorPause:B3,MonitorPauseIcon:B3,MonitorPlay:G3,MonitorPlayIcon:G3,MonitorSmartphone:W3,MonitorSmartphoneIcon:W3,MonitorSpeaker:Z3,MonitorSpeakerIcon:Z3,MonitorStop:K3,MonitorStopIcon:K3,MonitorUp:Y3,MonitorUpIcon:Y3,MonitorX:X3,MonitorXIcon:X3,Moon:e8,MoonIcon:e8,MoonStar:J3,MoonStarIcon:J3,MoreHorizontal:t8,MoreHorizontalIcon:t8,MoreVertical:a8,MoreVerticalIcon:a8,Mountain:o8,MountainIcon:o8,MountainSnow:s8,MountainSnowIcon:s8,Mouse:d8,MouseIcon:d8,MousePointer:i8,MousePointer2:n8,MousePointer2Icon:n8,MousePointerClick:l8,MousePointerClickIcon:l8,MousePointerIcon:i8,MousePointerSquare:fd,MousePointerSquareDashed:r8,MousePointerSquareDashedIcon:r8,MousePointerSquareIcon:fd,Move:k8,Move3D:gd,Move3DIcon:gd,Move3d:gd,Move3dIcon:gd,MoveDiagonal:u8,MoveDiagonal2:c8,MoveDiagonal2Icon:c8,MoveDiagonalIcon:u8,MoveDown:m8,MoveDownIcon:m8,MoveDownLeft:p8,MoveDownLeftIcon:p8,MoveDownRight:_8,MoveDownRightIcon:_8,MoveHorizontal:v8,MoveHorizontalIcon:v8,MoveIcon:k8,MoveLeft:h8,MoveLeftIcon:h8,MoveRight:f8,MoveRightIcon:f8,MoveUp:b8,MoveUpIcon:b8,MoveUpLeft:g8,MoveUpLeftIcon:g8,MoveUpRight:y8,MoveUpRightIcon:y8,MoveVertical:w8,MoveVerticalIcon:w8,Music:S8,Music2:x8,Music2Icon:x8,Music3:$8,Music3Icon:$8,Music4:C8,Music4Icon:C8,MusicIcon:S8,Navigation:I8,Navigation2:A8,Navigation2Icon:A8,Navigation2Off:E8,Navigation2OffIcon:E8,NavigationIcon:I8,NavigationOff:L8,NavigationOffIcon:L8,Network:V8,NetworkIcon:V8,Newspaper:M8,NewspaperIcon:M8,Nfc:T8,NfcIcon:T8,Nut:P8,NutIcon:P8,NutOff:D8,NutOffIcon:D8,Octagon:U8,OctagonIcon:U8,Option:R8,OptionIcon:R8,Orbit:O8,OrbitIcon:O8,Outdent:F8,OutdentIcon:F8,Package:W8,Package2:N8,Package2Icon:N8,PackageCheck:j8,PackageCheckIcon:j8,PackageIcon:W8,PackageMinus:H8,PackageMinusIcon:H8,PackageOpen:q8,PackageOpenIcon:q8,PackagePlus:z8,PackagePlusIcon:z8,PackageSearch:B8,PackageSearchIcon:B8,PackageX:G8,PackageXIcon:G8,PaintBucket:Z8,PaintBucketIcon:Z8,Paintbrush:Y8,Paintbrush2:K8,Paintbrush2Icon:K8,PaintbrushIcon:Y8,Palette:X8,PaletteIcon:X8,Palmtree:Q8,PalmtreeIcon:Q8,PanelBottom:t5,PanelBottomClose:J8,PanelBottomCloseIcon:J8,PanelBottomDashed:yd,PanelBottomDashedIcon:yd,PanelBottomIcon:t5,PanelBottomInactive:yd,PanelBottomInactiveIcon:yd,PanelBottomOpen:e5,PanelBottomOpenIcon:e5,PanelLeft:xd,PanelLeftClose:bd,PanelLeftCloseIcon:bd,PanelLeftDashed:wd,PanelLeftDashedIcon:wd,PanelLeftIcon:xd,PanelLeftInactive:wd,PanelLeftInactiveIcon:wd,PanelLeftOpen:kd,PanelLeftOpenIcon:kd,PanelRight:o5,PanelRightClose:a5,PanelRightCloseIcon:a5,PanelRightDashed:$d,PanelRightDashedIcon:$d,PanelRightIcon:o5,PanelRightInactive:$d,PanelRightInactiveIcon:$d,PanelRightOpen:s5,PanelRightOpenIcon:s5,PanelTop:r5,PanelTopClose:n5,PanelTopCloseIcon:n5,PanelTopDashed:Cd,PanelTopDashedIcon:Cd,PanelTopIcon:r5,PanelTopInactive:Cd,PanelTopInactiveIcon:Cd,PanelTopOpen:l5,PanelTopOpenIcon:l5,PanelsLeftBottom:i5,PanelsLeftBottomIcon:i5,PanelsLeftRight:id,PanelsLeftRightIcon:id,PanelsRightBottom:d5,PanelsRightBottomIcon:d5,PanelsTopBottom:Vd,PanelsTopBottomIcon:Vd,PanelsTopLeft:Sd,PanelsTopLeftIcon:Sd,Paperclip:c5,PaperclipIcon:c5,Parentheses:u5,ParenthesesIcon:u5,ParkingCircle:_5,ParkingCircleIcon:_5,ParkingCircleOff:p5,ParkingCircleOffIcon:p5,ParkingMeter:m5,ParkingMeterIcon:m5,ParkingSquare:h5,ParkingSquareIcon:h5,ParkingSquareOff:v5,ParkingSquareOffIcon:v5,PartyPopper:f5,PartyPopperIcon:f5,Pause:b5,PauseCircle:g5,PauseCircleIcon:g5,PauseIcon:b5,PauseOctagon:y5,PauseOctagonIcon:y5,PawPrint:w5,PawPrintIcon:w5,PcCase:k5,PcCaseIcon:k5,Pen:Ad,PenBox:Ol,PenBoxIcon:Ol,PenIcon:Ad,PenLine:Ed,PenLineIcon:Ed,PenSquare:Ol,PenSquareIcon:Ol,PenTool:x5,PenToolIcon:x5,Pencil:S5,PencilIcon:S5,PencilLine:$5,PencilLineIcon:$5,PencilRuler:C5,PencilRulerIcon:C5,Pentagon:E5,PentagonIcon:E5,Percent:V5,PercentCircle:A5,PercentCircleIcon:A5,PercentDiamond:L5,PercentDiamondIcon:L5,PercentIcon:V5,PercentSquare:I5,PercentSquareIcon:I5,PersonStanding:M5,PersonStandingIcon:M5,Phone:F5,PhoneCall:T5,PhoneCallIcon:T5,PhoneForwarded:D5,PhoneForwardedIcon:D5,PhoneIcon:F5,PhoneIncoming:P5,PhoneIncomingIcon:P5,PhoneMissed:U5,PhoneMissedIcon:U5,PhoneOff:R5,PhoneOffIcon:R5,PhoneOutgoing:O5,PhoneOutgoingIcon:O5,Pi:j5,PiIcon:j5,PiSquare:N5,PiSquareIcon:N5,Piano:H5,PianoIcon:H5,PictureInPicture:z5,PictureInPicture2:q5,PictureInPicture2Icon:q5,PictureInPictureIcon:z5,PieChart:B5,PieChartIcon:B5,PiggyBank:G5,PiggyBankIcon:G5,Pilcrow:Z5,PilcrowIcon:Z5,PilcrowSquare:W5,PilcrowSquareIcon:W5,Pill:K5,PillIcon:K5,Pin:X5,PinIcon:X5,PinOff:Y5,PinOffIcon:Y5,Pipette:Q5,PipetteIcon:Q5,Pizza:J5,PizzaIcon:J5,Plane:aC,PlaneIcon:aC,PlaneLanding:eC,PlaneLandingIcon:eC,PlaneTakeoff:tC,PlaneTakeoffIcon:tC,Play:nC,PlayCircle:sC,PlayCircleIcon:sC,PlayIcon:nC,PlaySquare:oC,PlaySquareIcon:oC,Plug:dC,Plug2:lC,Plug2Icon:lC,PlugIcon:dC,PlugZap:iC,PlugZap2:rC,PlugZap2Icon:rC,PlugZapIcon:iC,Plus:pC,PlusCircle:cC,PlusCircleIcon:cC,PlusIcon:pC,PlusSquare:uC,PlusSquareIcon:uC,Pocket:mC,PocketIcon:mC,PocketKnife:_C,PocketKnifeIcon:_C,Podcast:vC,PodcastIcon:vC,Pointer:fC,PointerIcon:fC,PointerOff:hC,PointerOffIcon:hC,Popcorn:gC,PopcornIcon:gC,Popsicle:yC,PopsicleIcon:yC,PoundSterling:bC,PoundSterlingIcon:bC,Power:$C,PowerCircle:wC,PowerCircleIcon:wC,PowerIcon:$C,PowerOff:kC,PowerOffIcon:kC,PowerSquare:xC,PowerSquareIcon:xC,Presentation:CC,PresentationIcon:CC,Printer:SC,PrinterIcon:SC,Projector:EC,ProjectorIcon:EC,Puzzle:AC,PuzzleIcon:AC,Pyramid:LC,PyramidIcon:LC,QrCode:IC,QrCodeIcon:IC,Quote:VC,QuoteIcon:VC,Rabbit:MC,RabbitIcon:MC,Radar:TC,RadarIcon:TC,Radiation:DC,RadiationIcon:DC,Radio:RC,RadioIcon:RC,RadioReceiver:PC,RadioReceiverIcon:PC,RadioTower:UC,RadioTowerIcon:UC,Radius:OC,RadiusIcon:OC,RailSymbol:FC,RailSymbolIcon:FC,Rainbow:NC,RainbowIcon:NC,Rat:jC,RatIcon:jC,Ratio:HC,RatioIcon:HC,Receipt:qC,ReceiptIcon:qC,RectangleHorizontal:zC,RectangleHorizontalIcon:zC,RectangleVertical:BC,RectangleVerticalIcon:BC,Recycle:GC,RecycleIcon:GC,Redo:KC,Redo2:WC,Redo2Icon:WC,RedoDot:ZC,RedoDotIcon:ZC,RedoIcon:KC,RefreshCcw:XC,RefreshCcwDot:YC,RefreshCcwDotIcon:YC,RefreshCcwIcon:XC,RefreshCw:JC,RefreshCwIcon:JC,RefreshCwOff:QC,RefreshCwOffIcon:QC,Refrigerator:eS,RefrigeratorIcon:eS,Regex:tS,RegexIcon:tS,RemoveFormatting:aS,RemoveFormattingIcon:aS,Repeat:nS,Repeat1:sS,Repeat1Icon:sS,Repeat2:oS,Repeat2Icon:oS,RepeatIcon:nS,Replace:rS,ReplaceAll:lS,ReplaceAllIcon:lS,ReplaceIcon:rS,Reply:dS,ReplyAll:iS,ReplyAllIcon:iS,ReplyIcon:dS,Rewind:cS,RewindIcon:cS,Ribbon:uS,RibbonIcon:uS,Rocket:pS,RocketIcon:pS,RockingChair:_S,RockingChairIcon:_S,RollerCoaster:mS,RollerCoasterIcon:mS,Rotate3D:Ld,Rotate3DIcon:Ld,Rotate3d:Ld,Rotate3dIcon:Ld,RotateCcw:vS,RotateCcwIcon:vS,RotateCw:hS,RotateCwIcon:hS,Route:gS,RouteIcon:gS,RouteOff:fS,RouteOffIcon:fS,Router:yS,RouterIcon:yS,Rows:Id,Rows2:Id,Rows2Icon:Id,Rows3:Vd,Rows3Icon:Vd,Rows4:bS,Rows4Icon:bS,RowsIcon:Id,Rss:wS,RssIcon:wS,Ruler:kS,RulerIcon:kS,RussianRuble:xS,RussianRubleIcon:xS,Sailboat:$S,SailboatIcon:$S,Salad:CS,SaladIcon:CS,Sandwich:SS,SandwichIcon:SS,Satellite:AS,SatelliteDish:ES,SatelliteDishIcon:ES,SatelliteIcon:AS,Save:IS,SaveAll:LS,SaveAllIcon:LS,SaveIcon:IS,Scale:VS,Scale3D:Md,Scale3DIcon:Md,Scale3d:Md,Scale3dIcon:Md,ScaleIcon:VS,Scaling:MS,ScalingIcon:MS,Scan:FS,ScanBarcode:TS,ScanBarcodeIcon:TS,ScanEye:DS,ScanEyeIcon:DS,ScanFace:PS,ScanFaceIcon:PS,ScanIcon:FS,ScanLine:US,ScanLineIcon:US,ScanSearch:RS,ScanSearchIcon:RS,ScanText:OS,ScanTextIcon:OS,ScatterChart:NS,ScatterChartIcon:NS,School:HS,School2:jS,School2Icon:jS,SchoolIcon:HS,Scissors:GS,ScissorsIcon:GS,ScissorsLineDashed:qS,ScissorsLineDashedIcon:qS,ScissorsSquare:BS,ScissorsSquareDashedBottom:zS,ScissorsSquareDashedBottomIcon:zS,ScissorsSquareIcon:BS,ScreenShare:ZS,ScreenShareIcon:ZS,ScreenShareOff:WS,ScreenShareOffIcon:WS,Scroll:YS,ScrollIcon:YS,ScrollText:KS,ScrollTextIcon:KS,Search:t6,SearchCheck:XS,SearchCheckIcon:XS,SearchCode:QS,SearchCodeIcon:QS,SearchIcon:t6,SearchSlash:JS,SearchSlashIcon:JS,SearchX:e6,SearchXIcon:e6,Send:s6,SendHorizonal:Td,SendHorizonalIcon:Td,SendHorizontal:Td,SendHorizontalIcon:Td,SendIcon:s6,SendToBack:a6,SendToBackIcon:a6,SeparatorHorizontal:o6,SeparatorHorizontalIcon:o6,SeparatorVertical:n6,SeparatorVerticalIcon:n6,Server:d6,ServerCog:l6,ServerCogIcon:l6,ServerCrash:r6,ServerCrashIcon:r6,ServerIcon:d6,ServerOff:i6,ServerOffIcon:i6,Settings:u6,Settings2:c6,Settings2Icon:c6,SettingsIcon:u6,Shapes:p6,ShapesIcon:p6,Share:m6,Share2:_6,Share2Icon:_6,ShareIcon:m6,Sheet:v6,SheetIcon:v6,Shell:h6,ShellIcon:h6,Shield:S6,ShieldAlert:f6,ShieldAlertIcon:f6,ShieldBan:g6,ShieldBanIcon:g6,ShieldCheck:y6,ShieldCheckIcon:y6,ShieldClose:Dd,ShieldCloseIcon:Dd,ShieldEllipsis:b6,ShieldEllipsisIcon:b6,ShieldHalf:w6,ShieldHalfIcon:w6,ShieldIcon:S6,ShieldMinus:k6,ShieldMinusIcon:k6,ShieldOff:x6,ShieldOffIcon:x6,ShieldPlus:$6,ShieldPlusIcon:$6,ShieldQuestion:C6,ShieldQuestionIcon:C6,ShieldX:Dd,ShieldXIcon:Dd,Ship:A6,ShipIcon:A6,ShipWheel:E6,ShipWheelIcon:E6,Shirt:L6,ShirtIcon:L6,ShoppingBag:I6,ShoppingBagIcon:I6,ShoppingBasket:V6,ShoppingBasketIcon:V6,ShoppingCart:M6,ShoppingCartIcon:M6,Shovel:T6,ShovelIcon:T6,ShowerHead:D6,ShowerHeadIcon:D6,Shrink:P6,ShrinkIcon:P6,Shrub:U6,ShrubIcon:U6,Shuffle:R6,ShuffleIcon:R6,Sidebar:xd,SidebarClose:bd,SidebarCloseIcon:bd,SidebarIcon:xd,SidebarOpen:kd,SidebarOpenIcon:kd,Sigma:F6,SigmaIcon:F6,SigmaSquare:O6,SigmaSquareIcon:O6,Signal:z6,SignalHigh:N6,SignalHighIcon:N6,SignalIcon:z6,SignalLow:j6,SignalLowIcon:j6,SignalMedium:H6,SignalMediumIcon:H6,SignalZero:q6,SignalZeroIcon:q6,Signpost:G6,SignpostBig:B6,SignpostBigIcon:B6,SignpostIcon:G6,Siren:W6,SirenIcon:W6,SkipBack:Z6,SkipBackIcon:Z6,SkipForward:K6,SkipForwardIcon:K6,Skull:Y6,SkullIcon:Y6,Slack:X6,SlackIcon:X6,Slash:Q6,SlashIcon:Q6,Slice:J6,SliceIcon:J6,Sliders:tE,SlidersHorizontal:eE,SlidersHorizontalIcon:eE,SlidersIcon:tE,Smartphone:oE,SmartphoneCharging:aE,SmartphoneChargingIcon:aE,SmartphoneIcon:oE,SmartphoneNfc:sE,SmartphoneNfcIcon:sE,Smile:lE,SmileIcon:lE,SmilePlus:nE,SmilePlusIcon:nE,Snail:rE,SnailIcon:rE,Snowflake:iE,SnowflakeIcon:iE,Sofa:dE,SofaIcon:dE,SortAsc:Qi,SortAscIcon:Qi,SortDesc:Ki,SortDescIcon:Ki,Soup:cE,SoupIcon:cE,Space:uE,SpaceIcon:uE,Spade:pE,SpadeIcon:pE,Sparkle:_E,SparkleIcon:_E,Sparkles:Pd,SparklesIcon:Pd,Speaker:mE,SpeakerIcon:mE,Speech:vE,SpeechIcon:vE,SpellCheck:fE,SpellCheck2:hE,SpellCheck2Icon:hE,SpellCheckIcon:fE,Spline:gE,SplineIcon:gE,Split:wE,SplitIcon:wE,SplitSquareHorizontal:yE,SplitSquareHorizontalIcon:yE,SplitSquareVertical:bE,SplitSquareVerticalIcon:bE,SprayCan:kE,SprayCanIcon:kE,Sprout:xE,SproutIcon:xE,Square:ME,SquareAsterisk:$E,SquareAsteriskIcon:$E,SquareCode:CE,SquareCodeIcon:CE,SquareDashedBottom:EE,SquareDashedBottomCode:SE,SquareDashedBottomCodeIcon:SE,SquareDashedBottomIcon:EE,SquareDot:AE,SquareDotIcon:AE,SquareEqual:LE,SquareEqualIcon:LE,SquareGantt:pd,SquareGanttIcon:pd,SquareIcon:ME,SquareKanban:hd,SquareKanbanDashed:vd,SquareKanbanDashedIcon:vd,SquareKanbanIcon:hd,SquareSlash:IE,SquareSlashIcon:IE,SquareStack:VE,SquareStackIcon:VE,SquareUser:Rd,SquareUserIcon:Rd,SquareUserRound:Ud,SquareUserRoundIcon:Ud,Squircle:TE,SquircleIcon:TE,Squirrel:DE,SquirrelIcon:DE,Stamp:PE,StampIcon:PE,Star:OE,StarHalf:UE,StarHalfIcon:UE,StarIcon:OE,StarOff:RE,StarOffIcon:RE,Stars:Pd,StarsIcon:Pd,StepBack:FE,StepBackIcon:FE,StepForward:NE,StepForwardIcon:NE,Stethoscope:jE,StethoscopeIcon:jE,Sticker:HE,StickerIcon:HE,StickyNote:qE,StickyNoteIcon:qE,StopCircle:zE,StopCircleIcon:zE,Store:BE,StoreIcon:BE,StretchHorizontal:GE,StretchHorizontalIcon:GE,StretchVertical:WE,StretchVerticalIcon:WE,Strikethrough:ZE,StrikethroughIcon:ZE,Subscript:KE,SubscriptIcon:KE,Subtitles:YE,SubtitlesIcon:YE,Sun:tA,SunDim:XE,SunDimIcon:XE,SunIcon:tA,SunMedium:QE,SunMediumIcon:QE,SunMoon:JE,SunMoonIcon:JE,SunSnow:eA,SunSnowIcon:eA,Sunrise:aA,SunriseIcon:aA,Sunset:sA,SunsetIcon:sA,Superscript:oA,SuperscriptIcon:oA,SwissFranc:nA,SwissFrancIcon:nA,SwitchCamera:lA,SwitchCameraIcon:lA,Sword:rA,SwordIcon:rA,Swords:iA,SwordsIcon:iA,Syringe:dA,SyringeIcon:dA,Table:pA,Table2:cA,Table2Icon:cA,TableIcon:pA,TableProperties:uA,TablePropertiesIcon:uA,Tablet:mA,TabletIcon:mA,TabletSmartphone:_A,TabletSmartphoneIcon:_A,Tablets:vA,TabletsIcon:vA,Tag:hA,TagIcon:hA,Tags:fA,TagsIcon:fA,Tally1:gA,Tally1Icon:gA,Tally2:yA,Tally2Icon:yA,Tally3:bA,Tally3Icon:bA,Tally4:wA,Tally4Icon:wA,Tally5:kA,Tally5Icon:kA,Tangent:xA,TangentIcon:xA,Target:$A,TargetIcon:$A,Tent:SA,TentIcon:SA,TentTree:CA,TentTreeIcon:CA,Terminal:AA,TerminalIcon:AA,TerminalSquare:EA,TerminalSquareIcon:EA,TestTube:IA,TestTube2:LA,TestTube2Icon:LA,TestTubeIcon:IA,TestTubes:VA,TestTubesIcon:VA,Text:PA,TextCursor:TA,TextCursorIcon:TA,TextCursorInput:MA,TextCursorInputIcon:MA,TextIcon:PA,TextQuote:DA,TextQuoteIcon:DA,TextSelect:Od,TextSelectIcon:Od,TextSelection:Od,TextSelectionIcon:Od,Theater:UA,TheaterIcon:UA,Thermometer:FA,ThermometerIcon:FA,ThermometerSnowflake:RA,ThermometerSnowflakeIcon:RA,ThermometerSun:OA,ThermometerSunIcon:OA,ThumbsDown:NA,ThumbsDownIcon:NA,ThumbsUp:jA,ThumbsUpIcon:jA,Ticket:HA,TicketIcon:HA,Timer:BA,TimerIcon:BA,TimerOff:qA,TimerOffIcon:qA,TimerReset:zA,TimerResetIcon:zA,ToggleLeft:GA,ToggleLeftIcon:GA,ToggleRight:WA,ToggleRightIcon:WA,Tornado:ZA,TornadoIcon:ZA,Torus:KA,TorusIcon:KA,Touchpad:XA,TouchpadIcon:XA,TouchpadOff:YA,TouchpadOffIcon:YA,TowerControl:QA,TowerControlIcon:QA,ToyBrick:JA,ToyBrickIcon:JA,Tractor:eL,TractorIcon:eL,TrafficCone:tL,TrafficConeIcon:tL,Train:Fd,TrainFront:sL,TrainFrontIcon:sL,TrainFrontTunnel:aL,TrainFrontTunnelIcon:aL,TrainIcon:Fd,TrainTrack:oL,TrainTrackIcon:oL,TramFront:Fd,TramFrontIcon:Fd,Trash:lL,Trash2:nL,Trash2Icon:nL,TrashIcon:lL,TreeDeciduous:rL,TreeDeciduousIcon:rL,TreePine:iL,TreePineIcon:iL,Trees:dL,TreesIcon:dL,Trello:cL,TrelloIcon:cL,TrendingDown:uL,TrendingDownIcon:uL,TrendingUp:pL,TrendingUpIcon:pL,Triangle:mL,TriangleIcon:mL,TriangleRight:_L,TriangleRightIcon:_L,Trophy:vL,TrophyIcon:vL,Truck:hL,TruckIcon:hL,Turtle:fL,TurtleIcon:fL,Tv:yL,Tv2:gL,Tv2Icon:gL,TvIcon:yL,Twitch:bL,TwitchIcon:bL,Twitter:wL,TwitterIcon:wL,Type:kL,TypeIcon:kL,Umbrella:$L,UmbrellaIcon:$L,UmbrellaOff:xL,UmbrellaOffIcon:xL,Underline:CL,UnderlineIcon:CL,Undo:AL,Undo2:SL,Undo2Icon:SL,UndoDot:EL,UndoDotIcon:EL,UndoIcon:AL,UnfoldHorizontal:LL,UnfoldHorizontalIcon:LL,UnfoldVertical:IL,UnfoldVerticalIcon:IL,Ungroup:VL,UngroupIcon:VL,Unlink:TL,Unlink2:ML,Unlink2Icon:ML,UnlinkIcon:TL,Unlock:PL,UnlockIcon:PL,UnlockKeyhole:DL,UnlockKeyholeIcon:DL,Unplug:UL,UnplugIcon:UL,Upload:OL,UploadCloud:RL,UploadCloudIcon:RL,UploadIcon:OL,Usb:FL,UsbIcon:FL,User:WL,User2:Bd,User2Icon:Bd,UserCheck:NL,UserCheck2:Nd,UserCheck2Icon:Nd,UserCheckIcon:NL,UserCircle:ld,UserCircle2:nd,UserCircle2Icon:nd,UserCircleIcon:ld,UserCog:jL,UserCog2:jd,UserCog2Icon:jd,UserCogIcon:jL,UserIcon:WL,UserMinus:HL,UserMinus2:Hd,UserMinus2Icon:Hd,UserMinusIcon:HL,UserPlus:qL,UserPlus2:qd,UserPlus2Icon:qd,UserPlusIcon:qL,UserRound:Bd,UserRoundCheck:Nd,UserRoundCheckIcon:Nd,UserRoundCog:jd,UserRoundCogIcon:jd,UserRoundIcon:Bd,UserRoundMinus:Hd,UserRoundMinusIcon:Hd,UserRoundPlus:qd,UserRoundPlusIcon:qd,UserRoundSearch:zL,UserRoundSearchIcon:zL,UserRoundX:zd,UserRoundXIcon:zd,UserSearch:BL,UserSearchIcon:BL,UserSquare:Rd,UserSquare2:Ud,UserSquare2Icon:Ud,UserSquareIcon:Rd,UserX:GL,UserX2:zd,UserX2Icon:zd,UserXIcon:GL,Users:ZL,Users2:Gd,Users2Icon:Gd,UsersIcon:ZL,UsersRound:Gd,UsersRoundIcon:Gd,Utensils:YL,UtensilsCrossed:KL,UtensilsCrossedIcon:KL,UtensilsIcon:YL,UtilityPole:XL,UtilityPoleIcon:XL,Variable:QL,VariableIcon:QL,Vegan:JL,VeganIcon:JL,VenetianMask:e7,VenetianMaskIcon:e7,Verified:td,VerifiedIcon:td,Vibrate:a7,VibrateIcon:a7,VibrateOff:t7,VibrateOffIcon:t7,Video:o7,VideoIcon:o7,VideoOff:s7,VideoOffIcon:s7,Videotape:n7,VideotapeIcon:n7,View:l7,ViewIcon:l7,Voicemail:r7,VoicemailIcon:r7,Volume:u7,Volume1:i7,Volume1Icon:i7,Volume2:d7,Volume2Icon:d7,VolumeIcon:u7,VolumeX:c7,VolumeXIcon:c7,Vote:p7,VoteIcon:p7,Wallet:v7,Wallet2:_7,Wallet2Icon:_7,WalletCards:m7,WalletCardsIcon:m7,WalletIcon:v7,Wallpaper:h7,WallpaperIcon:h7,Wand:g7,Wand2:f7,Wand2Icon:f7,WandIcon:g7,Warehouse:y7,WarehouseIcon:y7,Watch:b7,WatchIcon:b7,Waves:w7,WavesIcon:w7,Waypoints:k7,WaypointsIcon:k7,Webcam:x7,WebcamIcon:x7,Webhook:$7,WebhookIcon:$7,Weight:C7,WeightIcon:C7,Wheat:E7,WheatIcon:E7,WheatOff:S7,WheatOffIcon:S7,WholeWord:A7,WholeWordIcon:A7,Wifi:I7,WifiIcon:I7,WifiOff:L7,WifiOffIcon:L7,Wind:V7,WindIcon:V7,Wine:T7,WineIcon:T7,WineOff:M7,WineOffIcon:M7,Workflow:D7,WorkflowIcon:D7,WrapText:P7,WrapTextIcon:P7,Wrench:U7,WrenchIcon:U7,X:N7,XCircle:R7,XCircleIcon:R7,XIcon:N7,XOctagon:O7,XOctagonIcon:O7,XSquare:F7,XSquareIcon:F7,Youtube:j7,YoutubeIcon:j7,Zap:q7,ZapIcon:q7,ZapOff:H7,ZapOffIcon:H7,ZoomIn:z7,ZoomInIcon:z7,ZoomOut:B7,ZoomOutIcon:B7,icons:ene},Symbol.toStringTag,{value:"Module"})),kP="-";function ane(l){const a=one(l),{conflictingClassGroups:t,conflictingClassGroupModifiers:s}=l;function d(p){const g=p.split(kP);return g[0]===""&&g.length!==1&&g.shift(),Vq(g,a)||sne(p)}function c(p,g){const _=t[p]||[];return g&&s[p]?[..._,...s[p]]:_}return{getClassGroupId:d,getConflictingClassGroupIds:c}}function Vq(l,a){var p;if(l.length===0)return a.classGroupId;const t=l[0],s=a.nextPart.get(t),d=s?Vq(l.slice(1),s):void 0;if(d)return d;if(a.validators.length===0)return;const c=l.join(kP);return(p=a.validators.find(({validator:g})=>g(c)))==null?void 0:p.classGroupId}const yF=/^\[(.+)\]$/;function sne(l){if(yF.test(l)){const a=yF.exec(l)[1],t=a==null?void 0:a.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}}function one(l){const{theme:a,prefix:t}=l,s={nextPart:new Map,validators:[]};return lne(Object.entries(l.classGroups),t).forEach(([c,p])=>{GT(p,s,c,a)}),s}function GT(l,a,t,s){l.forEach(d=>{if(typeof d=="string"){const c=d===""?a:bF(a,d);c.classGroupId=t;return}if(typeof d=="function"){if(nne(d)){GT(d(s),a,t,s);return}a.validators.push({validator:d,classGroupId:t});return}Object.entries(d).forEach(([c,p])=>{GT(p,bF(a,c),t,s)})})}function bF(l,a){let t=l;return a.split(kP).forEach(s=>{t.nextPart.has(s)||t.nextPart.set(s,{nextPart:new Map,validators:[]}),t=t.nextPart.get(s)}),t}function nne(l){return l.isThemeGetter}function lne(l,a){return a?l.map(([t,s])=>{const d=s.map(c=>typeof c=="string"?a+c:typeof c=="object"?Object.fromEntries(Object.entries(c).map(([p,g])=>[a+p,g])):c);return[t,d]}):l}function rne(l){if(l<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,s=new Map;function d(c,p){t.set(c,p),a++,a>l&&(a=0,s=t,t=new Map)}return{get(c){let p=t.get(c);if(p!==void 0)return p;if((p=s.get(c))!==void 0)return d(c,p),p},set(c,p){t.has(c)?t.set(c,p):d(c,p)}}}const Mq="!";function ine(l){const a=l.separator,t=a.length===1,s=a[0],d=a.length;return function(p){const g=[];let _=0,v=0,h;for(let x=0;xv?h-v:void 0;return{modifiers:g,hasImportantModifier:y,baseClassName:u,maybePostfixModifierPosition:C}}}function dne(l){if(l.length<=1)return l;const a=[];let t=[];return l.forEach(s=>{s[0]==="["?(a.push(...t.sort(),s),t=[]):t.push(s)}),a.push(...t.sort()),a}function cne(l){return{cache:rne(l.cacheSize),splitModifiers:ine(l),...ane(l)}}const une=/\s+/;function pne(l,a){const{splitModifiers:t,getClassGroupId:s,getConflictingClassGroupIds:d}=a,c=new Set;return l.trim().split(une).map(p=>{const{modifiers:g,hasImportantModifier:_,baseClassName:v,maybePostfixModifierPosition:h}=t(p);let b=s(h?v.substring(0,h):v),y=!!h;if(!b){if(!h)return{isTailwindClass:!1,originalClassName:p};if(b=s(v),!b)return{isTailwindClass:!1,originalClassName:p};y=!1}const u=dne(g).join(":");return{isTailwindClass:!0,modifierId:_?u+Mq:u,classGroupId:b,originalClassName:p,hasPostfixModifier:y}}).reverse().filter(p=>{if(!p.isTailwindClass)return!0;const{modifierId:g,classGroupId:_,hasPostfixModifier:v}=p,h=g+_;return c.has(h)?!1:(c.add(h),d(_,v).forEach(b=>c.add(g+b)),!0)}).reverse().map(p=>p.originalClassName).join(" ")}function _ne(){let l=0,a,t,s="";for(;lb(h),l());return t=cne(v),s=t.cache.get,d=t.cache.set,c=g,g(_)}function g(_){const v=s(_);if(v)return v;const h=pne(_,t);return d(_,h),h}return function(){return c(_ne.apply(null,arguments))}}function ro(l){const a=t=>t[l]||[];return a.isThemeGetter=!0,a}const Dq=/^\[(?:([a-z-]+):)?(.+)\]$/i,vne=/^\d+\/\d+$/,hne=new Set(["px","full","screen"]),fne=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,gne=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,yne=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,bne=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,wne=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;function cr(l){return ec(l)||hne.has(l)||vne.test(l)}function Gr(l){return cu(l,"length",Lne)}function ec(l){return!!l&&!Number.isNaN(Number(l))}function _m(l){return cu(l,"number",ec)}function Ou(l){return!!l&&Number.isInteger(Number(l))}function kne(l){return l.endsWith("%")&&ec(l.slice(0,-1))}function $s(l){return Dq.test(l)}function Wr(l){return fne.test(l)}const xne=new Set(["length","size","percentage"]);function $ne(l){return cu(l,xne,Pq)}function Cne(l){return cu(l,"position",Pq)}const Sne=new Set(["image","url"]);function Ene(l){return cu(l,Sne,Vne)}function Ane(l){return cu(l,"",Ine)}function Fu(){return!0}function cu(l,a,t){const s=Dq.exec(l);return s?s[1]?typeof a=="string"?s[1]===a:a.has(s[1]):t(s[2]):!1}function Lne(l){return gne.test(l)&&!yne.test(l)}function Pq(){return!1}function Ine(l){return bne.test(l)}function Vne(l){return wne.test(l)}function Mne(){const l=ro("colors"),a=ro("spacing"),t=ro("blur"),s=ro("brightness"),d=ro("borderColor"),c=ro("borderRadius"),p=ro("borderSpacing"),g=ro("borderWidth"),_=ro("contrast"),v=ro("grayscale"),h=ro("hueRotate"),b=ro("invert"),y=ro("gap"),u=ro("gradientColorStops"),C=ro("gradientColorStopPositions"),x=ro("inset"),z=ro("margin"),P=ro("opacity"),F=ro("padding"),N=ro("saturate"),M=ro("scale"),S=ro("sepia"),L=ro("skew"),E=ro("space"),f=ro("translate"),T=()=>["auto","contain","none"],H=()=>["auto","hidden","clip","visible","scroll"],O=()=>["auto",$s,a],W=()=>[$s,a],ie=()=>["",cr,Gr],ve=()=>["auto",ec,$s],de=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],re=()=>["solid","dashed","dotted","double","none"],K=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity","plus-lighter"],Q=()=>["start","end","center","between","around","evenly","stretch"],se=()=>["","0",$s],ue=()=>["auto","avoid","all","avoid-page","page","left","right","column"],ke=()=>[ec,_m],we=()=>[ec,$s];return{cacheSize:500,separator:":",theme:{colors:[Fu],spacing:[cr,Gr],blur:["none","",Wr,$s],brightness:ke(),borderColor:[l],borderRadius:["none","","full",Wr,$s],borderSpacing:W(),borderWidth:ie(),contrast:ke(),grayscale:se(),hueRotate:we(),invert:se(),gap:W(),gradientColorStops:[l],gradientColorStopPositions:[kne,Gr],inset:O(),margin:O(),opacity:ke(),padding:W(),saturate:ke(),scale:ke(),sepia:se(),skew:we(),space:W(),translate:W()},classGroups:{aspect:[{aspect:["auto","square","video",$s]}],container:["container"],columns:[{columns:[Wr]}],"break-after":[{"break-after":ue()}],"break-before":[{"break-before":ue()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...de(),$s]}],overflow:[{overflow:H()}],"overflow-x":[{"overflow-x":H()}],"overflow-y":[{"overflow-y":H()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[x]}],"inset-x":[{"inset-x":[x]}],"inset-y":[{"inset-y":[x]}],start:[{start:[x]}],end:[{end:[x]}],top:[{top:[x]}],right:[{right:[x]}],bottom:[{bottom:[x]}],left:[{left:[x]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Ou,$s]}],basis:[{basis:O()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",$s]}],grow:[{grow:se()}],shrink:[{shrink:se()}],order:[{order:["first","last","none",Ou,$s]}],"grid-cols":[{"grid-cols":[Fu]}],"col-start-end":[{col:["auto",{span:["full",Ou,$s]},$s]}],"col-start":[{"col-start":ve()}],"col-end":[{"col-end":ve()}],"grid-rows":[{"grid-rows":[Fu]}],"row-start-end":[{row:["auto",{span:[Ou,$s]},$s]}],"row-start":[{"row-start":ve()}],"row-end":[{"row-end":ve()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",$s]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",$s]}],gap:[{gap:[y]}],"gap-x":[{"gap-x":[y]}],"gap-y":[{"gap-y":[y]}],"justify-content":[{justify:["normal",...Q()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...Q(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...Q(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[F]}],px:[{px:[F]}],py:[{py:[F]}],ps:[{ps:[F]}],pe:[{pe:[F]}],pt:[{pt:[F]}],pr:[{pr:[F]}],pb:[{pb:[F]}],pl:[{pl:[F]}],m:[{m:[z]}],mx:[{mx:[z]}],my:[{my:[z]}],ms:[{ms:[z]}],me:[{me:[z]}],mt:[{mt:[z]}],mr:[{mr:[z]}],mb:[{mb:[z]}],ml:[{ml:[z]}],"space-x":[{"space-x":[E]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[E]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",$s,a]}],"min-w":[{"min-w":[$s,a,"min","max","fit"]}],"max-w":[{"max-w":[$s,a,"none","full","min","max","fit","prose",{screen:[Wr]},Wr]}],h:[{h:[$s,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[$s,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[$s,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[$s,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Wr,Gr]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",_m]}],"font-family":[{font:[Fu]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",$s]}],"line-clamp":[{"line-clamp":["none",ec,_m]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",cr,$s]}],"list-image":[{"list-image":["none",$s]}],"list-style-type":[{list:["none","disc","decimal",$s]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[l]}],"placeholder-opacity":[{"placeholder-opacity":[P]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[l]}],"text-opacity":[{"text-opacity":[P]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...re(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",cr,Gr]}],"underline-offset":[{"underline-offset":["auto",cr,$s]}],"text-decoration-color":[{decoration:[l]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:W()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",$s]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",$s]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[P]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...de(),Cne]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",$ne]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Ene]}],"bg-color":[{bg:[l]}],"gradient-from-pos":[{from:[C]}],"gradient-via-pos":[{via:[C]}],"gradient-to-pos":[{to:[C]}],"gradient-from":[{from:[u]}],"gradient-via":[{via:[u]}],"gradient-to":[{to:[u]}],rounded:[{rounded:[c]}],"rounded-s":[{"rounded-s":[c]}],"rounded-e":[{"rounded-e":[c]}],"rounded-t":[{"rounded-t":[c]}],"rounded-r":[{"rounded-r":[c]}],"rounded-b":[{"rounded-b":[c]}],"rounded-l":[{"rounded-l":[c]}],"rounded-ss":[{"rounded-ss":[c]}],"rounded-se":[{"rounded-se":[c]}],"rounded-ee":[{"rounded-ee":[c]}],"rounded-es":[{"rounded-es":[c]}],"rounded-tl":[{"rounded-tl":[c]}],"rounded-tr":[{"rounded-tr":[c]}],"rounded-br":[{"rounded-br":[c]}],"rounded-bl":[{"rounded-bl":[c]}],"border-w":[{border:[g]}],"border-w-x":[{"border-x":[g]}],"border-w-y":[{"border-y":[g]}],"border-w-s":[{"border-s":[g]}],"border-w-e":[{"border-e":[g]}],"border-w-t":[{"border-t":[g]}],"border-w-r":[{"border-r":[g]}],"border-w-b":[{"border-b":[g]}],"border-w-l":[{"border-l":[g]}],"border-opacity":[{"border-opacity":[P]}],"border-style":[{border:[...re(),"hidden"]}],"divide-x":[{"divide-x":[g]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[g]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[P]}],"divide-style":[{divide:re()}],"border-color":[{border:[d]}],"border-color-x":[{"border-x":[d]}],"border-color-y":[{"border-y":[d]}],"border-color-t":[{"border-t":[d]}],"border-color-r":[{"border-r":[d]}],"border-color-b":[{"border-b":[d]}],"border-color-l":[{"border-l":[d]}],"divide-color":[{divide:[d]}],"outline-style":[{outline:["",...re()]}],"outline-offset":[{"outline-offset":[cr,$s]}],"outline-w":[{outline:[cr,Gr]}],"outline-color":[{outline:[l]}],"ring-w":[{ring:ie()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[l]}],"ring-opacity":[{"ring-opacity":[P]}],"ring-offset-w":[{"ring-offset":[cr,Gr]}],"ring-offset-color":[{"ring-offset":[l]}],shadow:[{shadow:["","inner","none",Wr,Ane]}],"shadow-color":[{shadow:[Fu]}],opacity:[{opacity:[P]}],"mix-blend":[{"mix-blend":K()}],"bg-blend":[{"bg-blend":K()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[s]}],contrast:[{contrast:[_]}],"drop-shadow":[{"drop-shadow":["","none",Wr,$s]}],grayscale:[{grayscale:[v]}],"hue-rotate":[{"hue-rotate":[h]}],invert:[{invert:[b]}],saturate:[{saturate:[N]}],sepia:[{sepia:[S]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[s]}],"backdrop-contrast":[{"backdrop-contrast":[_]}],"backdrop-grayscale":[{"backdrop-grayscale":[v]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[h]}],"backdrop-invert":[{"backdrop-invert":[b]}],"backdrop-opacity":[{"backdrop-opacity":[P]}],"backdrop-saturate":[{"backdrop-saturate":[N]}],"backdrop-sepia":[{"backdrop-sepia":[S]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[p]}],"border-spacing-x":[{"border-spacing-x":[p]}],"border-spacing-y":[{"border-spacing-y":[p]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",$s]}],duration:[{duration:we()}],ease:[{ease:["linear","in","out","in-out",$s]}],delay:[{delay:we()}],animate:[{animate:["none","spin","ping","pulse","bounce",$s]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[M]}],"scale-x":[{"scale-x":[M]}],"scale-y":[{"scale-y":[M]}],rotate:[{rotate:[Ou,$s]}],"translate-x":[{"translate-x":[f]}],"translate-y":[{"translate-y":[f]}],"skew-x":[{"skew-x":[L]}],"skew-y":[{"skew-y":[L]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",$s]}],accent:[{accent:["auto",l]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",$s]}],"caret-color":[{caret:[l]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":W()}],"scroll-mx":[{"scroll-mx":W()}],"scroll-my":[{"scroll-my":W()}],"scroll-ms":[{"scroll-ms":W()}],"scroll-me":[{"scroll-me":W()}],"scroll-mt":[{"scroll-mt":W()}],"scroll-mr":[{"scroll-mr":W()}],"scroll-mb":[{"scroll-mb":W()}],"scroll-ml":[{"scroll-ml":W()}],"scroll-p":[{"scroll-p":W()}],"scroll-px":[{"scroll-px":W()}],"scroll-py":[{"scroll-py":W()}],"scroll-ps":[{"scroll-ps":W()}],"scroll-pe":[{"scroll-pe":W()}],"scroll-pt":[{"scroll-pt":W()}],"scroll-pr":[{"scroll-pr":W()}],"scroll-pb":[{"scroll-pb":W()}],"scroll-pl":[{"scroll-pl":W()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",$s]}],fill:[{fill:[l,"none"]}],"stroke-w":[{stroke:[cr,Gr,_m]}],stroke:[{stroke:[l,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}}const ss=mne(Mne),ee=lt({__name:"Lucide",props:{icon:{},title:{}},setup(l){const a=l,t=is(),s=ae(()=>ss(["stroke-1.5 w-5 h-5",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(Js(tne[a.icon]),{class:w(s.value)},null,8,["class"]))}}),Tne={class:"flex","aria-label":"breadcrumb"},Dne=lt({__name:"Breadcrumb",props:{light:{type:Boolean}},setup(l){const a=SH(),{light:t}=l;return ka("breadcrumb",{light:t}),(s,d)=>(k(),I("nav",Tne,[n("ol",{class:w(["flex items-center text-primary dark:text-slate-300",{"text-white/90":s.light}])},[(k(!0),I(Pe,null,ht(e(a).default&&e(a).default(),(c,p)=>(k(),Be(Js(c),{index:p},null,8,["index"]))),256))],2)]))}}),Pne=lt({__name:"Link",props:{to:{default:""},active:{type:Boolean,default:!1},index:{default:0}},setup(l){const{to:a,active:t,index:s}=l,d=Ba("breadcrumb"),c=ae(()=>[s>0&&"relative ml-5 pl-0.5",d&&!d.light&&s>0&&"before:content-[''] before:w-[14px] before:h-[14px] before:bg-chevron-black before:transform before:rotate-[-90deg] before:bg-[length:100%] before:-ml-[1.125rem] before:absolute before:my-auto before:inset-y-0",d&&d.light&&s>0&&"before:content-[''] before:w-[14px] before:h-[14px] before:bg-chevron-white before:transform before:rotate-[-90deg] before:bg-[length:100%] before:-ml-[1.125rem] before:absolute before:my-auto before:inset-y-0",s>0&&"dark:before:bg-chevron-white",d&&!d.light&&t&&"text-slate-800 cursor-text dark:text-slate-400",d&&d.light&&t&&"text-white/70"]);return(p,g)=>{const _=Ra("RouterLink");return k(),I("li",{class:w(c.value)},[o(_,{to:a},{default:i(()=>[Ya(p.$slots,"default")]),_:3})],2)}}}),Une=lt({__name:"Text",props:{active:{type:Boolean,default:!1},index:{default:0}},setup(l){const{active:a,index:t}=l,s=Ba("breadcrumb"),d=ae(()=>[t>0&&"relative ml-5 pl-0.5",s&&!s.light&&t>0&&"before:content-[''] before:w-[14px] before:h-[14px] before:bg-chevron-black before:transform before:rotate-[-90deg] before:bg-[length:100%] before:-ml-[1.125rem] before:absolute before:my-auto before:inset-y-0",s&&s.light&&t>0&&"before:content-[''] before:w-[14px] before:h-[14px] before:bg-chevron-white before:transform before:rotate-[-90deg] before:bg-[length:100%] before:-ml-[1.125rem] before:absolute before:my-auto before:inset-y-0",t>0&&"dark:before:bg-chevron-white",s&&!s.light&&a&&"text-slate-800 cursor-text dark:text-slate-400",s&&s.light&&a&&"text-white/70"]);return(c,p)=>(k(),I("li",{class:w(d.value)},[Ya(c.$slots,"default")],2))}}),HM=Object.assign({},Dne,{Link:Pne,Text:Une});var li=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Fp(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var pI={exports:{}};/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */pI.exports;(function(l,a){(function(){var t,s="4.17.21",d=200,c="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",p="Expected a function",g="Invalid `variable` option passed into `_.template`",_="__lodash_hash_undefined__",v=500,h="__lodash_placeholder__",b=1,y=2,u=4,C=1,x=2,z=1,P=2,F=4,N=8,M=16,S=32,L=64,E=128,f=256,T=512,H=30,O="...",W=800,ie=16,ve=1,de=2,re=3,K=1/0,Q=9007199254740991,se=17976931348623157e292,ue=NaN,ke=4294967295,we=ke-1,Ce=ke>>>1,$e=[["ary",E],["bind",z],["bindKey",P],["curry",N],["curryRight",M],["flip",T],["partial",S],["partialRight",L],["rearg",f]],he="[object Arguments]",je="[object Array]",me="[object AsyncFunction]",ce="[object Boolean]",G="[object Date]",q="[object DOMException]",te="[object Error]",_e="[object Function]",Y="[object GeneratorFunction]",U="[object Map]",j="[object Number]",oe="[object Null]",Z="[object Object]",X="[object Promise]",le="[object Proxy]",fe="[object RegExp]",Me="[object Set]",mt="[object String]",Mt="[object Symbol]",Gt="[object Undefined]",Wt="[object WeakMap]",kt="[object WeakSet]",gt="[object ArrayBuffer]",Pt="[object DataView]",Qt="[object Float32Array]",Jt="[object Float64Array]",Lt="[object Int8Array]",Ye="[object Int16Array]",Te="[object Int32Array]",Fe="[object Uint8Array]",ze="[object Uint8ClampedArray]",Ie="[object Uint16Array]",Se="[object Uint32Array]",tt=/\b__p \+= '';/g,st=/\b(__p \+=) '' \+/g,ut=/(__e\(.*?\)|\b__t\)) \+\n'';/g,St=/&(?:amp|lt|gt|quot|#39);/g,wt=/[&<>"']/g,pt=RegExp(St.source),bt=RegExp(wt.source),et=/<%-([\s\S]+?)%>/g,ot=/<%([\s\S]+?)%>/g,ft=/<%=([\s\S]+?)%>/g,dt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,it=/^\w*$/,xt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ot=/[\\^$.*+?()[\]{}|]/g,ca=RegExp(Ot.source),La=/^\s+/,pa=/\s/,Ha=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ts=/\{\n\/\* \[wrapped with (.+)\] \*/,os=/,? & /,ys=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Es=/[()=,{}\[\]\/\s]/,Yt=/\\(\\)?/g,ct=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Re=/\w*$/,Oe=/^[-+]0x[0-9a-f]+$/i,xe=/^0b[01]+$/i,Ue=/^\[object .+?Constructor\]$/,Le=/^0o[0-7]+$/i,We=/^(?:0|[1-9]\d*)$/,Qe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Rt=/($^)/,aa=/['\n\r\u2028\u2029\\]/g,vt="\\ud800-\\udfff",Ge="\\u0300-\\u036f",ge="\\ufe20-\\ufe2f",Ae="\\u20d0-\\u20ff",Ze=Ge+ge+Ae,rt="\\u2700-\\u27bf",Bt="a-z\\xdf-\\xf6\\xf8-\\xff",fa="\\xac\\xb1\\xd7\\xf7",xa="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Ta="\\u2000-\\u206f",Ia=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",bs="A-Z\\xc0-\\xd6\\xd8-\\xde",It="\\ufe0e\\ufe0f",Ft=fa+xa+Ta+Ia,$t="['’]",Ee="["+vt+"]",Ne="["+Ft+"]",be="["+Ze+"]",qe="\\d+",Xe="["+rt+"]",Vt="["+Bt+"]",Xt="[^"+vt+Ft+qe+rt+Bt+bs+"]",wa="\\ud83c[\\udffb-\\udfff]",Va="(?:"+be+"|"+wa+")",Ja="[^"+vt+"]",$a="(?:\\ud83c[\\udde6-\\uddff]){2}",hs="[\\ud800-\\udbff][\\udc00-\\udfff]",Ma="["+bs+"]",Ls="\\u200d",so="(?:"+Vt+"|"+Xt+")",Oo="(?:"+Ma+"|"+Xt+")",pn="(?:"+$t+"(?:d|ll|m|re|s|t|ve))?",ml="(?:"+$t+"(?:D|LL|M|RE|S|T|VE))?",vl=Va+"?",hl="["+It+"]?",Al="(?:"+Ls+"(?:"+[Ja,$a,hs].join("|")+")"+hl+vl+")*",Ll="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Il="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Tr=hl+vl+Al,Ci="(?:"+[Xe,$a,hs].join("|")+")"+Tr,Si="(?:"+[Ja+be+"?",be,$a,hs,Ee].join("|")+")",Ei=RegExp($t,"g"),l_=RegExp(be,"g"),bc=RegExp(wa+"(?="+wa+")|"+Si+Tr,"g"),r_=RegExp([Ma+"?"+Vt+"+"+pn+"(?="+[Ne,Ma,"$"].join("|")+")",Oo+"+"+ml+"(?="+[Ne,Ma+so,"$"].join("|")+")",Ma+"?"+so+"+"+pn,Ma+"+"+ml,Il,Ll,qe,Ci].join("|"),"g"),i_=RegExp("["+Ls+vt+Ze+It+"]"),d_=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,c_=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],u_=-1,Ys={};Ys[Qt]=Ys[Jt]=Ys[Lt]=Ys[Ye]=Ys[Te]=Ys[Fe]=Ys[ze]=Ys[Ie]=Ys[Se]=!0,Ys[he]=Ys[je]=Ys[gt]=Ys[ce]=Ys[Pt]=Ys[G]=Ys[te]=Ys[_e]=Ys[U]=Ys[j]=Ys[Z]=Ys[fe]=Ys[Me]=Ys[mt]=Ys[Wt]=!1;var zs={};zs[he]=zs[je]=zs[gt]=zs[Pt]=zs[ce]=zs[G]=zs[Qt]=zs[Jt]=zs[Lt]=zs[Ye]=zs[Te]=zs[U]=zs[j]=zs[Z]=zs[fe]=zs[Me]=zs[mt]=zs[Mt]=zs[Fe]=zs[ze]=zs[Ie]=zs[Se]=!0,zs[te]=zs[_e]=zs[Wt]=!1;var p_={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},__={"&":"&","<":"<",">":">",'"':""","'":"'"},m_={"&":"&","<":"<",">":">",""":'"',"'":"'"},v_={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},WG=parseFloat,ZG=parseInt,jU=typeof li=="object"&&li&&li.Object===Object&&li,KG=typeof self=="object"&&self&&self.Object===Object&&self,Go=jU||KG||Function("return this")(),wV=a&&!a.nodeType&&a,Ai=wV&&!0&&l&&!l.nodeType&&l,HU=Ai&&Ai.exports===wV,kV=HU&&jU.process,jn=function(){try{var ea=Ai&&Ai.require&&Ai.require("util").types;return ea||kV&&kV.binding&&kV.binding("util")}catch{}}(),qU=jn&&jn.isArrayBuffer,zU=jn&&jn.isDate,BU=jn&&jn.isMap,GU=jn&&jn.isRegExp,WU=jn&&jn.isSet,ZU=jn&&jn.isTypedArray;function En(ea,va,ua){switch(ua.length){case 0:return ea.call(va);case 1:return ea.call(va,ua[0]);case 2:return ea.call(va,ua[0],ua[1]);case 3:return ea.call(va,ua[0],ua[1],ua[2])}return ea.apply(va,ua)}function YG(ea,va,ua,Wa){for(var gs=-1,js=ea==null?0:ea.length;++gs-1}function xV(ea,va,ua){for(var Wa=-1,gs=ea==null?0:ea.length;++Wa-1;);return ua}function a9(ea,va){for(var ua=ea.length;ua--&&wc(va,ea[ua],0)>-1;);return ua}function nW(ea,va){for(var ua=ea.length,Wa=0;ua--;)ea[ua]===va&&++Wa;return Wa}var lW=EV(p_),rW=EV(__);function iW(ea){return"\\"+v_[ea]}function dW(ea,va){return ea==null?t:ea[va]}function kc(ea){return i_.test(ea)}function cW(ea){return d_.test(ea)}function uW(ea){for(var va,ua=[];!(va=ea.next()).done;)ua.push(va.value);return ua}function VV(ea){var va=-1,ua=Array(ea.size);return ea.forEach(function(Wa,gs){ua[++va]=[gs,Wa]}),ua}function s9(ea,va){return function(ua){return ea(va(ua))}}function Ur(ea,va){for(var ua=-1,Wa=ea.length,gs=0,js=[];++ua-1}function QW(A,D){var ne=this.__data__,Ve=T_(ne,A);return Ve<0?(++this.size,ne.push([A,D])):ne[Ve][1]=D,this}er.prototype.clear=ZW,er.prototype.delete=KW,er.prototype.get=YW,er.prototype.has=XW,er.prototype.set=QW;function tr(A){var D=-1,ne=A==null?0:A.length;for(this.clear();++D=D?A:D)),A}function Bn(A,D,ne,Ve,at,yt){var jt,Zt=D&b,ta=D&y,ga=D&u;if(ne&&(jt=at?ne(A,Ve,at,yt):ne(A)),jt!==t)return jt;if(!go(A))return A;var ya=ws(A);if(ya){if(jt=aK(A),!Zt)return _n(A,jt)}else{var Ca=en(A),Fa=Ca==_e||Ca==Y;if(Hr(A))return F9(A,Zt);if(Ca==Z||Ca==he||Fa&&!at){if(jt=ta||Fa?{}:oR(A),!Zt)return ta?BZ(A,mZ(jt,A)):zZ(A,v9(jt,A))}else{if(!zs[Ca])return at?A:{};jt=sK(A,Ca,Zt)}}yt||(yt=new gl);var Xa=yt.get(A);if(Xa)return Xa;yt.set(A,jt),TR(A)?A.forEach(function(us){jt.add(Bn(us,D,ne,us,A,yt))}):VR(A)&&A.forEach(function(us,Vs){jt.set(Vs,Bn(us,D,ne,Vs,A,yt))});var cs=ga?ta?sM:aM:ta?vn:Fo,Cs=ya?t:cs(A);return Hn(Cs||A,function(us,Vs){Cs&&(Vs=us,us=A[Vs]),Su(jt,Vs,Bn(us,D,ne,Vs,A,yt))}),jt}function vZ(A){var D=Fo(A);return function(ne){return h9(ne,A,D)}}function h9(A,D,ne){var Ve=ne.length;if(A==null)return!Ve;for(A=to(A);Ve--;){var at=ne[Ve],yt=D[at],jt=A[at];if(jt===t&&!(at in A)||!yt(jt))return!1}return!0}function f9(A,D,ne){if(typeof A!="function")throw new qn(p);return Tu(function(){A.apply(t,ne)},D)}function Eu(A,D,ne,Ve){var at=-1,yt=h_,jt=!0,Zt=A.length,ta=[],ga=D.length;if(!Zt)return ta;ne&&(D=mo(D,An(ne))),Ve?(yt=xV,jt=!1):D.length>=d&&(yt=bu,jt=!1,D=new Vi(D));e:for(;++atat?0:at+ne),Ve=Ve===t||Ve>at?at:xs(Ve),Ve<0&&(Ve+=at),Ve=ne>Ve?0:PR(Ve);ne0&&ne(Zt)?D>1?Wo(Zt,D-1,ne,Ve,at):Pr(at,Zt):Ve||(at[at.length]=Zt)}return at}var OV=B9(),b9=B9(!0);function Vl(A,D){return A&&OV(A,D,Fo)}function FV(A,D){return A&&b9(A,D,Fo)}function P_(A,D){return Dr(D,function(ne){return lr(A[ne])})}function Ti(A,D){D=Nr(D,A);for(var ne=0,Ve=D.length;A!=null&&neD}function gZ(A,D){return A!=null&&Bs.call(A,D)}function yZ(A,D){return A!=null&&D in to(A)}function bZ(A,D,ne){return A>=Jo(D,ne)&&A=120&&ya.length>=120)?new Vi(jt&&ya):t}ya=A[0];var Ca=-1,Fa=Zt[0];e:for(;++Ca-1;)Zt!==A&&S_.call(Zt,ta,1),S_.call(A,ta,1);return A}function V9(A,D){for(var ne=A?D.length:0,Ve=ne-1;ne--;){var at=D[ne];if(ne==Ve||at!==yt){var yt=at;nr(at)?S_.call(A,at,1):KV(A,at)}}return A}function GV(A,D){return A+L_(u9()*(D-A+1))}function TZ(A,D,ne,Ve){for(var at=-1,yt=Po(A_((D-A)/(ne||1)),0),jt=ua(yt);yt--;)jt[Ve?yt:++at]=A,A+=ne;return jt}function WV(A,D){var ne="";if(!A||D<1||D>Q)return ne;do D%2&&(ne+=A),D=L_(D/2),D&&(A+=A);while(D);return ne}function As(A,D){return cM(rR(A,D,hn),A+"")}function DZ(A){return m9(Tc(A))}function PZ(A,D){var ne=Tc(A);return G_(ne,Mi(D,0,ne.length))}function Iu(A,D,ne,Ve){if(!go(A))return A;D=Nr(D,A);for(var at=-1,yt=D.length,jt=yt-1,Zt=A;Zt!=null&&++atat?0:at+D),ne=ne>at?at:ne,ne<0&&(ne+=at),at=D>ne?0:ne-D>>>0,D>>>=0;for(var yt=ua(at);++Ve>>1,jt=A[yt];jt!==null&&!In(jt)&&(ne?jt<=D:jt=d){var ga=D?null:KZ(A);if(ga)return g_(ga);jt=!1,at=bu,ta=new Vi}else ta=D?[]:Zt;e:for(;++Ve=Ve?A:Gn(A,D,ne)}var O9=SW||function(A){return Go.clearTimeout(A)};function F9(A,D){if(D)return A.slice();var ne=A.length,Ve=l9?l9(ne):new A.constructor(ne);return A.copy(Ve),Ve}function JV(A){var D=new A.constructor(A.byteLength);return new $_(D).set(new $_(A)),D}function NZ(A,D){var ne=D?JV(A.buffer):A.buffer;return new A.constructor(ne,A.byteOffset,A.byteLength)}function jZ(A){var D=new A.constructor(A.source,Re.exec(A));return D.lastIndex=A.lastIndex,D}function HZ(A){return Cu?to(Cu.call(A)):{}}function N9(A,D){var ne=D?JV(A.buffer):A.buffer;return new A.constructor(ne,A.byteOffset,A.length)}function j9(A,D){if(A!==D){var ne=A!==t,Ve=A===null,at=A===A,yt=In(A),jt=D!==t,Zt=D===null,ta=D===D,ga=In(D);if(!Zt&&!ga&&!yt&&A>D||yt&&jt&&ta&&!Zt&&!ga||Ve&&jt&&ta||!ne&&ta||!at)return 1;if(!Ve&&!yt&&!ga&&A=Zt)return ta;var ga=ne[Ve];return ta*(ga=="desc"?-1:1)}}return A.index-D.index}function H9(A,D,ne,Ve){for(var at=-1,yt=A.length,jt=ne.length,Zt=-1,ta=D.length,ga=Po(yt-jt,0),ya=ua(ta+ga),Ca=!Ve;++Zt1?ne[at-1]:t,jt=at>2?ne[2]:t;for(yt=A.length>3&&typeof yt=="function"?(at--,yt):t,jt&&on(ne[0],ne[1],jt)&&(yt=at<3?t:yt,at=1),D=to(D);++Ve-1?at[yt?D[jt]:jt]:t}}function Z9(A){return or(function(D){var ne=D.length,Ve=ne,at=zn.prototype.thru;for(A&&D.reverse();Ve--;){var yt=D[Ve];if(typeof yt!="function")throw new qn(p);if(at&&!jt&&z_(yt)=="wrapper")var jt=new zn([],!0)}for(Ve=jt?Ve:ne;++Ve1&&Ps.reverse(),ya&&taZt))return!1;var ga=yt.get(A),ya=yt.get(D);if(ga&&ya)return ga==D&&ya==A;var Ca=-1,Fa=!0,Xa=ne&x?new Vi:t;for(yt.set(A,D),yt.set(D,A);++Ca1?"& ":"")+D[Ve],D=D.join(ne>2?", ":" "),A.replace(Ha,`{ +/* [wrapped with `+D+`] */ +`)}function nK(A){return ws(A)||Ui(A)||!!(d9&&A&&A[d9])}function nr(A,D){var ne=typeof A;return D=D??Q,!!D&&(ne=="number"||ne!="symbol"&&We.test(A))&&A>-1&&A%1==0&&A0){if(++D>=W)return arguments[0]}else D=0;return A.apply(t,arguments)}}function G_(A,D){var ne=-1,Ve=A.length,at=Ve-1;for(D=D===t?Ve:D;++ne1?A[D-1]:t;return ne=typeof ne=="function"?(A.pop(),ne):t,yR(A,ne)});function bR(A){var D=_t(A);return D.__chain__=!0,D}function hY(A,D){return D(A),A}function W_(A,D){return D(A)}var fY=or(function(A){var D=A.length,ne=D?A[0]:0,Ve=this.__wrapped__,at=function(yt){return RV(yt,A)};return D>1||this.__actions__.length||!(Ve instanceof Ds)||!nr(ne)?this.thru(at):(Ve=Ve.slice(ne,+ne+(D?1:0)),Ve.__actions__.push({func:W_,args:[at],thisArg:t}),new zn(Ve,this.__chain__).thru(function(yt){return D&&!yt.length&&yt.push(t),yt}))});function gY(){return bR(this)}function yY(){return new zn(this.value(),this.__chain__)}function bY(){this.__values__===t&&(this.__values__=DR(this.value()));var A=this.__index__>=this.__values__.length,D=A?t:this.__values__[this.__index__++];return{done:A,value:D}}function wY(){return this}function kY(A){for(var D,ne=this;ne instanceof M_;){var Ve=_R(ne);Ve.__index__=0,Ve.__values__=t,D?at.__wrapped__=Ve:D=Ve;var at=Ve;ne=ne.__wrapped__}return at.__wrapped__=A,D}function xY(){var A=this.__wrapped__;if(A instanceof Ds){var D=A;return this.__actions__.length&&(D=new Ds(this)),D=D.reverse(),D.__actions__.push({func:W_,args:[uM],thisArg:t}),new zn(D,this.__chain__)}return this.thru(uM)}function $Y(){return U9(this.__wrapped__,this.__actions__)}var CY=F_(function(A,D,ne){Bs.call(A,ne)?++A[ne]:ar(A,ne,1)});function SY(A,D,ne){var Ve=ws(A)?KU:hZ;return ne&&on(A,D,ne)&&(D=t),Ve(A,rs(D,3))}function EY(A,D){var ne=ws(A)?Dr:y9;return ne(A,rs(D,3))}var AY=W9(mR),LY=W9(vR);function IY(A,D){return Wo(Z_(A,D),1)}function VY(A,D){return Wo(Z_(A,D),K)}function MY(A,D,ne){return ne=ne===t?1:xs(ne),Wo(Z_(A,D),ne)}function wR(A,D){var ne=ws(A)?Hn:Or;return ne(A,rs(D,3))}function kR(A,D){var ne=ws(A)?XG:g9;return ne(A,rs(D,3))}var TY=F_(function(A,D,ne){Bs.call(A,ne)?A[ne].push(D):ar(A,ne,[D])});function DY(A,D,ne,Ve){A=mn(A)?A:Tc(A),ne=ne&&!Ve?xs(ne):0;var at=A.length;return ne<0&&(ne=Po(at+ne,0)),J_(A)?ne<=at&&A.indexOf(D,ne)>-1:!!at&&wc(A,D,ne)>-1}var PY=As(function(A,D,ne){var Ve=-1,at=typeof D=="function",yt=mn(A)?ua(A.length):[];return Or(A,function(jt){yt[++Ve]=at?En(D,jt,ne):Au(jt,D,ne)}),yt}),UY=F_(function(A,D,ne){ar(A,ne,D)});function Z_(A,D){var ne=ws(A)?mo:C9;return ne(A,rs(D,3))}function RY(A,D,ne,Ve){return A==null?[]:(ws(D)||(D=D==null?[]:[D]),ne=Ve?t:ne,ws(ne)||(ne=ne==null?[]:[ne]),L9(A,D,ne))}var OY=F_(function(A,D,ne){A[ne?0:1].push(D)},function(){return[[],[]]});function FY(A,D,ne){var Ve=ws(A)?$V:JU,at=arguments.length<3;return Ve(A,rs(D,4),ne,at,Or)}function NY(A,D,ne){var Ve=ws(A)?QG:JU,at=arguments.length<3;return Ve(A,rs(D,4),ne,at,g9)}function jY(A,D){var ne=ws(A)?Dr:y9;return ne(A,X_(rs(D,3)))}function HY(A){var D=ws(A)?m9:DZ;return D(A)}function qY(A,D,ne){(ne?on(A,D,ne):D===t)?D=1:D=xs(D);var Ve=ws(A)?uZ:PZ;return Ve(A,D)}function zY(A){var D=ws(A)?pZ:RZ;return D(A)}function BY(A){if(A==null)return 0;if(mn(A))return J_(A)?xc(A):A.length;var D=en(A);return D==U||D==Me?A.size:qV(A).length}function GY(A,D,ne){var Ve=ws(A)?CV:OZ;return ne&&on(A,D,ne)&&(D=t),Ve(A,rs(D,3))}var WY=As(function(A,D){if(A==null)return[];var ne=D.length;return ne>1&&on(A,D[0],D[1])?D=[]:ne>2&&on(D[0],D[1],D[2])&&(D=[D[0]]),L9(A,Wo(D,1),[])}),K_=EW||function(){return Go.Date.now()};function ZY(A,D){if(typeof D!="function")throw new qn(p);return A=xs(A),function(){if(--A<1)return D.apply(this,arguments)}}function xR(A,D,ne){return D=ne?t:D,D=A&&D==null?A.length:D,sr(A,E,t,t,t,t,D)}function $R(A,D){var ne;if(typeof D!="function")throw new qn(p);return A=xs(A),function(){return--A>0&&(ne=D.apply(this,arguments)),A<=1&&(D=t),ne}}var _M=As(function(A,D,ne){var Ve=z;if(ne.length){var at=Ur(ne,Vc(_M));Ve|=S}return sr(A,Ve,D,ne,at)}),CR=As(function(A,D,ne){var Ve=z|P;if(ne.length){var at=Ur(ne,Vc(CR));Ve|=S}return sr(D,Ve,A,ne,at)});function SR(A,D,ne){D=ne?t:D;var Ve=sr(A,N,t,t,t,t,t,D);return Ve.placeholder=SR.placeholder,Ve}function ER(A,D,ne){D=ne?t:D;var Ve=sr(A,M,t,t,t,t,t,D);return Ve.placeholder=ER.placeholder,Ve}function AR(A,D,ne){var Ve,at,yt,jt,Zt,ta,ga=0,ya=!1,Ca=!1,Fa=!0;if(typeof A!="function")throw new qn(p);D=Zn(D)||0,go(ne)&&(ya=!!ne.leading,Ca="maxWait"in ne,yt=Ca?Po(Zn(ne.maxWait)||0,D):yt,Fa="trailing"in ne?!!ne.trailing:Fa);function Xa($o){var bl=Ve,ir=at;return Ve=at=t,ga=$o,jt=A.apply(ir,bl),jt}function cs($o){return ga=$o,Zt=Tu(Vs,D),ya?Xa($o):jt}function Cs($o){var bl=$o-ta,ir=$o-ga,WR=D-bl;return Ca?Jo(WR,yt-ir):WR}function us($o){var bl=$o-ta,ir=$o-ga;return ta===t||bl>=D||bl<0||Ca&&ir>=yt}function Vs(){var $o=K_();if(us($o))return Ps($o);Zt=Tu(Vs,Cs($o))}function Ps($o){return Zt=t,Fa&&Ve?Xa($o):(Ve=at=t,jt)}function Vn(){Zt!==t&&O9(Zt),ga=0,Ve=ta=at=Zt=t}function nn(){return Zt===t?jt:Ps(K_())}function Mn(){var $o=K_(),bl=us($o);if(Ve=arguments,at=this,ta=$o,bl){if(Zt===t)return cs(ta);if(Ca)return O9(Zt),Zt=Tu(Vs,D),Xa(ta)}return Zt===t&&(Zt=Tu(Vs,D)),jt}return Mn.cancel=Vn,Mn.flush=nn,Mn}var KY=As(function(A,D){return f9(A,1,D)}),YY=As(function(A,D,ne){return f9(A,Zn(D)||0,ne)});function XY(A){return sr(A,T)}function Y_(A,D){if(typeof A!="function"||D!=null&&typeof D!="function")throw new qn(p);var ne=function(){var Ve=arguments,at=D?D.apply(this,Ve):Ve[0],yt=ne.cache;if(yt.has(at))return yt.get(at);var jt=A.apply(this,Ve);return ne.cache=yt.set(at,jt)||yt,jt};return ne.cache=new(Y_.Cache||tr),ne}Y_.Cache=tr;function X_(A){if(typeof A!="function")throw new qn(p);return function(){var D=arguments;switch(D.length){case 0:return!A.call(this);case 1:return!A.call(this,D[0]);case 2:return!A.call(this,D[0],D[1]);case 3:return!A.call(this,D[0],D[1],D[2])}return!A.apply(this,D)}}function QY(A){return $R(2,A)}var JY=FZ(function(A,D){D=D.length==1&&ws(D[0])?mo(D[0],An(rs())):mo(Wo(D,1),An(rs()));var ne=D.length;return As(function(Ve){for(var at=-1,yt=Jo(Ve.length,ne);++at=D}),Ui=k9(function(){return arguments}())?k9:function(A){return bo(A)&&Bs.call(A,"callee")&&!i9.call(A,"callee")},ws=ua.isArray,mX=qU?An(qU):kZ;function mn(A){return A!=null&&Q_(A.length)&&!lr(A)}function xo(A){return bo(A)&&mn(A)}function vX(A){return A===!0||A===!1||bo(A)&&sn(A)==ce}var Hr=LW||CM,hX=zU?An(zU):xZ;function fX(A){return bo(A)&&A.nodeType===1&&!Du(A)}function gX(A){if(A==null)return!0;if(mn(A)&&(ws(A)||typeof A=="string"||typeof A.splice=="function"||Hr(A)||Mc(A)||Ui(A)))return!A.length;var D=en(A);if(D==U||D==Me)return!A.size;if(Mu(A))return!qV(A).length;for(var ne in A)if(Bs.call(A,ne))return!1;return!0}function yX(A,D){return Lu(A,D)}function bX(A,D,ne){ne=typeof ne=="function"?ne:t;var Ve=ne?ne(A,D):t;return Ve===t?Lu(A,D,t,ne):!!Ve}function vM(A){if(!bo(A))return!1;var D=sn(A);return D==te||D==q||typeof A.message=="string"&&typeof A.name=="string"&&!Du(A)}function wX(A){return typeof A=="number"&&c9(A)}function lr(A){if(!go(A))return!1;var D=sn(A);return D==_e||D==Y||D==me||D==le}function IR(A){return typeof A=="number"&&A==xs(A)}function Q_(A){return typeof A=="number"&&A>-1&&A%1==0&&A<=Q}function go(A){var D=typeof A;return A!=null&&(D=="object"||D=="function")}function bo(A){return A!=null&&typeof A=="object"}var VR=BU?An(BU):CZ;function kX(A,D){return A===D||HV(A,D,nM(D))}function xX(A,D,ne){return ne=typeof ne=="function"?ne:t,HV(A,D,nM(D),ne)}function $X(A){return MR(A)&&A!=+A}function CX(A){if(iK(A))throw new gs(c);return x9(A)}function SX(A){return A===null}function EX(A){return A==null}function MR(A){return typeof A=="number"||bo(A)&&sn(A)==j}function Du(A){if(!bo(A)||sn(A)!=Z)return!1;var D=C_(A);if(D===null)return!0;var ne=Bs.call(D,"constructor")&&D.constructor;return typeof ne=="function"&&ne instanceof ne&&w_.call(ne)==xW}var hM=GU?An(GU):SZ;function AX(A){return IR(A)&&A>=-Q&&A<=Q}var TR=WU?An(WU):EZ;function J_(A){return typeof A=="string"||!ws(A)&&bo(A)&&sn(A)==mt}function In(A){return typeof A=="symbol"||bo(A)&&sn(A)==Mt}var Mc=ZU?An(ZU):AZ;function LX(A){return A===t}function IX(A){return bo(A)&&en(A)==Wt}function VX(A){return bo(A)&&sn(A)==kt}var MX=q_(zV),TX=q_(function(A,D){return A<=D});function DR(A){if(!A)return[];if(mn(A))return J_(A)?fl(A):_n(A);if(wu&&A[wu])return uW(A[wu]());var D=en(A),ne=D==U?VV:D==Me?g_:Tc;return ne(A)}function rr(A){if(!A)return A===0?A:0;if(A=Zn(A),A===K||A===-K){var D=A<0?-1:1;return D*se}return A===A?A:0}function xs(A){var D=rr(A),ne=D%1;return D===D?ne?D-ne:D:0}function PR(A){return A?Mi(xs(A),0,ke):0}function Zn(A){if(typeof A=="number")return A;if(In(A))return ue;if(go(A)){var D=typeof A.valueOf=="function"?A.valueOf():A;A=go(D)?D+"":D}if(typeof A!="string")return A===0?A:+A;A=e9(A);var ne=xe.test(A);return ne||Le.test(A)?ZG(A.slice(2),ne?2:8):Oe.test(A)?ue:+A}function UR(A){return Ml(A,vn(A))}function DX(A){return A?Mi(xs(A),-Q,Q):A===0?A:0}function Hs(A){return A==null?"":Ln(A)}var PX=Lc(function(A,D){if(Mu(D)||mn(D)){Ml(D,Fo(D),A);return}for(var ne in D)Bs.call(D,ne)&&Su(A,ne,D[ne])}),RR=Lc(function(A,D){Ml(D,vn(D),A)}),em=Lc(function(A,D,ne,Ve){Ml(D,vn(D),A,Ve)}),UX=Lc(function(A,D,ne,Ve){Ml(D,Fo(D),A,Ve)}),RX=or(RV);function OX(A,D){var ne=Ac(A);return D==null?ne:v9(ne,D)}var FX=As(function(A,D){A=to(A);var ne=-1,Ve=D.length,at=Ve>2?D[2]:t;for(at&&on(D[0],D[1],at)&&(Ve=1);++ne1),yt}),Ml(A,sM(A),ne),Ve&&(ne=Bn(ne,b|y|u,YZ));for(var at=D.length;at--;)KV(ne,D[at]);return ne});function sQ(A,D){return FR(A,X_(rs(D)))}var oQ=or(function(A,D){return A==null?{}:VZ(A,D)});function FR(A,D){if(A==null)return{};var ne=mo(sM(A),function(Ve){return[Ve]});return D=rs(D),I9(A,ne,function(Ve,at){return D(Ve,at[0])})}function nQ(A,D,ne){D=Nr(D,A);var Ve=-1,at=D.length;for(at||(at=1,A=t);++VeD){var Ve=A;A=D,D=Ve}if(ne||A%1||D%1){var at=u9();return Jo(A+at*(D-A+WG("1e-"+((at+"").length-1))),D)}return GV(A,D)}var hQ=Ic(function(A,D,ne){return D=D.toLowerCase(),A+(ne?HR(D):D)});function HR(A){return yM(Hs(A).toLowerCase())}function qR(A){return A=Hs(A),A&&A.replace(Qe,lW).replace(l_,"")}function fQ(A,D,ne){A=Hs(A),D=Ln(D);var Ve=A.length;ne=ne===t?Ve:Mi(xs(ne),0,Ve);var at=ne;return ne-=D.length,ne>=0&&A.slice(ne,at)==D}function gQ(A){return A=Hs(A),A&&bt.test(A)?A.replace(wt,rW):A}function yQ(A){return A=Hs(A),A&&ca.test(A)?A.replace(Ot,"\\$&"):A}var bQ=Ic(function(A,D,ne){return A+(ne?"-":"")+D.toLowerCase()}),wQ=Ic(function(A,D,ne){return A+(ne?" ":"")+D.toLowerCase()}),kQ=G9("toLowerCase");function xQ(A,D,ne){A=Hs(A),D=xs(D);var Ve=D?xc(A):0;if(!D||Ve>=D)return A;var at=(D-Ve)/2;return H_(L_(at),ne)+A+H_(A_(at),ne)}function $Q(A,D,ne){A=Hs(A),D=xs(D);var Ve=D?xc(A):0;return D&&Ve>>0,ne?(A=Hs(A),A&&(typeof D=="string"||D!=null&&!hM(D))&&(D=Ln(D),!D&&kc(A))?jr(fl(A),0,ne):A.split(D,ne)):[]}var VQ=Ic(function(A,D,ne){return A+(ne?" ":"")+yM(D)});function MQ(A,D,ne){return A=Hs(A),ne=ne==null?0:Mi(xs(ne),0,A.length),D=Ln(D),A.slice(ne,ne+D.length)==D}function TQ(A,D,ne){var Ve=_t.templateSettings;ne&&on(A,D,ne)&&(D=t),A=Hs(A),D=em({},D,Ve,J9);var at=em({},D.imports,Ve.imports,J9),yt=Fo(at),jt=IV(at,yt),Zt,ta,ga=0,ya=D.interpolate||Rt,Ca="__p += '",Fa=MV((D.escape||Rt).source+"|"+ya.source+"|"+(ya===ft?ct:Rt).source+"|"+(D.evaluate||Rt).source+"|$","g"),Xa="//# sourceURL="+(Bs.call(D,"sourceURL")?(D.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++u_+"]")+` +`;A.replace(Fa,function(us,Vs,Ps,Vn,nn,Mn){return Ps||(Ps=Vn),Ca+=A.slice(ga,Mn).replace(aa,iW),Vs&&(Zt=!0,Ca+=`' + +__e(`+Vs+`) + +'`),nn&&(ta=!0,Ca+=`'; +`+nn+`; +__p += '`),Ps&&(Ca+=`' + +((__t = (`+Ps+`)) == null ? '' : __t) + +'`),ga=Mn+us.length,us}),Ca+=`'; +`;var cs=Bs.call(D,"variable")&&D.variable;if(!cs)Ca=`with (obj) { +`+Ca+` +} +`;else if(Es.test(cs))throw new gs(g);Ca=(ta?Ca.replace(tt,""):Ca).replace(st,"$1").replace(ut,"$1;"),Ca="function("+(cs||"obj")+`) { +`+(cs?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(Zt?", __e = _.escape":"")+(ta?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+Ca+`return __p +}`;var Cs=BR(function(){return js(yt,Xa+"return "+Ca).apply(t,jt)});if(Cs.source=Ca,vM(Cs))throw Cs;return Cs}function DQ(A){return Hs(A).toLowerCase()}function PQ(A){return Hs(A).toUpperCase()}function UQ(A,D,ne){if(A=Hs(A),A&&(ne||D===t))return e9(A);if(!A||!(D=Ln(D)))return A;var Ve=fl(A),at=fl(D),yt=t9(Ve,at),jt=a9(Ve,at)+1;return jr(Ve,yt,jt).join("")}function RQ(A,D,ne){if(A=Hs(A),A&&(ne||D===t))return A.slice(0,o9(A)+1);if(!A||!(D=Ln(D)))return A;var Ve=fl(A),at=a9(Ve,fl(D))+1;return jr(Ve,0,at).join("")}function OQ(A,D,ne){if(A=Hs(A),A&&(ne||D===t))return A.replace(La,"");if(!A||!(D=Ln(D)))return A;var Ve=fl(A),at=t9(Ve,fl(D));return jr(Ve,at).join("")}function FQ(A,D){var ne=H,Ve=O;if(go(D)){var at="separator"in D?D.separator:at;ne="length"in D?xs(D.length):ne,Ve="omission"in D?Ln(D.omission):Ve}A=Hs(A);var yt=A.length;if(kc(A)){var jt=fl(A);yt=jt.length}if(ne>=yt)return A;var Zt=ne-xc(Ve);if(Zt<1)return Ve;var ta=jt?jr(jt,0,Zt).join(""):A.slice(0,Zt);if(at===t)return ta+Ve;if(jt&&(Zt+=ta.length-Zt),hM(at)){if(A.slice(Zt).search(at)){var ga,ya=ta;for(at.global||(at=MV(at.source,Hs(Re.exec(at))+"g")),at.lastIndex=0;ga=at.exec(ya);)var Ca=ga.index;ta=ta.slice(0,Ca===t?Zt:Ca)}}else if(A.indexOf(Ln(at),Zt)!=Zt){var Fa=ta.lastIndexOf(at);Fa>-1&&(ta=ta.slice(0,Fa))}return ta+Ve}function NQ(A){return A=Hs(A),A&&pt.test(A)?A.replace(St,vW):A}var jQ=Ic(function(A,D,ne){return A+(ne?" ":"")+D.toUpperCase()}),yM=G9("toUpperCase");function zR(A,D,ne){return A=Hs(A),D=ne?t:D,D===t?cW(A)?gW(A):tW(A):A.match(D)||[]}var BR=As(function(A,D){try{return En(A,t,D)}catch(ne){return vM(ne)?ne:new gs(ne)}}),HQ=or(function(A,D){return Hn(D,function(ne){ne=Tl(ne),ar(A,ne,_M(A[ne],A))}),A});function qQ(A){var D=A==null?0:A.length,ne=rs();return A=D?mo(A,function(Ve){if(typeof Ve[1]!="function")throw new qn(p);return[ne(Ve[0]),Ve[1]]}):[],As(function(Ve){for(var at=-1;++atQ)return[];var ne=ke,Ve=Jo(A,ke);D=rs(D),A-=ke;for(var at=LV(Ve,D);++ne0||D<0)?new Ds(ne):(A<0?ne=ne.takeRight(-A):A&&(ne=ne.drop(A)),D!==t&&(D=xs(D),ne=D<0?ne.dropRight(-D):ne.take(D-A)),ne)},Ds.prototype.takeRightWhile=function(A){return this.reverse().takeWhile(A).reverse()},Ds.prototype.toArray=function(){return this.take(ke)},Vl(Ds.prototype,function(A,D){var ne=/^(?:filter|find|map|reject)|While$/.test(D),Ve=/^(?:head|last)$/.test(D),at=_t[Ve?"take"+(D=="last"?"Right":""):D],yt=Ve||/^find/.test(D);at&&(_t.prototype[D]=function(){var jt=this.__wrapped__,Zt=Ve?[1]:arguments,ta=jt instanceof Ds,ga=Zt[0],ya=ta||ws(jt),Ca=function(Vs){var Ps=at.apply(_t,Pr([Vs],Zt));return Ve&&Fa?Ps[0]:Ps};ya&&ne&&typeof ga=="function"&&ga.length!=1&&(ta=ya=!1);var Fa=this.__chain__,Xa=!!this.__actions__.length,cs=yt&&!Fa,Cs=ta&&!Xa;if(!yt&&ya){jt=Cs?jt:new Ds(this);var us=A.apply(jt,Zt);return us.__actions__.push({func:W_,args:[Ca],thisArg:t}),new zn(us,Fa)}return cs&&Cs?A.apply(this,Zt):(us=this.thru(Ca),cs?Ve?us.value()[0]:us.value():us)})}),Hn(["pop","push","shift","sort","splice","unshift"],function(A){var D=y_[A],ne=/^(?:push|sort|unshift)$/.test(A)?"tap":"thru",Ve=/^(?:pop|shift)$/.test(A);_t.prototype[A]=function(){var at=arguments;if(Ve&&!this.__chain__){var yt=this.value();return D.apply(ws(yt)?yt:[],at)}return this[ne](function(jt){return D.apply(ws(jt)?jt:[],at)})}}),Vl(Ds.prototype,function(A,D){var ne=_t[D];if(ne){var Ve=ne.name+"";Bs.call(Ec,Ve)||(Ec[Ve]=[]),Ec[Ve].push({name:D,func:ne})}}),Ec[N_(t,P).name]=[{name:"wrapper",func:t}],Ds.prototype.clone=NW,Ds.prototype.reverse=jW,Ds.prototype.value=HW,_t.prototype.at=fY,_t.prototype.chain=gY,_t.prototype.commit=yY,_t.prototype.next=bY,_t.prototype.plant=kY,_t.prototype.reverse=xY,_t.prototype.toJSON=_t.prototype.valueOf=_t.prototype.value=$Y,_t.prototype.first=_t.prototype.head,wu&&(_t.prototype[wu]=wY),_t},$c=yW();Ai?((Ai.exports=$c)._=$c,wV._=$c):Go._=$c}).call(li)})(pI,pI.exports);var Oa=pI.exports;const ls=Fp(Oa);let Rne=Symbol("headlessui.useid"),One=0;function Xo(){return Ba(Rne,()=>`${++One}`)()}function Sa(l){var a;if(l==null||l.value==null)return null;let t=(a=l.value.$el)!=null?a:l.value;return t instanceof Node?t:null}function yo(l,a,...t){if(l in a){let d=a[l];return typeof d=="function"?d(...t):d}let s=new Error(`Tried to handle "${l}" but there is no handler defined. Only defined handlers are: ${Object.keys(a).map(d=>`"${d}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(s,yo),s}var Fne=Object.defineProperty,Nne=(l,a,t)=>a in l?Fne(l,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[a]=t,wF=(l,a,t)=>(Nne(l,typeof a!="symbol"?a+"":a,t),t);let jne=class{constructor(){wF(this,"current",this.detect()),wF(this,"currentId",0)}set(a){this.current!==a&&(this.currentId=0,this.current=a)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window>"u"||typeof document>"u"?"server":"client"}},Np=new jne;function cl(l){if(Np.isServer)return null;if(l instanceof Node)return l.ownerDocument;if(l!=null&&l.hasOwnProperty("value")){let a=Sa(l);if(a)return a.ownerDocument}return document}let WT=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(l=>`${l}:not([tabindex='-1'])`).join(",");var Xs=(l=>(l[l.First=1]="First",l[l.Previous=2]="Previous",l[l.Next=4]="Next",l[l.Last=8]="Last",l[l.WrapAround=16]="WrapAround",l[l.NoScroll=32]="NoScroll",l))(Xs||{}),gr=(l=>(l[l.Error=0]="Error",l[l.Overflow=1]="Overflow",l[l.Success=2]="Success",l[l.Underflow=3]="Underflow",l))(gr||{}),Hne=(l=>(l[l.Previous=-1]="Previous",l[l.Next=1]="Next",l))(Hne||{});function jp(l=document.body){return l==null?[]:Array.from(l.querySelectorAll(WT)).sort((a,t)=>Math.sign((a.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var GI=(l=>(l[l.Strict=0]="Strict",l[l.Loose=1]="Loose",l))(GI||{});function WI(l,a=0){var t;return l===((t=cl(l))==null?void 0:t.body)?!1:yo(a,{0(){return l.matches(WT)},1(){let s=l;for(;s!==null;){if(s.matches(WT))return!0;s=s.parentElement}return!1}})}function Uq(l){let a=cl(l);vs(()=>{a&&!WI(a.activeElement,0)&&pi(l)})}var qne=(l=>(l[l.Keyboard=0]="Keyboard",l[l.Mouse=1]="Mouse",l))(qne||{});typeof window<"u"&&typeof document<"u"&&(document.addEventListener("keydown",l=>{l.metaKey||l.altKey||l.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",l=>{l.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:l.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function pi(l){l==null||l.focus({preventScroll:!0})}let zne=["textarea","input"].join(",");function Bne(l){var a,t;return(t=(a=l==null?void 0:l.matches)==null?void 0:a.call(l,zne))!=null?t:!1}function Yd(l,a=t=>t){return l.slice().sort((t,s)=>{let d=a(t),c=a(s);if(d===null||c===null)return 0;let p=d.compareDocumentPosition(c);return p&Node.DOCUMENT_POSITION_FOLLOWING?-1:p&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function Gne(l,a){return jo(jp(),a,{relativeTo:l})}function jo(l,a,{sorted:t=!0,relativeTo:s=null,skipElements:d=[]}={}){var c;let p=(c=Array.isArray(l)?l.length>0?l[0].ownerDocument:document:l==null?void 0:l.ownerDocument)!=null?c:document,g=Array.isArray(l)?t?Yd(l):l:jp(l);d.length>0&&g.length>1&&(g=g.filter(C=>!d.includes(C))),s=s??p.activeElement;let _=(()=>{if(a&5)return 1;if(a&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),v=(()=>{if(a&1)return 0;if(a&2)return Math.max(0,g.indexOf(s))-1;if(a&4)return Math.max(0,g.indexOf(s))+1;if(a&8)return g.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),h=a&32?{preventScroll:!0}:{},b=0,y=g.length,u;do{if(b>=y||b+y<=0)return 0;let C=v+b;if(a&16)C=(C+y)%y;else{if(C<0)return 3;if(C>=y)return 1}u=g[C],u==null||u.focus(h),b+=_}while(u!==p.activeElement);return a&6&&Bne(u)&&u.select(),2}function Rq(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function Wne(){return/Android/gi.test(window.navigator.userAgent)}function Zne(){return Rq()||Wne()}function mm(l,a,t){Np.isServer||Lo(s=>{document.addEventListener(l,a,t),s(()=>document.removeEventListener(l,a,t))})}function Oq(l,a,t){Np.isServer||Lo(s=>{window.addEventListener(l,a,t),s(()=>window.removeEventListener(l,a,t))})}function xP(l,a,t=ae(()=>!0)){function s(c,p){if(!t.value||c.defaultPrevented)return;let g=p(c);if(g===null||!g.getRootNode().contains(g))return;let _=function v(h){return typeof h=="function"?v(h()):Array.isArray(h)||h instanceof Set?h:[h]}(l);for(let v of _){if(v===null)continue;let h=v instanceof HTMLElement?v:Sa(v);if(h!=null&&h.contains(g)||c.composed&&c.composedPath().includes(h))return}return!WI(g,GI.Loose)&&g.tabIndex!==-1&&c.preventDefault(),a(c,g)}let d=$(null);mm("pointerdown",c=>{var p,g;t.value&&(d.value=((g=(p=c.composedPath)==null?void 0:p.call(c))==null?void 0:g[0])||c.target)},!0),mm("mousedown",c=>{var p,g;t.value&&(d.value=((g=(p=c.composedPath)==null?void 0:p.call(c))==null?void 0:g[0])||c.target)},!0),mm("click",c=>{Zne()||d.value&&(s(c,()=>d.value),d.value=null)},!0),mm("touchend",c=>s(c,()=>c.target instanceof HTMLElement?c.target:null),!0),Oq("blur",c=>s(c,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}function kF(l,a){if(l)return l;let t=a??"button";if(typeof t=="string"&&t.toLowerCase()==="button")return"button"}function ZI(l,a){let t=$(kF(l.value.type,l.value.as));return zt(()=>{t.value=kF(l.value.type,l.value.as)}),Lo(()=>{var s;t.value||Sa(a)&&Sa(a)instanceof HTMLButtonElement&&!((s=Sa(a))!=null&&s.hasAttribute("type"))&&(t.value="button")}),t}function xF(l){return[l.screenX,l.screenY]}function Kne(){let l=$([-1,-1]);return{wasMoved(a){let t=xF(a);return l.value[0]===t[0]&&l.value[1]===t[1]?!1:(l.value=t,!0)},update(a){l.value=xF(a)}}}function Yne({container:l,accept:a,walk:t,enabled:s}){Lo(()=>{let d=l.value;if(!d||s!==void 0&&!s.value)return;let c=cl(l);if(!c)return;let p=Object.assign(_=>a(_),{acceptNode:a}),g=c.createTreeWalker(d,NodeFilter.SHOW_ELEMENT,p,!1);for(;g.nextNode();)t(g.currentNode)})}var il=(l=>(l[l.None=0]="None",l[l.RenderStrategy=1]="RenderStrategy",l[l.Static=2]="Static",l))(il||{}),ii=(l=>(l[l.Unmount=0]="Unmount",l[l.Hidden=1]="Hidden",l))(ii||{});function lo({visible:l=!0,features:a=0,ourProps:t,theirProps:s,...d}){var c;let p=Nq(s,t),g=Object.assign(d,{props:p});if(l||a&2&&p.static)return qM(g);if(a&1){let _=(c=p.unmount)==null||c?0:1;return yo(_,{0(){return null},1(){return qM({...d,props:{...p,hidden:!0,style:{display:"none"}}})}})}return qM(g)}function qM({props:l,attrs:a,slots:t,slot:s,name:d}){var c,p;let{as:g,..._}=$P(l,["unmount","static"]),v=(c=t.default)==null?void 0:c.call(t,s),h={};if(s){let b=!1,y=[];for(let[u,C]of Object.entries(s))typeof C=="boolean"&&(b=!0),C===!0&&y.push(u);b&&(h["data-headlessui-state"]=y.join(" "))}if(g==="template"){if(v=Fq(v??[]),Object.keys(_).length>0||Object.keys(a).length>0){let[b,...y]=v??[];if(!Xne(b)||y.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${d} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(_).concat(Object.keys(a)).map(x=>x.trim()).filter((x,z,P)=>P.indexOf(x)===z).sort((x,z)=>x.localeCompare(z)).map(x=>` - ${x}`).join(` +`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map(x=>` - ${x}`).join(` +`)].join(` +`));let u=Nq((p=b.props)!=null?p:{},_,h),C=kr(b,u,!0);for(let x in u)x.startsWith("on")&&(C.props||(C.props={}),C.props[x]=u[x]);return C}return Array.isArray(v)&&v.length===1?v[0]:v}return Os(g,Object.assign({},_,h),{default:()=>v})}function Fq(l){return l.flatMap(a=>a.type===Pe?Fq(a.children):[a])}function Nq(...l){if(l.length===0)return{};if(l.length===1)return l[0];let a={},t={};for(let s of l)for(let d in s)d.startsWith("on")&&typeof s[d]=="function"?(t[d]!=null||(t[d]=[]),t[d].push(s[d])):a[d]=s[d];if(a.disabled||a["aria-disabled"])return Object.assign(a,Object.fromEntries(Object.keys(t).map(s=>[s,void 0])));for(let s in t)Object.assign(a,{[s](d,...c){let p=t[s];for(let g of p){if(d instanceof Event&&d.defaultPrevented)return;g(d,...c)}}});return a}function $P(l,a=[]){let t=Object.assign({},l);for(let s of a)s in t&&delete t[s];return t}function Xne(l){return l==null?!1:typeof l.type=="string"||typeof l.type=="object"||typeof l.type=="function"}var hi=(l=>(l[l.None=1]="None",l[l.Focusable=2]="Focusable",l[l.Hidden=4]="Hidden",l))(hi||{});let fi=lt({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup(l,{slots:a,attrs:t}){return()=>{var s;let{features:d,...c}=l,p={"aria-hidden":(d&2)===2?!0:(s=c["aria-hidden"])!=null?s:void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(d&4)===4&&(d&2)!==2&&{display:"none"}}};return lo({ourProps:p,theirProps:c,slot:{},attrs:t,slots:a,name:"Hidden"})}}}),jq=Symbol("Context");var po=(l=>(l[l.Open=1]="Open",l[l.Closed=2]="Closed",l[l.Closing=4]="Closing",l[l.Opening=8]="Opening",l))(po||{});function Qne(){return uu()!==null}function uu(){return Ba(jq,null)}function KI(l){ka(jq,l)}var Ss=(l=>(l.Space=" ",l.Enter="Enter",l.Escape="Escape",l.Backspace="Backspace",l.Delete="Delete",l.ArrowLeft="ArrowLeft",l.ArrowUp="ArrowUp",l.ArrowRight="ArrowRight",l.ArrowDown="ArrowDown",l.Home="Home",l.End="End",l.PageUp="PageUp",l.PageDown="PageDown",l.Tab="Tab",l))(Ss||{});function Jne(l){function a(){document.readyState!=="loading"&&(l(),document.removeEventListener("DOMContentLoaded",a))}typeof window<"u"&&typeof document<"u"&&(document.addEventListener("DOMContentLoaded",a),a())}let Xd=[];Jne(()=>{function l(a){a.target instanceof HTMLElement&&a.target!==document.body&&Xd[0]!==a.target&&(Xd.unshift(a.target),Xd=Xd.filter(t=>t!=null&&t.isConnected),Xd.splice(10))}window.addEventListener("click",l,{capture:!0}),window.addEventListener("mousedown",l,{capture:!0}),window.addEventListener("focus",l,{capture:!0}),document.body.addEventListener("click",l,{capture:!0}),document.body.addEventListener("mousedown",l,{capture:!0}),document.body.addEventListener("focus",l,{capture:!0})});function ele(l){throw new Error("Unexpected object: "+l)}var Pn=(l=>(l[l.First=0]="First",l[l.Previous=1]="Previous",l[l.Next=2]="Next",l[l.Last=3]="Last",l[l.Specific=4]="Specific",l[l.Nothing=5]="Nothing",l))(Pn||{});function tle(l,a){let t=a.resolveItems();if(t.length<=0)return null;let s=a.resolveActiveIndex(),d=s??-1;switch(l.focus){case 0:{for(let c=0;c=0;--c)if(!a.resolveDisabled(t[c],c,t))return c;return s}case 2:{for(let c=d+1;c=0;--c)if(!a.resolveDisabled(t[c],c,t))return c;return s}case 4:{for(let c=0;csetTimeout(()=>{throw a}))}function Hp(){let l=[],a={addEventListener(t,s,d,c){return t.addEventListener(s,d,c),a.add(()=>t.removeEventListener(s,d,c))},requestAnimationFrame(...t){let s=requestAnimationFrame(...t);a.add(()=>cancelAnimationFrame(s))},nextFrame(...t){a.requestAnimationFrame(()=>{a.requestAnimationFrame(...t)})},setTimeout(...t){let s=setTimeout(...t);a.add(()=>clearTimeout(s))},microTask(...t){let s={current:!0};return YI(()=>{s.current&&t[0]()}),a.add(()=>{s.current=!1})},style(t,s,d){let c=t.style.getPropertyValue(s);return Object.assign(t.style,{[s]:d}),this.add(()=>{Object.assign(t.style,{[s]:c})})},group(t){let s=Hp();return t(s),this.add(()=>s.dispose())},add(t){return l.push(t),()=>{let s=l.indexOf(t);if(s>=0)for(let d of l.splice(s,1))d()}},dispose(){for(let t of l.splice(0))t()}};return a}function CP(l,a,t,s){Np.isServer||Lo(d=>{l=l??window,l.addEventListener(a,t,s),d(()=>l.removeEventListener(a,t,s))})}var Un=(l=>(l[l.Forwards=0]="Forwards",l[l.Backwards=1]="Backwards",l))(Un||{});function SP(){let l=$(0);return Oq("keydown",a=>{a.key==="Tab"&&(l.value=a.shiftKey?1:0)}),l}function Hq(l){if(!l)return new Set;if(typeof l=="function")return new Set(l());let a=new Set;for(let t of l.value){let s=Sa(t);s instanceof HTMLElement&&a.add(s)}return a}var qq=(l=>(l[l.None=1]="None",l[l.InitialFocus=2]="InitialFocus",l[l.TabLock=4]="TabLock",l[l.FocusLock=8]="FocusLock",l[l.RestoreFocus=16]="RestoreFocus",l[l.All=30]="All",l))(qq||{});let Nu=Object.assign(lt({name:"FocusTrap",props:{as:{type:[Object,String],default:"div"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:[Object,Function],default:$(new Set)}},inheritAttrs:!1,setup(l,{attrs:a,slots:t,expose:s}){let d=$(null);s({el:d,$el:d});let c=ae(()=>cl(d)),p=$(!1);zt(()=>p.value=!0),Fs(()=>p.value=!1),sle({ownerDocument:c},ae(()=>p.value&&!!(l.features&16)));let g=ole({ownerDocument:c,container:d,initialFocus:ae(()=>l.initialFocus)},ae(()=>p.value&&!!(l.features&2)));nle({ownerDocument:c,container:d,containers:l.containers,previousActiveElement:g},ae(()=>p.value&&!!(l.features&8)));let _=SP();function v(u){let C=Sa(d);C&&(x=>x())(()=>{yo(_.value,{[Un.Forwards]:()=>{jo(C,Xs.First,{skipElements:[u.relatedTarget]})},[Un.Backwards]:()=>{jo(C,Xs.Last,{skipElements:[u.relatedTarget]})}})})}let h=$(!1);function b(u){u.key==="Tab"&&(h.value=!0,requestAnimationFrame(()=>{h.value=!1}))}function y(u){if(!p.value)return;let C=Hq(l.containers);Sa(d)instanceof HTMLElement&&C.add(Sa(d));let x=u.relatedTarget;x instanceof HTMLElement&&x.dataset.headlessuiFocusGuard!=="true"&&(zq(C,x)||(h.value?jo(Sa(d),yo(_.value,{[Un.Forwards]:()=>Xs.Next,[Un.Backwards]:()=>Xs.Previous})|Xs.WrapAround,{relativeTo:u.target}):u.target instanceof HTMLElement&&pi(u.target)))}return()=>{let u={},C={ref:d,onKeydown:b,onFocusout:y},{features:x,initialFocus:z,containers:P,...F}=l;return Os(Pe,[!!(x&4)&&Os(fi,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:v,features:hi.Focusable}),lo({ourProps:C,theirProps:{...a,...F},slot:u,attrs:a,slots:t,name:"FocusTrap"}),!!(x&4)&&Os(fi,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:v,features:hi.Focusable})])}}}),{features:qq});function ale(l){let a=$(Xd.slice());return ra([l],([t],[s])=>{s===!0&&t===!1?YI(()=>{a.value.splice(0)}):s===!1&&t===!0&&(a.value=Xd.slice())},{flush:"post"}),()=>{var t;return(t=a.value.find(s=>s!=null&&s.isConnected))!=null?t:null}}function sle({ownerDocument:l},a){let t=ale(a);zt(()=>{Lo(()=>{var s,d;a.value||((s=l.value)==null?void 0:s.activeElement)===((d=l.value)==null?void 0:d.body)&&pi(t())},{flush:"post"})}),Fs(()=>{a.value&&pi(t())})}function ole({ownerDocument:l,container:a,initialFocus:t},s){let d=$(null),c=$(!1);return zt(()=>c.value=!0),Fs(()=>c.value=!1),zt(()=>{ra([a,t,s],(p,g)=>{if(p.every((v,h)=>(g==null?void 0:g[h])===v)||!s.value)return;let _=Sa(a);_&&YI(()=>{var v,h;if(!c.value)return;let b=Sa(t),y=(v=l.value)==null?void 0:v.activeElement;if(b){if(b===y){d.value=y;return}}else if(_.contains(y)){d.value=y;return}b?pi(b):jo(_,Xs.First|Xs.NoScroll)===gr.Error&&console.warn("There are no focusable elements inside the "),d.value=(h=l.value)==null?void 0:h.activeElement})},{immediate:!0,flush:"post"})}),d}function nle({ownerDocument:l,container:a,containers:t,previousActiveElement:s},d){var c;CP((c=l.value)==null?void 0:c.defaultView,"focus",p=>{if(!d.value)return;let g=Hq(t);Sa(a)instanceof HTMLElement&&g.add(Sa(a));let _=s.value;if(!_)return;let v=p.target;v&&v instanceof HTMLElement?zq(g,v)?(s.value=v,pi(v)):(p.preventDefault(),p.stopPropagation(),pi(_)):pi(s.value)},!0)}function zq(l,a){for(let t of l)if(t.contains(a))return!0;return!1}function lle(l){let a=MI(l.getSnapshot());return Fs(l.subscribe(()=>{a.value=l.getSnapshot()})),a}function rle(l,a){let t=l(),s=new Set;return{getSnapshot(){return t},subscribe(d){return s.add(d),()=>s.delete(d)},dispatch(d,...c){let p=a[d].call(t,...c);p&&(t=p,s.forEach(g=>g()))}}}function ile(){let l;return{before({doc:a}){var t;let s=a.documentElement;l=((t=a.defaultView)!=null?t:window).innerWidth-s.clientWidth},after({doc:a,d:t}){let s=a.documentElement,d=s.clientWidth-s.offsetWidth,c=l-d;t.style(s,"paddingRight",`${c}px`)}}}function dle(){return Rq()?{before({doc:l,d:a,meta:t}){function s(d){return t.containers.flatMap(c=>c()).some(c=>c.contains(d))}a.microTask(()=>{var d;if(window.getComputedStyle(l.documentElement).scrollBehavior!=="auto"){let g=Hp();g.style(l.documentElement,"scrollBehavior","auto"),a.add(()=>a.microTask(()=>g.dispose()))}let c=(d=window.scrollY)!=null?d:window.pageYOffset,p=null;a.addEventListener(l,"click",g=>{if(g.target instanceof HTMLElement)try{let _=g.target.closest("a");if(!_)return;let{hash:v}=new URL(_.href),h=l.querySelector(v);h&&!s(h)&&(p=h)}catch{}},!0),a.addEventListener(l,"touchstart",g=>{if(g.target instanceof HTMLElement)if(s(g.target)){let _=g.target;for(;_.parentElement&&s(_.parentElement);)_=_.parentElement;a.style(_,"overscrollBehavior","contain")}else a.style(g.target,"touchAction","none")}),a.addEventListener(l,"touchmove",g=>{if(g.target instanceof HTMLElement)if(s(g.target)){let _=g.target;for(;_.parentElement&&_.dataset.headlessuiPortal!==""&&!(_.scrollHeight>_.clientHeight||_.scrollWidth>_.clientWidth);)_=_.parentElement;_.dataset.headlessuiPortal===""&&g.preventDefault()}else g.preventDefault()},{passive:!1}),a.add(()=>{var g;let _=(g=window.scrollY)!=null?g:window.pageYOffset;c!==_&&window.scrollTo(0,c),p&&p.isConnected&&(p.scrollIntoView({block:"nearest"}),p=null)})})}}:{}}function cle(){return{before({doc:l,d:a}){a.style(l.documentElement,"overflow","hidden")}}}function ule(l){let a={};for(let t of l)Object.assign(a,t(a));return a}let tc=rle(()=>new Map,{PUSH(l,a){var t;let s=(t=this.get(l))!=null?t:{doc:l,count:0,d:Hp(),meta:new Set};return s.count++,s.meta.add(a),this.set(l,s),this},POP(l,a){let t=this.get(l);return t&&(t.count--,t.meta.delete(a)),this},SCROLL_PREVENT({doc:l,d:a,meta:t}){let s={doc:l,d:a,meta:ule(t)},d=[dle(),ile(),cle()];d.forEach(({before:c})=>c==null?void 0:c(s)),d.forEach(({after:c})=>c==null?void 0:c(s))},SCROLL_ALLOW({d:l}){l.dispose()},TEARDOWN({doc:l}){this.delete(l)}});tc.subscribe(()=>{let l=tc.getSnapshot(),a=new Map;for(let[t]of l)a.set(t,t.documentElement.style.overflow);for(let t of l.values()){let s=a.get(t.doc)==="hidden",d=t.count!==0;(d&&!s||!d&&s)&&tc.dispatch(t.count>0?"SCROLL_PREVENT":"SCROLL_ALLOW",t),t.count===0&&tc.dispatch("TEARDOWN",t)}});function ple(l,a,t){let s=lle(tc),d=ae(()=>{let c=l.value?s.value.get(l.value):void 0;return c?c.count>0:!1});return ra([l,a],([c,p],[g],_)=>{if(!c||!p)return;tc.dispatch("PUSH",c,t);let v=!1;_(()=>{v||(tc.dispatch("POP",g??c,t),v=!0)})},{immediate:!0}),d}let zM=new Map,ju=new Map;function $F(l,a=$(!0)){Lo(t=>{var s;if(!a.value)return;let d=Sa(l);if(!d)return;t(function(){var p;if(!d)return;let g=(p=ju.get(d))!=null?p:1;if(g===1?ju.delete(d):ju.set(d,g-1),g!==1)return;let _=zM.get(d);_&&(_["aria-hidden"]===null?d.removeAttribute("aria-hidden"):d.setAttribute("aria-hidden",_["aria-hidden"]),d.inert=_.inert,zM.delete(d))});let c=(s=ju.get(d))!=null?s:0;ju.set(d,c+1),c===0&&(zM.set(d,{"aria-hidden":d.getAttribute("aria-hidden"),inert:d.inert}),d.setAttribute("aria-hidden","true"),d.inert=!0)})}function Bq({defaultContainers:l=[],portals:a,mainTreeNodeRef:t}={}){let s=$(null),d=cl(s);function c(){var p,g,_;let v=[];for(let h of l)h!==null&&(h instanceof HTMLElement?v.push(h):"value"in h&&h.value instanceof HTMLElement&&v.push(h.value));if(a!=null&&a.value)for(let h of a.value)v.push(h);for(let h of(p=d==null?void 0:d.querySelectorAll("html > *, body > *"))!=null?p:[])h!==document.body&&h!==document.head&&h instanceof HTMLElement&&h.id!=="headlessui-portal-root"&&(h.contains(Sa(s))||h.contains((_=(g=Sa(s))==null?void 0:g.getRootNode())==null?void 0:_.host)||v.some(b=>h.contains(b))||v.push(h));return v}return{resolveContainers:c,contains(p){return c().some(g=>g.contains(p))},mainTreeNodeRef:s,MainTreeNode(){return t!=null?null:Os(fi,{features:hi.Hidden,ref:s})}}}let Gq=Symbol("ForcePortalRootContext");function _le(){return Ba(Gq,!1)}let CF=lt({name:"ForcePortalRoot",props:{as:{type:[Object,String],default:"template"},force:{type:Boolean,default:!1}},setup(l,{slots:a,attrs:t}){return ka(Gq,l.force),()=>{let{force:s,...d}=l;return lo({theirProps:d,ourProps:{},slot:{},slots:a,attrs:t,name:"ForcePortalRoot"})}}}),Wq=Symbol("StackContext");var ZT=(l=>(l[l.Add=0]="Add",l[l.Remove=1]="Remove",l))(ZT||{});function mle(){return Ba(Wq,()=>{})}function vle({type:l,enabled:a,element:t,onUpdate:s}){let d=mle();function c(...p){s==null||s(...p),d(...p)}zt(()=>{ra(a,(p,g)=>{p?c(0,l,t):g===!0&&c(1,l,t)},{immediate:!0,flush:"sync"})}),Fs(()=>{a.value&&c(1,l,t)}),ka(Wq,c)}let Zq=Symbol("DescriptionContext");function hle(){let l=Ba(Zq,null);if(l===null)throw new Error("Missing parent");return l}function fle({slot:l=$({}),name:a="Description",props:t={}}={}){let s=$([]);function d(c){return s.value.push(c),()=>{let p=s.value.indexOf(c);p!==-1&&s.value.splice(p,1)}}return ka(Zq,{register:d,slot:l,name:a,props:t}),ae(()=>s.value.length>0?s.value.join(" "):void 0)}let gle=lt({name:"Description",props:{as:{type:[Object,String],default:"p"},id:{type:String,default:null}},setup(l,{attrs:a,slots:t}){var s;let d=(s=l.id)!=null?s:`headlessui-description-${Xo()}`,c=hle();return zt(()=>Fs(c.register(d))),()=>{let{name:p="Description",slot:g=$({}),props:_={}}=c,{...v}=l,h={...Object.entries(_).reduce((b,[y,u])=>Object.assign(b,{[y]:e(u)}),{}),id:d};return lo({ourProps:h,theirProps:v,slot:g.value,attrs:a,slots:t,name:p})}}});function yle(l){let a=cl(l);if(!a){if(l===null)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${l}`)}let t=a.getElementById("headlessui-portal-root");if(t)return t;let s=a.createElement("div");return s.setAttribute("id","headlessui-portal-root"),a.body.appendChild(s)}let ble=lt({name:"Portal",props:{as:{type:[Object,String],default:"div"}},setup(l,{slots:a,attrs:t}){let s=$(null),d=ae(()=>cl(s)),c=_le(),p=Ba(Yq,null),g=$(c===!0||p==null?yle(s.value):p.resolveTarget()),_=$(!1);zt(()=>{_.value=!0}),Lo(()=>{c||p!=null&&(g.value=p.resolveTarget())});let v=Ba(KT,null),h=!1,b=xr();return ra(s,()=>{if(h||!v)return;let y=Sa(s);y&&(Fs(v.register(y),b),h=!0)}),Fs(()=>{var y,u;let C=(y=d.value)==null?void 0:y.getElementById("headlessui-portal-root");C&&g.value===C&&g.value.children.length<=0&&((u=g.value.parentElement)==null||u.removeChild(g.value))}),()=>{if(!_.value||g.value===null)return null;let y={ref:s,"data-headlessui-portal":""};return Os(UH,{to:g.value},lo({ourProps:y,theirProps:l,slot:{},attrs:t,slots:a,name:"Portal"}))}}}),KT=Symbol("PortalParentContext");function Kq(){let l=Ba(KT,null),a=$([]);function t(c){return a.value.push(c),l&&l.register(c),()=>s(c)}function s(c){let p=a.value.indexOf(c);p!==-1&&a.value.splice(p,1),l&&l.unregister(c)}let d={register:t,unregister:s,portals:a};return[a,lt({name:"PortalWrapper",setup(c,{slots:p}){return ka(KT,d),()=>{var g;return(g=p.default)==null?void 0:g.call(p)}}})]}let Yq=Symbol("PortalGroupContext"),wle=lt({name:"PortalGroup",props:{as:{type:[Object,String],default:"template"},target:{type:Object,default:null}},setup(l,{attrs:a,slots:t}){let s=Mo({resolveTarget(){return l.target}});return ka(Yq,s),()=>{let{target:d,...c}=l;return lo({theirProps:c,ourProps:{},slot:{},attrs:a,slots:t,name:"PortalGroup"})}}});var kle=(l=>(l[l.Open=0]="Open",l[l.Closed=1]="Closed",l))(kle||{});let YT=Symbol("DialogContext");function EP(l){let a=Ba(YT,null);if(a===null){let t=new Error(`<${l} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,EP),t}return a}let vm="DC8F892D-2EBD-447C-A4C8-A03058436FF4",Xq=lt({name:"Dialog",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:vm},initialFocus:{type:Object,default:null},id:{type:String,default:null},role:{type:String,default:"dialog"}},emits:{close:l=>!0},setup(l,{emit:a,attrs:t,slots:s,expose:d}){var c,p;let g=(c=l.id)!=null?c:`headlessui-dialog-${Xo()}`,_=$(!1);zt(()=>{_.value=!0});let v=!1,h=ae(()=>l.role==="dialog"||l.role==="alertdialog"?l.role:(v||(v=!0,console.warn(`Invalid role [${h}] passed to . Only \`dialog\` and and \`alertdialog\` are supported. Using \`dialog\` instead.`)),"dialog")),b=$(0),y=uu(),u=ae(()=>l.open===vm&&y!==null?(y.value&po.Open)===po.Open:l.open),C=$(null),x=ae(()=>cl(C));if(d({el:C,$el:C}),!(l.open!==vm||y!==null))throw new Error("You forgot to provide an `open` prop to the `Dialog`.");if(typeof u.value!="boolean")throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${u.value===vm?void 0:l.open}`);let z=ae(()=>_.value&&u.value?0:1),P=ae(()=>z.value===0),F=ae(()=>b.value>1),N=Ba(YT,null)!==null,[M,S]=Kq(),{resolveContainers:L,mainTreeNodeRef:E,MainTreeNode:f}=Bq({portals:M,defaultContainers:[ae(()=>{var ke;return(ke=K.panelRef.value)!=null?ke:C.value})]}),T=ae(()=>F.value?"parent":"leaf"),H=ae(()=>y!==null?(y.value&po.Closing)===po.Closing:!1),O=ae(()=>N||H.value?!1:P.value),W=ae(()=>{var ke,we,Ce;return(Ce=Array.from((we=(ke=x.value)==null?void 0:ke.querySelectorAll("body > *"))!=null?we:[]).find($e=>$e.id==="headlessui-portal-root"?!1:$e.contains(Sa(E))&&$e instanceof HTMLElement))!=null?Ce:null});$F(W,O);let ie=ae(()=>F.value?!0:P.value),ve=ae(()=>{var ke,we,Ce;return(Ce=Array.from((we=(ke=x.value)==null?void 0:ke.querySelectorAll("[data-headlessui-portal]"))!=null?we:[]).find($e=>$e.contains(Sa(E))&&$e instanceof HTMLElement))!=null?Ce:null});$F(ve,ie),vle({type:"Dialog",enabled:ae(()=>z.value===0),element:C,onUpdate:(ke,we)=>{if(we==="Dialog")return yo(ke,{[ZT.Add]:()=>b.value+=1,[ZT.Remove]:()=>b.value-=1})}});let de=fle({name:"DialogDescription",slot:ae(()=>({open:u.value}))}),re=$(null),K={titleId:re,panelRef:$(null),dialogState:z,setTitleId(ke){re.value!==ke&&(re.value=ke)},close(){a("close",!1)}};ka(YT,K);let Q=ae(()=>!(!P.value||F.value));xP(L,(ke,we)=>{K.close(),vs(()=>we==null?void 0:we.focus())},Q);let se=ae(()=>!(F.value||z.value!==0));CP((p=x.value)==null?void 0:p.defaultView,"keydown",ke=>{se.value&&(ke.defaultPrevented||ke.key===Ss.Escape&&(ke.preventDefault(),ke.stopPropagation(),K.close()))});let ue=ae(()=>!(H.value||z.value!==0||N));return ple(x,ue,ke=>{var we;return{containers:[...(we=ke.containers)!=null?we:[],L]}}),Lo(ke=>{if(z.value!==0)return;let we=Sa(C);if(!we)return;let Ce=new ResizeObserver($e=>{for(let he of $e){let je=he.target.getBoundingClientRect();je.x===0&&je.y===0&&je.width===0&&je.height===0&&K.close()}});Ce.observe(we),ke(()=>Ce.disconnect())}),()=>{let{open:ke,initialFocus:we,...Ce}=l,$e={...t,ref:C,id:g,role:h.value,"aria-modal":z.value===0?!0:void 0,"aria-labelledby":re.value,"aria-describedby":de.value},he={open:z.value===0};return Os(CF,{force:!0},()=>[Os(ble,()=>Os(wle,{target:C.value},()=>Os(CF,{force:!1},()=>Os(Nu,{initialFocus:we,containers:L,features:P.value?yo(T.value,{parent:Nu.features.RestoreFocus,leaf:Nu.features.All&~Nu.features.FocusLock}):Nu.features.None},()=>Os(S,{},()=>lo({ourProps:$e,theirProps:{...Ce,...t},slot:he,attrs:t,slots:s,visible:z.value===0,features:il.RenderStrategy|il.Static,name:"Dialog"})))))),Os(f)])}}}),Qq=lt({name:"DialogPanel",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:null}},setup(l,{attrs:a,slots:t,expose:s}){var d;let c=(d=l.id)!=null?d:`headlessui-dialog-panel-${Xo()}`,p=EP("DialogPanel");s({el:p.panelRef,$el:p.panelRef});function g(_){_.stopPropagation()}return()=>{let{..._}=l,v={id:c,ref:p.panelRef,onClick:g};return lo({ourProps:v,theirProps:_,slot:{open:p.dialogState.value===0},attrs:a,slots:t,name:"DialogPanel"})}}}),Jq=lt({name:"DialogTitle",props:{as:{type:[Object,String],default:"h2"},id:{type:String,default:null}},setup(l,{attrs:a,slots:t}){var s;let d=(s=l.id)!=null?s:`headlessui-dialog-title-${Xo()}`,c=EP("DialogTitle");return zt(()=>{c.setTitleId(d),Fs(()=>c.setTitleId(null))}),()=>{let{...p}=l;return lo({ourProps:{id:d},theirProps:p,slot:{open:c.dialogState.value===0},attrs:a,slots:t,name:"DialogTitle"})}}}),ez=gle;var xle=(l=>(l[l.Open=0]="Open",l[l.Closed=1]="Closed",l))(xle||{});let tz=Symbol("DisclosureContext");function AP(l){let a=Ba(tz,null);if(a===null){let t=new Error(`<${l} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,AP),t}return a}let az=Symbol("DisclosurePanelContext");function $le(){return Ba(az,null)}let Cle=lt({name:"Disclosure",props:{as:{type:[Object,String],default:"template"},defaultOpen:{type:[Boolean],default:!1}},setup(l,{slots:a,attrs:t}){let s=$(l.defaultOpen?0:1),d=$(null),c=$(null),p={buttonId:$(`headlessui-disclosure-button-${Xo()}`),panelId:$(`headlessui-disclosure-panel-${Xo()}`),disclosureState:s,panel:d,button:c,toggleDisclosure(){s.value=yo(s.value,{0:1,1:0})},closeDisclosure(){s.value!==1&&(s.value=1)},close(g){p.closeDisclosure();let _=g?g instanceof HTMLElement?g:g.value instanceof HTMLElement?Sa(g):Sa(p.button):Sa(p.button);_==null||_.focus()}};return ka(tz,p),KI(ae(()=>yo(s.value,{0:po.Open,1:po.Closed}))),()=>{let{defaultOpen:g,..._}=l,v={open:s.value===0,close:p.close};return lo({theirProps:_,ourProps:{},slot:v,slots:a,attrs:t,name:"Disclosure"})}}}),Sle=lt({name:"DisclosureButton",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1},id:{type:String,default:null}},setup(l,{attrs:a,slots:t,expose:s}){let d=AP("DisclosureButton"),c=$le(),p=ae(()=>c===null?!1:c.value===d.panelId.value);zt(()=>{p.value||l.id!==null&&(d.buttonId.value=l.id)}),Fs(()=>{p.value||(d.buttonId.value=null)});let g=$(null);s({el:g,$el:g}),p.value||Lo(()=>{d.button.value=g.value});let _=ZI(ae(()=>({as:l.as,type:a.type})),g);function v(){var y;l.disabled||(p.value?(d.toggleDisclosure(),(y=Sa(d.button))==null||y.focus()):d.toggleDisclosure())}function h(y){var u;if(!l.disabled)if(p.value)switch(y.key){case Ss.Space:case Ss.Enter:y.preventDefault(),y.stopPropagation(),d.toggleDisclosure(),(u=Sa(d.button))==null||u.focus();break}else switch(y.key){case Ss.Space:case Ss.Enter:y.preventDefault(),y.stopPropagation(),d.toggleDisclosure();break}}function b(y){switch(y.key){case Ss.Space:y.preventDefault();break}}return()=>{var y;let u={open:d.disclosureState.value===0},{id:C,...x}=l,z=p.value?{ref:g,type:_.value,onClick:v,onKeydown:h}:{id:(y=d.buttonId.value)!=null?y:C,ref:g,type:_.value,"aria-expanded":d.disclosureState.value===0,"aria-controls":d.disclosureState.value===0||Sa(d.panel)?d.panelId.value:void 0,disabled:l.disabled?!0:void 0,onClick:v,onKeydown:h,onKeyup:b};return lo({ourProps:z,theirProps:x,slot:u,attrs:a,slots:t,name:"DisclosureButton"})}}}),Ele=lt({name:"DisclosurePanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null}},setup(l,{attrs:a,slots:t,expose:s}){let d=AP("DisclosurePanel");zt(()=>{l.id!==null&&(d.panelId.value=l.id)}),Fs(()=>{d.panelId.value=null}),s({el:d.panel,$el:d.panel}),ka(az,d.panelId);let c=uu(),p=ae(()=>c!==null?(c.value&po.Open)===po.Open:d.disclosureState.value===0);return()=>{var g;let _={open:d.disclosureState.value===0,close:d.close},{id:v,...h}=l,b={id:(g=d.panelId.value)!=null?g:v,ref:d.panel};return lo({ourProps:b,theirProps:h,slot:_,attrs:a,slots:t,features:il.RenderStrategy|il.Static,visible:p.value,name:"DisclosurePanel"})}}}),SF=/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g;function EF(l){var a,t;let s=(a=l.innerText)!=null?a:"",d=l.cloneNode(!0);if(!(d instanceof HTMLElement))return s;let c=!1;for(let g of d.querySelectorAll('[hidden],[aria-hidden],[role="img"]'))g.remove(),c=!0;let p=c?(t=d.innerText)!=null?t:"":s;return SF.test(p)&&(p=p.replace(SF,"")),p}function Ale(l){let a=l.getAttribute("aria-label");if(typeof a=="string")return a.trim();let t=l.getAttribute("aria-labelledby");if(t){let s=t.split(" ").map(d=>{let c=document.getElementById(d);if(c){let p=c.getAttribute("aria-label");return typeof p=="string"?p.trim():EF(c).trim()}return null}).filter(Boolean);if(s.length>0)return s.join(", ")}return EF(l).trim()}function Lle(l){let a=$(""),t=$("");return()=>{let s=Sa(l);if(!s)return"";let d=s.innerText;if(a.value===d)return t.value;let c=Ale(s).trim().toLowerCase();return a.value=d,t.value=c,c}}var Ile=(l=>(l[l.Open=0]="Open",l[l.Closed=1]="Closed",l))(Ile||{}),Vle=(l=>(l[l.Pointer=0]="Pointer",l[l.Other=1]="Other",l))(Vle||{});function Mle(l){requestAnimationFrame(()=>requestAnimationFrame(l))}let sz=Symbol("MenuContext");function XI(l){let a=Ba(sz,null);if(a===null){let t=new Error(`<${l} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,XI),t}return a}let Tle=lt({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup(l,{slots:a,attrs:t}){let s=$(1),d=$(null),c=$(null),p=$([]),g=$(""),_=$(null),v=$(1);function h(y=u=>u){let u=_.value!==null?p.value[_.value]:null,C=Yd(y(p.value.slice()),z=>Sa(z.dataRef.domRef)),x=u?C.indexOf(u):null;return x===-1&&(x=null),{items:C,activeItemIndex:x}}let b={menuState:s,buttonRef:d,itemsRef:c,items:p,searchQuery:g,activeItemIndex:_,activationTrigger:v,closeMenu:()=>{s.value=1,_.value=null},openMenu:()=>s.value=0,goToItem(y,u,C){let x=h(),z=tle(y===Pn.Specific?{focus:Pn.Specific,id:u}:{focus:y},{resolveItems:()=>x.items,resolveActiveIndex:()=>x.activeItemIndex,resolveId:P=>P.id,resolveDisabled:P=>P.dataRef.disabled});g.value="",_.value=z,v.value=C??1,p.value=x.items},search(y){let u=g.value!==""?0:1;g.value+=y.toLowerCase();let C=(_.value!==null?p.value.slice(_.value+u).concat(p.value.slice(0,_.value+u)):p.value).find(z=>z.dataRef.textValue.startsWith(g.value)&&!z.dataRef.disabled),x=C?p.value.indexOf(C):-1;x===-1||x===_.value||(_.value=x,v.value=1)},clearSearch(){g.value=""},registerItem(y,u){let C=h(x=>[...x,{id:y,dataRef:u}]);p.value=C.items,_.value=C.activeItemIndex,v.value=1},unregisterItem(y){let u=h(C=>{let x=C.findIndex(z=>z.id===y);return x!==-1&&C.splice(x,1),C});p.value=u.items,_.value=u.activeItemIndex,v.value=1}};return xP([d,c],(y,u)=>{var C;b.closeMenu(),WI(u,GI.Loose)||(y.preventDefault(),(C=Sa(d))==null||C.focus())},ae(()=>s.value===0)),ka(sz,b),KI(ae(()=>yo(s.value,{0:po.Open,1:po.Closed}))),()=>{let y={open:s.value===0,close:b.closeMenu};return lo({ourProps:{},theirProps:l,slot:y,slots:a,attrs:t,name:"Menu"})}}}),Dle=lt({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"},id:{type:String,default:null}},setup(l,{attrs:a,slots:t,expose:s}){var d;let c=(d=l.id)!=null?d:`headlessui-menu-button-${Xo()}`,p=XI("MenuButton");s({el:p.buttonRef,$el:p.buttonRef});function g(b){switch(b.key){case Ss.Space:case Ss.Enter:case Ss.ArrowDown:b.preventDefault(),b.stopPropagation(),p.openMenu(),vs(()=>{var y;(y=Sa(p.itemsRef))==null||y.focus({preventScroll:!0}),p.goToItem(Pn.First)});break;case Ss.ArrowUp:b.preventDefault(),b.stopPropagation(),p.openMenu(),vs(()=>{var y;(y=Sa(p.itemsRef))==null||y.focus({preventScroll:!0}),p.goToItem(Pn.Last)});break}}function _(b){switch(b.key){case Ss.Space:b.preventDefault();break}}function v(b){l.disabled||(p.menuState.value===0?(p.closeMenu(),vs(()=>{var y;return(y=Sa(p.buttonRef))==null?void 0:y.focus({preventScroll:!0})})):(b.preventDefault(),p.openMenu(),Mle(()=>{var y;return(y=Sa(p.itemsRef))==null?void 0:y.focus({preventScroll:!0})})))}let h=ZI(ae(()=>({as:l.as,type:a.type})),p.buttonRef);return()=>{var b;let y={open:p.menuState.value===0},{...u}=l,C={ref:p.buttonRef,id:c,type:h.value,"aria-haspopup":"menu","aria-controls":(b=Sa(p.itemsRef))==null?void 0:b.id,"aria-expanded":p.menuState.value===0,onKeydown:g,onKeyup:_,onClick:v};return lo({ourProps:C,theirProps:u,slot:y,attrs:a,slots:t,name:"MenuButton"})}}}),Ple=lt({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null}},setup(l,{attrs:a,slots:t,expose:s}){var d;let c=(d=l.id)!=null?d:`headlessui-menu-items-${Xo()}`,p=XI("MenuItems"),g=$(null);s({el:p.itemsRef,$el:p.itemsRef}),Yne({container:ae(()=>Sa(p.itemsRef)),enabled:ae(()=>p.menuState.value===0),accept(y){return y.getAttribute("role")==="menuitem"?NodeFilter.FILTER_REJECT:y.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(y){y.setAttribute("role","none")}});function _(y){var u;switch(g.value&&clearTimeout(g.value),y.key){case Ss.Space:if(p.searchQuery.value!=="")return y.preventDefault(),y.stopPropagation(),p.search(y.key);case Ss.Enter:if(y.preventDefault(),y.stopPropagation(),p.activeItemIndex.value!==null){let C=p.items.value[p.activeItemIndex.value];(u=Sa(C.dataRef.domRef))==null||u.click()}p.closeMenu(),Uq(Sa(p.buttonRef));break;case Ss.ArrowDown:return y.preventDefault(),y.stopPropagation(),p.goToItem(Pn.Next);case Ss.ArrowUp:return y.preventDefault(),y.stopPropagation(),p.goToItem(Pn.Previous);case Ss.Home:case Ss.PageUp:return y.preventDefault(),y.stopPropagation(),p.goToItem(Pn.First);case Ss.End:case Ss.PageDown:return y.preventDefault(),y.stopPropagation(),p.goToItem(Pn.Last);case Ss.Escape:y.preventDefault(),y.stopPropagation(),p.closeMenu(),vs(()=>{var C;return(C=Sa(p.buttonRef))==null?void 0:C.focus({preventScroll:!0})});break;case Ss.Tab:y.preventDefault(),y.stopPropagation(),p.closeMenu(),vs(()=>Gne(Sa(p.buttonRef),y.shiftKey?Xs.Previous:Xs.Next));break;default:y.key.length===1&&(p.search(y.key),g.value=setTimeout(()=>p.clearSearch(),350));break}}function v(y){switch(y.key){case Ss.Space:y.preventDefault();break}}let h=uu(),b=ae(()=>h!==null?(h.value&po.Open)===po.Open:p.menuState.value===0);return()=>{var y,u;let C={open:p.menuState.value===0},{...x}=l,z={"aria-activedescendant":p.activeItemIndex.value===null||(y=p.items.value[p.activeItemIndex.value])==null?void 0:y.id,"aria-labelledby":(u=Sa(p.buttonRef))==null?void 0:u.id,id:c,onKeydown:_,onKeyup:v,role:"menu",tabIndex:0,ref:p.itemsRef};return lo({ourProps:z,theirProps:x,slot:C,attrs:a,slots:t,features:il.RenderStrategy|il.Static,visible:b.value,name:"MenuItems"})}}}),Ule=lt({name:"MenuItem",inheritAttrs:!1,props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1},id:{type:String,default:null}},setup(l,{slots:a,attrs:t,expose:s}){var d;let c=(d=l.id)!=null?d:`headlessui-menu-item-${Xo()}`,p=XI("MenuItem"),g=$(null);s({el:g,$el:g});let _=ae(()=>p.activeItemIndex.value!==null?p.items.value[p.activeItemIndex.value].id===c:!1),v=Lle(g),h=ae(()=>({disabled:l.disabled,get textValue(){return v()},domRef:g}));zt(()=>p.registerItem(c,h)),Fs(()=>p.unregisterItem(c)),Lo(()=>{p.menuState.value===0&&_.value&&p.activationTrigger.value!==0&&vs(()=>{var P,F;return(F=(P=Sa(g))==null?void 0:P.scrollIntoView)==null?void 0:F.call(P,{block:"nearest"})})});function b(P){if(l.disabled)return P.preventDefault();p.closeMenu(),Uq(Sa(p.buttonRef))}function y(){if(l.disabled)return p.goToItem(Pn.Nothing);p.goToItem(Pn.Specific,c)}let u=Kne();function C(P){u.update(P)}function x(P){u.wasMoved(P)&&(l.disabled||_.value||p.goToItem(Pn.Specific,c,0))}function z(P){u.wasMoved(P)&&(l.disabled||_.value&&p.goToItem(Pn.Nothing))}return()=>{let{disabled:P}=l,F={active:_.value,disabled:P,close:p.closeMenu},{...N}=l;return lo({ourProps:{id:c,ref:g,role:"menuitem",tabIndex:P===!0?void 0:-1,"aria-disabled":P===!0?!0:void 0,disabled:void 0,onClick:b,onFocus:y,onPointerenter:C,onMouseenter:C,onPointermove:x,onMousemove:x,onPointerleave:z,onMouseleave:z},theirProps:{...t,...N},slot:F,attrs:t,slots:a,name:"MenuItem"})}}});var Rle=(l=>(l[l.Open=0]="Open",l[l.Closed=1]="Closed",l))(Rle||{});let oz=Symbol("PopoverContext");function LP(l){let a=Ba(oz,null);if(a===null){let t=new Error(`<${l} /> is missing a parent <${rz.name} /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,LP),t}return a}let Ole=Symbol("PopoverGroupContext");function nz(){return Ba(Ole,null)}let lz=Symbol("PopoverPanelContext");function Fle(){return Ba(lz,null)}let rz=lt({name:"Popover",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"}},setup(l,{slots:a,attrs:t,expose:s}){var d;let c=$(null);s({el:c,$el:c});let p=$(1),g=$(null),_=$(null),v=$(null),h=$(null),b=ae(()=>cl(c)),y=ae(()=>{var S,L;if(!Sa(g)||!Sa(h))return!1;for(let ie of document.querySelectorAll("body > *"))if(Number(ie==null?void 0:ie.contains(Sa(g)))^Number(ie==null?void 0:ie.contains(Sa(h))))return!0;let E=jp(),f=E.indexOf(Sa(g)),T=(f+E.length-1)%E.length,H=(f+1)%E.length,O=E[T],W=E[H];return!((S=Sa(h))!=null&&S.contains(O))&&!((L=Sa(h))!=null&&L.contains(W))}),u={popoverState:p,buttonId:$(null),panelId:$(null),panel:h,button:g,isPortalled:y,beforePanelSentinel:_,afterPanelSentinel:v,togglePopover(){p.value=yo(p.value,{0:1,1:0})},closePopover(){p.value!==1&&(p.value=1)},close(S){u.closePopover();let L=S?S instanceof HTMLElement?S:S.value instanceof HTMLElement?Sa(S):Sa(u.button):Sa(u.button);L==null||L.focus()}};ka(oz,u),KI(ae(()=>yo(p.value,{0:po.Open,1:po.Closed})));let C={buttonId:u.buttonId,panelId:u.panelId,close(){u.closePopover()}},x=nz(),z=x==null?void 0:x.registerPopover,[P,F]=Kq(),N=Bq({mainTreeNodeRef:x==null?void 0:x.mainTreeNodeRef,portals:P,defaultContainers:[g,h]});function M(){var S,L,E,f;return(f=x==null?void 0:x.isFocusWithinPopoverGroup())!=null?f:((S=b.value)==null?void 0:S.activeElement)&&(((L=Sa(g))==null?void 0:L.contains(b.value.activeElement))||((E=Sa(h))==null?void 0:E.contains(b.value.activeElement)))}return Lo(()=>z==null?void 0:z(C)),CP((d=b.value)==null?void 0:d.defaultView,"focus",S=>{var L,E;S.target!==window&&S.target instanceof HTMLElement&&p.value===0&&(M()||g&&h&&(N.contains(S.target)||(L=Sa(u.beforePanelSentinel))!=null&&L.contains(S.target)||(E=Sa(u.afterPanelSentinel))!=null&&E.contains(S.target)||u.closePopover()))},!0),xP(N.resolveContainers,(S,L)=>{var E;u.closePopover(),WI(L,GI.Loose)||(S.preventDefault(),(E=Sa(g))==null||E.focus())},ae(()=>p.value===0)),()=>{let S={open:p.value===0,close:u.close};return Os(Pe,[Os(F,{},()=>lo({theirProps:{...l,...t},ourProps:{ref:c},slot:S,slots:a,attrs:t,name:"Popover"})),Os(N.MainTreeNode)])}}}),Nle=lt({name:"PopoverButton",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1},id:{type:String,default:null}},inheritAttrs:!1,setup(l,{attrs:a,slots:t,expose:s}){var d;let c=(d=l.id)!=null?d:`headlessui-popover-button-${Xo()}`,p=LP("PopoverButton"),g=ae(()=>cl(p.button));s({el:p.button,$el:p.button}),zt(()=>{p.buttonId.value=c}),Fs(()=>{p.buttonId.value=null});let _=nz(),v=_==null?void 0:_.closeOthers,h=Fle(),b=ae(()=>h===null?!1:h.value===p.panelId.value),y=$(null),u=`headlessui-focus-sentinel-${Xo()}`;b.value||Lo(()=>{p.button.value=Sa(y)});let C=ZI(ae(()=>({as:l.as,type:a.type})),y);function x(S){var L,E,f,T,H;if(b.value){if(p.popoverState.value===1)return;switch(S.key){case Ss.Space:case Ss.Enter:S.preventDefault(),(E=(L=S.target).click)==null||E.call(L),p.closePopover(),(f=Sa(p.button))==null||f.focus();break}}else switch(S.key){case Ss.Space:case Ss.Enter:S.preventDefault(),S.stopPropagation(),p.popoverState.value===1&&(v==null||v(p.buttonId.value)),p.togglePopover();break;case Ss.Escape:if(p.popoverState.value!==0)return v==null?void 0:v(p.buttonId.value);if(!Sa(p.button)||(T=g.value)!=null&&T.activeElement&&!((H=Sa(p.button))!=null&&H.contains(g.value.activeElement)))return;S.preventDefault(),S.stopPropagation(),p.closePopover();break}}function z(S){b.value||S.key===Ss.Space&&S.preventDefault()}function P(S){var L,E;l.disabled||(b.value?(p.closePopover(),(L=Sa(p.button))==null||L.focus()):(S.preventDefault(),S.stopPropagation(),p.popoverState.value===1&&(v==null||v(p.buttonId.value)),p.togglePopover(),(E=Sa(p.button))==null||E.focus()))}function F(S){S.preventDefault(),S.stopPropagation()}let N=SP();function M(){let S=Sa(p.panel);if(!S)return;function L(){yo(N.value,{[Un.Forwards]:()=>jo(S,Xs.First),[Un.Backwards]:()=>jo(S,Xs.Last)})===gr.Error&&jo(jp().filter(E=>E.dataset.headlessuiFocusGuard!=="true"),yo(N.value,{[Un.Forwards]:Xs.Next,[Un.Backwards]:Xs.Previous}),{relativeTo:Sa(p.button)})}L()}return()=>{let S=p.popoverState.value===0,L={open:S},{...E}=l,f=b.value?{ref:y,type:C.value,onKeydown:x,onClick:P}:{ref:y,id:c,type:C.value,"aria-expanded":p.popoverState.value===0,"aria-controls":Sa(p.panel)?p.panelId.value:void 0,disabled:l.disabled?!0:void 0,onKeydown:x,onKeyup:z,onClick:P,onMousedown:F};return Os(Pe,[lo({ourProps:f,theirProps:{...a,...E},slot:L,attrs:a,slots:t,name:"PopoverButton"}),S&&!b.value&&p.isPortalled.value&&Os(fi,{id:u,features:hi.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:M})])}}}),jle=lt({name:"PopoverPanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},focus:{type:Boolean,default:!1},id:{type:String,default:null}},inheritAttrs:!1,setup(l,{attrs:a,slots:t,expose:s}){var d;let c=(d=l.id)!=null?d:`headlessui-popover-panel-${Xo()}`,{focus:p}=l,g=LP("PopoverPanel"),_=ae(()=>cl(g.panel)),v=`headlessui-focus-sentinel-before-${Xo()}`,h=`headlessui-focus-sentinel-after-${Xo()}`;s({el:g.panel,$el:g.panel}),zt(()=>{g.panelId.value=c}),Fs(()=>{g.panelId.value=null}),ka(lz,g.panelId),Lo(()=>{var F,N;if(!p||g.popoverState.value!==0||!g.panel)return;let M=(F=_.value)==null?void 0:F.activeElement;(N=Sa(g.panel))!=null&&N.contains(M)||jo(Sa(g.panel),Xs.First)});let b=uu(),y=ae(()=>b!==null?(b.value&po.Open)===po.Open:g.popoverState.value===0);function u(F){var N,M;switch(F.key){case Ss.Escape:if(g.popoverState.value!==0||!Sa(g.panel)||_.value&&!((N=Sa(g.panel))!=null&&N.contains(_.value.activeElement)))return;F.preventDefault(),F.stopPropagation(),g.closePopover(),(M=Sa(g.button))==null||M.focus();break}}function C(F){var N,M,S,L,E;let f=F.relatedTarget;f&&Sa(g.panel)&&((N=Sa(g.panel))!=null&&N.contains(f)||(g.closePopover(),((S=(M=Sa(g.beforePanelSentinel))==null?void 0:M.contains)!=null&&S.call(M,f)||(E=(L=Sa(g.afterPanelSentinel))==null?void 0:L.contains)!=null&&E.call(L,f))&&f.focus({preventScroll:!0})))}let x=SP();function z(){let F=Sa(g.panel);if(!F)return;function N(){yo(x.value,{[Un.Forwards]:()=>{var M;jo(F,Xs.First)===gr.Error&&((M=Sa(g.afterPanelSentinel))==null||M.focus())},[Un.Backwards]:()=>{var M;(M=Sa(g.button))==null||M.focus({preventScroll:!0})}})}N()}function P(){let F=Sa(g.panel);if(!F)return;function N(){yo(x.value,{[Un.Forwards]:()=>{let M=Sa(g.button),S=Sa(g.panel);if(!M)return;let L=jp(),E=L.indexOf(M),f=L.slice(0,E+1),T=[...L.slice(E+1),...f];for(let H of T.slice())if(H.dataset.headlessuiFocusGuard==="true"||S!=null&&S.contains(H)){let O=T.indexOf(H);O!==-1&&T.splice(O,1)}jo(T,Xs.First,{sorted:!1})},[Un.Backwards]:()=>{var M;jo(F,Xs.Previous)===gr.Error&&((M=Sa(g.button))==null||M.focus())}})}N()}return()=>{let F={open:g.popoverState.value===0,close:g.close},{focus:N,...M}=l,S={ref:g.panel,id:c,onKeydown:u,onFocusout:p&&g.popoverState.value===0?C:void 0,tabIndex:-1};return lo({ourProps:S,theirProps:{...a,...M},attrs:a,slot:F,slots:{...t,default:(...L)=>{var E;return[Os(Pe,[y.value&&g.isPortalled.value&&Os(fi,{id:v,ref:g.beforePanelSentinel,features:hi.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:z}),(E=t.default)==null?void 0:E.call(t,...L),y.value&&g.isPortalled.value&&Os(fi,{id:h,ref:g.afterPanelSentinel,features:hi.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:P})])]}},features:il.RenderStrategy|il.Static,visible:y.value,name:"PopoverPanel"})}}}),Hle=lt({props:{onFocus:{type:Function,required:!0}},setup(l){let a=$(!0);return()=>a.value?Os(fi,{as:"button",type:"button",features:hi.Focusable,onFocus(t){t.preventDefault();let s,d=50;function c(){var p;if(d--<=0){s&&cancelAnimationFrame(s);return}if((p=l.onFocus)!=null&&p.call(l)){a.value=!1,cancelAnimationFrame(s);return}s=requestAnimationFrame(c)}s=requestAnimationFrame(c)}}):null}});var qle=(l=>(l[l.Forwards=0]="Forwards",l[l.Backwards=1]="Backwards",l))(qle||{}),zle=(l=>(l[l.Less=-1]="Less",l[l.Equal=0]="Equal",l[l.Greater=1]="Greater",l))(zle||{});let iz=Symbol("TabsContext");function qp(l){let a=Ba(iz,null);if(a===null){let t=new Error(`<${l} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,qp),t}return a}let IP=Symbol("TabsSSRContext"),Ble=lt({name:"TabGroup",emits:{change:l=>!0},props:{as:{type:[Object,String],default:"template"},selectedIndex:{type:[Number],default:null},defaultIndex:{type:[Number],default:0},vertical:{type:[Boolean],default:!1},manual:{type:[Boolean],default:!1}},inheritAttrs:!1,setup(l,{slots:a,attrs:t,emit:s}){var d;let c=$((d=l.selectedIndex)!=null?d:l.defaultIndex),p=$([]),g=$([]),_=ae(()=>l.selectedIndex!==null),v=ae(()=>_.value?l.selectedIndex:c.value);function h(x){var z;let P=Yd(b.tabs.value,Sa),F=Yd(b.panels.value,Sa),N=P.filter(M=>{var S;return!((S=Sa(M))!=null&&S.hasAttribute("disabled"))});if(x<0||x>P.length-1){let M=yo(c.value===null?0:Math.sign(x-c.value),{[-1]:()=>1,0:()=>yo(Math.sign(x),{[-1]:()=>0,0:()=>0,1:()=>1}),1:()=>0}),S=yo(M,{0:()=>P.indexOf(N[0]),1:()=>P.indexOf(N[N.length-1])});S!==-1&&(c.value=S),b.tabs.value=P,b.panels.value=F}else{let M=P.slice(0,x),S=[...P.slice(x),...M].find(E=>N.includes(E));if(!S)return;let L=(z=P.indexOf(S))!=null?z:b.selectedIndex.value;L===-1&&(L=b.selectedIndex.value),c.value=L,b.tabs.value=P,b.panels.value=F}}let b={selectedIndex:ae(()=>{var x,z;return(z=(x=c.value)!=null?x:l.defaultIndex)!=null?z:null}),orientation:ae(()=>l.vertical?"vertical":"horizontal"),activation:ae(()=>l.manual?"manual":"auto"),tabs:p,panels:g,setSelectedIndex(x){v.value!==x&&s("change",x),_.value||h(x)},registerTab(x){var z;if(p.value.includes(x))return;let P=p.value[c.value];p.value.push(x),p.value=Yd(p.value,Sa);let F=(z=p.value.indexOf(P))!=null?z:c.value;F!==-1&&(c.value=F)},unregisterTab(x){let z=p.value.indexOf(x);z!==-1&&p.value.splice(z,1)},registerPanel(x){g.value.includes(x)||(g.value.push(x),g.value=Yd(g.value,Sa))},unregisterPanel(x){let z=g.value.indexOf(x);z!==-1&&g.value.splice(z,1)}};ka(iz,b);let y=$({tabs:[],panels:[]}),u=$(!1);zt(()=>{u.value=!0}),ka(IP,ae(()=>u.value?null:y.value));let C=ae(()=>l.selectedIndex);return zt(()=>{ra([C],()=>{var x;return h((x=l.selectedIndex)!=null?x:l.defaultIndex)},{immediate:!0})}),Lo(()=>{if(!_.value||v.value==null||b.tabs.value.length<=0)return;let x=Yd(b.tabs.value,Sa);x.some((z,P)=>Sa(b.tabs.value[P])!==Sa(z))&&b.setSelectedIndex(x.findIndex(z=>Sa(z)===Sa(b.tabs.value[v.value])))}),()=>{let x={selectedIndex:c.value};return Os(Pe,[p.value.length<=0&&Os(Hle,{onFocus:()=>{for(let z of p.value){let P=Sa(z);if((P==null?void 0:P.tabIndex)===0)return P.focus(),!0}return!1}}),lo({theirProps:{...t,...$P(l,["selectedIndex","defaultIndex","manual","vertical","onChange"])},ourProps:{},slot:x,slots:a,attrs:t,name:"TabGroup"})])}}}),Gle=lt({name:"TabList",props:{as:{type:[Object,String],default:"div"}},setup(l,{attrs:a,slots:t}){let s=qp("TabList");return()=>{let d={selectedIndex:s.selectedIndex.value},c={role:"tablist","aria-orientation":s.orientation.value};return lo({ourProps:c,theirProps:l,slot:d,attrs:a,slots:t,name:"TabList"})}}}),Wle=lt({name:"Tab",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1},id:{type:String,default:null}},setup(l,{attrs:a,slots:t,expose:s}){var d;let c=(d=l.id)!=null?d:`headlessui-tabs-tab-${Xo()}`,p=qp("Tab"),g=$(null);s({el:g,$el:g}),zt(()=>p.registerTab(g)),Fs(()=>p.unregisterTab(g));let _=Ba(IP),v=ae(()=>{if(_.value){let F=_.value.tabs.indexOf(c);return F===-1?_.value.tabs.push(c)-1:F}return-1}),h=ae(()=>{let F=p.tabs.value.indexOf(g);return F===-1?v.value:F}),b=ae(()=>h.value===p.selectedIndex.value);function y(F){var N;let M=F();if(M===gr.Success&&p.activation.value==="auto"){let S=(N=cl(g))==null?void 0:N.activeElement,L=p.tabs.value.findIndex(E=>Sa(E)===S);L!==-1&&p.setSelectedIndex(L)}return M}function u(F){let N=p.tabs.value.map(M=>Sa(M)).filter(Boolean);if(F.key===Ss.Space||F.key===Ss.Enter){F.preventDefault(),F.stopPropagation(),p.setSelectedIndex(h.value);return}switch(F.key){case Ss.Home:case Ss.PageUp:return F.preventDefault(),F.stopPropagation(),y(()=>jo(N,Xs.First));case Ss.End:case Ss.PageDown:return F.preventDefault(),F.stopPropagation(),y(()=>jo(N,Xs.Last))}if(y(()=>yo(p.orientation.value,{vertical(){return F.key===Ss.ArrowUp?jo(N,Xs.Previous|Xs.WrapAround):F.key===Ss.ArrowDown?jo(N,Xs.Next|Xs.WrapAround):gr.Error},horizontal(){return F.key===Ss.ArrowLeft?jo(N,Xs.Previous|Xs.WrapAround):F.key===Ss.ArrowRight?jo(N,Xs.Next|Xs.WrapAround):gr.Error}}))===gr.Success)return F.preventDefault()}let C=$(!1);function x(){var F;C.value||(C.value=!0,!l.disabled&&((F=Sa(g))==null||F.focus({preventScroll:!0}),p.setSelectedIndex(h.value),YI(()=>{C.value=!1})))}function z(F){F.preventDefault()}let P=ZI(ae(()=>({as:l.as,type:a.type})),g);return()=>{var F;let N={selected:b.value},{...M}=l,S={ref:g,onKeydown:u,onMousedown:z,onClick:x,id:c,role:"tab",type:P.value,"aria-controls":(F=Sa(p.panels.value[h.value]))==null?void 0:F.id,"aria-selected":b.value,tabIndex:b.value?0:-1,disabled:l.disabled?!0:void 0};return lo({ourProps:S,theirProps:M,slot:N,attrs:a,slots:t,name:"Tab"})}}}),Zle=lt({name:"TabPanels",props:{as:{type:[Object,String],default:"div"}},setup(l,{slots:a,attrs:t}){let s=qp("TabPanels");return()=>{let d={selectedIndex:s.selectedIndex.value};return lo({theirProps:l,ourProps:{},slot:d,attrs:t,slots:a,name:"TabPanels"})}}}),Kle=lt({name:"TabPanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null},tabIndex:{type:Number,default:0}},setup(l,{attrs:a,slots:t,expose:s}){var d;let c=(d=l.id)!=null?d:`headlessui-tabs-panel-${Xo()}`,p=qp("TabPanel"),g=$(null);s({el:g,$el:g}),zt(()=>p.registerPanel(g)),Fs(()=>p.unregisterPanel(g));let _=Ba(IP),v=ae(()=>{if(_.value){let y=_.value.panels.indexOf(c);return y===-1?_.value.panels.push(c)-1:y}return-1}),h=ae(()=>{let y=p.panels.value.indexOf(g);return y===-1?v.value:y}),b=ae(()=>h.value===p.selectedIndex.value);return()=>{var y;let u={selected:b.value},{tabIndex:C,...x}=l,z={ref:g,id:c,role:"tabpanel","aria-labelledby":(y=Sa(p.tabs.value[h.value]))==null?void 0:y.id,tabIndex:b.value?C:-1};return!b.value&&l.unmount&&!l.static?Os(fi,{as:"span","aria-hidden":!0,...z}):lo({ourProps:z,theirProps:x,slot:u,attrs:a,slots:t,features:il.Static|il.RenderStrategy,visible:b.value,name:"TabPanel"})}}});function Yle(l){let a={called:!1};return(...t)=>{if(!a.called)return a.called=!0,l(...t)}}function BM(l,...a){l&&a.length>0&&l.classList.add(...a)}function hm(l,...a){l&&a.length>0&&l.classList.remove(...a)}var XT=(l=>(l.Finished="finished",l.Cancelled="cancelled",l))(XT||{});function Xle(l,a){let t=Hp();if(!l)return t.dispose;let{transitionDuration:s,transitionDelay:d}=getComputedStyle(l),[c,p]=[s,d].map(g=>{let[_=0]=g.split(",").filter(Boolean).map(v=>v.includes("ms")?parseFloat(v):parseFloat(v)*1e3).sort((v,h)=>h-v);return _});return c!==0?t.setTimeout(()=>a("finished"),c+p):a("finished"),t.add(()=>a("cancelled")),t.dispose}function AF(l,a,t,s,d,c){let p=Hp(),g=c!==void 0?Yle(c):()=>{};return hm(l,...d),BM(l,...a,...t),p.nextFrame(()=>{hm(l,...t),BM(l,...s),p.add(Xle(l,_=>(hm(l,...s,...a),BM(l,...d),g(_))))}),p.add(()=>hm(l,...a,...t,...s,...d)),p.add(()=>g("cancelled")),p.dispose}function Ni(l=""){return l.split(/\s+/).filter(a=>a.length>1)}let VP=Symbol("TransitionContext");var Qle=(l=>(l.Visible="visible",l.Hidden="hidden",l))(Qle||{});function Jle(){return Ba(VP,null)!==null}function ere(){let l=Ba(VP,null);if(l===null)throw new Error("A is used but it is missing a parent .");return l}function tre(){let l=Ba(MP,null);if(l===null)throw new Error("A is used but it is missing a parent .");return l}let MP=Symbol("NestingContext");function QI(l){return"children"in l?QI(l.children):l.value.filter(({state:a})=>a==="visible").length>0}function dz(l){let a=$([]),t=$(!1);zt(()=>t.value=!0),Fs(()=>t.value=!1);function s(c,p=ii.Hidden){let g=a.value.findIndex(({id:_})=>_===c);g!==-1&&(yo(p,{[ii.Unmount](){a.value.splice(g,1)},[ii.Hidden](){a.value[g].state="hidden"}}),!QI(a)&&t.value&&(l==null||l()))}function d(c){let p=a.value.find(({id:g})=>g===c);return p?p.state!=="visible"&&(p.state="visible"):a.value.push({id:c,state:"visible"}),()=>s(c,ii.Unmount)}return{children:a,register:d,unregister:s}}let cz=il.RenderStrategy,xp=lt({props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(l,{emit:a,attrs:t,slots:s,expose:d}){let c=$(0);function p(){c.value|=po.Opening,a("beforeEnter")}function g(){c.value&=~po.Opening,a("afterEnter")}function _(){c.value|=po.Closing,a("beforeLeave")}function v(){c.value&=~po.Closing,a("afterLeave")}if(!Jle()&&Qne())return()=>Os(Sr,{...l,onBeforeEnter:p,onAfterEnter:g,onBeforeLeave:_,onAfterLeave:v},s);let h=$(null),b=ae(()=>l.unmount?ii.Unmount:ii.Hidden);d({el:h,$el:h});let{show:y,appear:u}=ere(),{register:C,unregister:x}=tre(),z=$(y.value?"visible":"hidden"),P={value:!0},F=Xo(),N={value:!1},M=dz(()=>{!N.value&&z.value!=="hidden"&&(z.value="hidden",x(F),v())});zt(()=>{let ie=C(F);Fs(ie)}),Lo(()=>{if(b.value===ii.Hidden&&F){if(y.value&&z.value!=="visible"){z.value="visible";return}yo(z.value,{hidden:()=>x(F),visible:()=>C(F)})}});let S=Ni(l.enter),L=Ni(l.enterFrom),E=Ni(l.enterTo),f=Ni(l.entered),T=Ni(l.leave),H=Ni(l.leaveFrom),O=Ni(l.leaveTo);zt(()=>{Lo(()=>{if(z.value==="visible"){let ie=Sa(h);if(ie instanceof Comment&&ie.data==="")throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}})});function W(ie){let ve=P.value&&!u.value,de=Sa(h);!de||!(de instanceof HTMLElement)||ve||(N.value=!0,y.value&&p(),y.value||_(),ie(y.value?AF(de,S,L,E,f,re=>{N.value=!1,re===XT.Finished&&g()}):AF(de,T,H,O,f,re=>{N.value=!1,re===XT.Finished&&(QI(M)||(z.value="hidden",x(F),v()))})))}return zt(()=>{ra([y],(ie,ve,de)=>{W(de),P.value=!1},{immediate:!0})}),ka(MP,M),KI(ae(()=>yo(z.value,{visible:po.Open,hidden:po.Closed})|c.value)),()=>{let{appear:ie,show:ve,enter:de,enterFrom:re,enterTo:K,entered:Q,leave:se,leaveFrom:ue,leaveTo:ke,...we}=l,Ce={ref:h},$e={...we,...u.value&&y.value&&Np.isServer?{class:w([t.class,we.class,...S,...L])}:{}};return lo({theirProps:$e,ourProps:Ce,slot:{},slots:s,attrs:t,features:cz,visible:z.value==="visible",name:"TransitionChild"})}}}),are=xp,Sr=lt({inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(l,{emit:a,attrs:t,slots:s}){let d=uu(),c=ae(()=>l.show===null&&d!==null?(d.value&po.Open)===po.Open:l.show);Lo(()=>{if(![!0,!1].includes(c.value))throw new Error('A is used but it is missing a `:show="true | false"` prop.')});let p=$(c.value?"visible":"hidden"),g=dz(()=>{p.value="hidden"}),_=$(!0),v={show:c,appear:ae(()=>l.appear||!_.value)};return zt(()=>{Lo(()=>{_.value=!1,c.value?p.value="visible":QI(g)||(p.value="hidden")})}),ka(MP,g),ka(VP,v),()=>{let h=$P(l,["show","appear","unmount","onBeforeEnter","onBeforeLeave","onAfterEnter","onAfterLeave"]),b={unmount:l.unmount};return lo({ourProps:{...b,as:"template"},theirProps:{},slot:{},slots:{...s,default:()=>[Os(are,{onBeforeEnter:()=>a("beforeEnter"),onAfterEnter:()=>a("afterEnter"),onBeforeLeave:()=>a("beforeLeave"),onAfterLeave:()=>a("afterLeave"),...t,...b,...h},s.default)]},attrs:{},features:cz,visible:p.value==="visible",name:"Transition"})}}});const sre={inheritAttrs:!1},ore=lt({...sre,__name:"Menu",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["relative",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Tle),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),nre={inheritAttrs:!1},lre=lt({...nre,__name:"Button",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["cursor-pointer",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Dle),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),rre={inheritAttrs:!1},ire=lt({...rre,__name:"Items",props:{as:{default:"div"},placement:{default:"bottom-end"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["p-2 shadow-[0px_3px_10px_#00000017] bg-white border-transparent rounded-md dark:bg-darkmode-600 dark:border-transparent",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Sr),{as:"template",enter:"transition-all ease-linear duration-150",enterFrom:"mt-5 invisible opacity-0 translate-y-1",enterTo:"mt-1 visible opacity-100 translate-y-0",entered:"mt-1",leave:"transition-all ease-linear duration-150",leaveFrom:"mt-1 visible opacity-100 translate-y-0",leaveTo:"mt-5 invisible opacity-0 translate-y-1"},{default:i(()=>[n("div",{class:w(["absolute z-30",{"left-0 bottom-[100%]":d.placement=="top-start"},{"left-[50%] translate-x-[-50%] bottom-[100%]":d.placement=="top"},{"right-0 bottom-[100%]":d.placement=="top-end"},{"left-[100%] translate-y-[-50%]":d.placement=="right-start"},{"left-[100%] top-[50%] translate-y-[-50%]":d.placement=="right"},{"left-[100%] bottom-0":d.placement=="right-end"},{"top-[100%] right-0":d.placement=="bottom-end"},{"top-[100%] left-[50%] translate-x-[-50%]":d.placement=="bottom"},{"top-[100%] left-0":d.placement=="bottom-start"},{"right-[100%] translate-y-[-50%]":d.placement=="left-start"},{"right-[100%] top-[50%] translate-y-[-50%]":d.placement=="left"},{"right-[100%] bottom-0":d.placement=="left-end"}])},[o(e(Ple),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3})],2)]),_:3}))}}),dre={inheritAttrs:!1},cre=lt({...dre,__name:"Item",props:{as:{default:"a"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["cursor-pointer flex items-center p-2 transition duration-300 ease-in-out rounded-md hover:bg-slate-200/60 dark:bg-darkmode-600 dark:hover:bg-darkmode-400",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Ule),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),ure={inheritAttrs:!1},pre=lt({...ure,__name:"Divider",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["h-px my-2 -mx-2 bg-slate-200/60 dark:bg-darkmode-400",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))}}),_re={inheritAttrs:!1},mre=lt({..._re,__name:"Header",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["p-2 font-medium",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))}}),vre={inheritAttrs:!1},hre=lt({...vre,__name:"Footer",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["flex p-1",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))}}),vo=Object.assign({},ore,{Button:lre,Items:ire,Item:cre,Divider:pre,Header:mre,Footer:hre}),fre={inheritAttrs:!1},gre=lt({...fre,__name:"Popover",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["relative",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(rz),{as:"template"},{default:i(({close:p})=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default",{close:p})]),_:2},1040,["class"]))]),_:3}))}}),yre={inheritAttrs:!1},bre=lt({...yre,__name:"Button",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["cursor-pointer",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Nle),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),wre={inheritAttrs:!1},kre=lt({...wre,__name:"Panel",props:{as:{default:"div"},placement:{default:"bottom-end"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["p-2 shadow-[0px_3px_20px_#0000000b] bg-white border-transparent rounded-md dark:bg-darkmode-600 dark:border-transparent",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Sr),{as:"template",enter:"transition-all ease-linear duration-150",enterFrom:"mt-5 invisible opacity-0 translate-y-1",enterTo:"mt-1 visible opacity-100 translate-y-0",entered:"mt-1",leave:"transition-all ease-linear duration-150",leaveFrom:"mt-1 visible opacity-100 translate-y-0",leaveTo:"mt-5 invisible opacity-0 translate-y-1"},{default:i(()=>[n("div",{class:w(["absolute z-30",{"left-0 bottom-[100%]":d.placement=="top-start"},{"left-[50%] translate-x-[-50%] bottom-[100%]":d.placement=="top"},{"right-0 bottom-[100%]":d.placement=="top-end"},{"left-[100%] translate-y-[-50%]":d.placement=="right-start"},{"left-[100%] top-[50%] translate-y-[-50%]":d.placement=="right"},{"left-[100%] bottom-0":d.placement=="right-end"},{"top-[100%] right-0":d.placement=="bottom-end"},{"top-[100%] left-[50%] translate-x-[-50%]":d.placement=="bottom"},{"top-[100%] left-0":d.placement=="bottom-start"},{"right-[100%] translate-y-[-50%]":d.placement=="left-start"},{"right-[100%] top-[50%] translate-y-[-50%]":d.placement=="left"},{"right-[100%] bottom-0":d.placement=="left-end"}])},[o(e(jle),ds({as:a,class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"])],2)]),_:3}))}});Object.assign({},gre,{Button:bre,Panel:kre});const xre=lt({__name:"Provider",props:{selected:{type:Boolean,default:!1}},setup(l){const a=l;return ka("tab",{selected:ae(()=>a.selected)}),(t,s)=>Ya(t.$slots,"default")}}),$re=lt({__name:"Tab",props:{fullWidth:{type:Boolean,default:!0}},setup(l){const{fullWidth:a}=l,t=Ba("list");return(s,d)=>(k(),Be(e(Wle),{as:"template"},{default:i(({selected:c})=>[n("li",{class:w(["focus-visible:outline-none",{"flex-1":a},{"-mb-px":e(t)&&e(t).variant=="tabs"}])},[o(xre,{selected:c},{default:i(()=>[Ya(s.$slots,"default",{selected:c})]),_:2},1032,["selected"])],2)]),_:3}))}}),Cre={inheritAttrs:!1},Sre=lt({...Cre,__name:"Button",props:{as:{default:"a"}},setup(l){const{as:a}=l,t=is(),s=Ba("tab"),d=Ba("list"),c=ae(()=>ss(["cursor-pointer block appearance-none px-5 py-2.5 border border-transparent text-slate-700 dark:text-slate-400",(s==null?void 0:s.selected.value)&&"text-slate-800 dark:text-white",(d==null?void 0:d.variant)=="tabs"&&"block border-transparent rounded-t-md dark:border-transparent",(d==null?void 0:d.variant)=="tabs"&&(s==null?void 0:s.selected.value)&&"bg-white border-slate-200 border-b-transparent font-medium dark:bg-transparent dark:border-t-darkmode-400 dark:border-b-darkmode-600 dark:border-x-darkmode-400",(d==null?void 0:d.variant)=="tabs"&&!(s!=null&&s.selected.value)&&"hover:bg-slate-100 dark:hover:bg-darkmode-400 dark:hover:border-transparent",(d==null?void 0:d.variant)=="pills"&&"rounded-md border-0",(d==null?void 0:d.variant)=="pills"&&(s==null?void 0:s.selected.value)&&"bg-primary text-white font-medium",(d==null?void 0:d.variant)=="boxed-tabs"&&"shadow-[0px_3px_20px_#0000000b] rounded-md",(d==null?void 0:d.variant)=="boxed-tabs"&&(s==null?void 0:s.selected.value)&&"bg-primary text-white font-medium",(d==null?void 0:d.variant)=="link-tabs"&&"border-b-2 border-transparent dark:border-transparent",(d==null?void 0:d.variant)=="link-tabs"&&(s==null?void 0:s.selected.value)&&"border-b-primary font-medium dark:border-b-primary",typeof t.class=="string"&&t.class]));return(p,g)=>(k(),Be(Js(a),ds({class:c.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(p.$slots,"default")]),_:3},16,["class"]))}}),Ere=lt({__name:"Group",setup(l){return(a,t)=>(k(),Be(e(Ble),{as:"div"},{default:i(()=>[Ya(a.$slots,"default")]),_:3}))}}),Are={inheritAttrs:!1},Lre=lt({...Are,__name:"List",props:{variant:{default:"tabs"}},setup(l){const{variant:a}=l,t=is(),s=ae(()=>ss([a=="tabs"&&"border-b border-slate-200 dark:border-darkmode-400","w-full flex",typeof t.class=="string"&&t.class]));return ka("list",{variant:a}),(d,c)=>(k(),Be(e(Gle),ds({as:"ul",class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))}}),Ire=lt({__name:"Panels",setup(l){return(a,t)=>(k(),Be(e(Zle),{as:"div"},{default:i(()=>[Ya(a.$slots,"default")]),_:3}))}}),Vre=lt({__name:"Panel",setup(l){return(a,t)=>(k(),Be(e(Kle),{as:"template"},{default:i(({selected:s})=>[o(e(Sr),{appear:"",as:"div",show:s,enter:"transition-opacity duration-300",enterFrom:"opacity-0",enterTo:"opacity-100",leave:"transition-opacity duration-300",leaveFrom:"opacity-100",leaveTo:"opacity-0"},{default:i(()=>[Ya(a.$slots,"default",{selected:s})]),_:2},1032,["show"])]),_:3}))}});Object.assign({},$re,{Button:Sre,Group:Ere,List:Lre,Panels:Ire,Panel:Vre});const Mre={inheritAttrs:!1},Tre=lt({...Mre,__name:"Dialog",props:{size:{default:"md"},open:{type:Boolean,default:!1},staticBackdrop:{type:Boolean}},emits:["close","after-leave"],setup(l,{emit:a}){const t=l,{as:s,onClose:d,staticBackdrop:c,size:p}=t,g=ae(()=>t.open),_=is(),v=ae(()=>ss(["relative z-[60]",typeof _.class=="string"&&_.class])),h=$(!1),b=a,y=()=>{b("after-leave")},u=C=>{c?(h.value=!0,setTimeout(()=>{h.value=!1},300)):(d&&d(C),b("close",C))};return ka("dialog",{open:g.value,zoom:h,size:p}),(C,x)=>(k(),Be(e(Sr),{appear:"",as:"template",show:g.value,onAfterLeave:y},{default:i(()=>[o(e(Xq),ds({as:e(s),onClose:x[0]||(x[0]=z=>{u(z)}),class:v.value},e(ls).omit(e(_),"class","onClose")),{default:i(()=>[Ya(C.$slots,"default")]),_:3},16,["as","class"])]),_:3},8,["show"]))}}),Dre={inheritAttrs:!1},Pre=lt({...Dre,__name:"Description",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["p-5",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(ez),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),Ure={inheritAttrs:!1},Rre=lt({...Ure,__name:"Footer",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["px-5 py-3 text-right border-t border-slate-200/60 dark:border-darkmode-400",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))}}),Ore={inheritAttrs:!1},Fre=lt({...Ore,__name:"Panel",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=Ba("dialog"),s=is(),d=ae(()=>ss(["w-[90%] mx-auto bg-white relative rounded-md shadow-md transition-transform dark:bg-darkmode-600",(t==null?void 0:t.size)=="md"&&"sm:w-[460px]",(t==null?void 0:t.size)=="sm"&&"sm:w-[300px]",(t==null?void 0:t.size)=="lg"&&"sm:w-[600px]",(t==null?void 0:t.size)=="xl"&&"sm:w-[600px] lg:w-[900px] xl:w-[1100px]",(t==null?void 0:t.zoom.value)&&"scale-105",typeof s.class=="string"&&s.class]));return(c,p)=>(k(),I(Pe,null,[o(e(xp),{as:"div",enter:"ease-in-out duration-500",enterFrom:"opacity-0",enterTo:"opacity-100",leave:"ease-in-out duration-[400ms]",leaveFrom:"opacity-100",leaveTo:"opacity-0",class:"fixed inset-0 bg-black/60","aria-hidden":"true"}),o(e(xp),{as:"div",enter:"ease-in-out duration-500",enterFrom:"opacity-0 -mt-16",enterTo:"opacity-100 mt-16",entered:"opacity-100 mt-16",leave:"ease-in-out duration-[400ms]",leaveFrom:"opacity-100 mt-16",leaveTo:"opacity-0 -mt-16",class:"fixed inset-0"},{default:i(()=>[o(e(Qq),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:d.value},e(ls).omit(e(s),"class")),{default:i(()=>[Ya(c.$slots,"default")]),_:3},16,["class"]))]),_:3})]),_:3})],64))}}),Nre={inheritAttrs:!1},jre=lt({...Nre,__name:"Title",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["flex items-center px-5 py-3 border-b border-slate-200/60 dark:border-darkmode-400",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Jq),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),Kt=Object.assign({},Tre,{Description:Pre,Footer:Rre,Panel:Fre,Title:jre}),Hre=lt({__name:"Provider",props:{open:{type:Boolean,default:!1},close:{type:Function,default:()=>{}},index:{default:0}},setup(l){const a=l;return ka("disclosure",ae(()=>({open:a.open,close:a.close,index:a.index}))),(t,s)=>Ya(t.$slots,"default")}}),qre={inheritAttrs:!1},zre=lt({...qre,__name:"Disclosure",props:{index:{default:0}},setup(l){const{index:a}=l,t=Ba("group"),s=is(),d=ae(()=>ss(["py-4 first:-mt-4 last:-mb-4","[&:not(:last-child)]:border-b [&:not(:last-child)]:border-slate-200/60 [&:not(:last-child)]:dark:border-darkmode-400",(t==null?void 0:t.value.variant)=="boxed"&&"p-4 first:mt-0 last:mb-0 border border-slate-200/60 mt-3 dark:border-darkmode-400",typeof s.class=="string"&&s.class]));return(c,p)=>{var g;return k(),Be(e(Cle),ds({as:"div",defaultOpen:((g=e(t))==null?void 0:g.selectedIndex)===a,class:d.value},e(ls).omit(e(s),"class")),{default:i(({open:_,close:v})=>[o(Hre,{open:_,close:v,index:a},{default:i(()=>[Ya(c.$slots,"default",{open:_,close:v})]),_:2},1032,["open","close"])]),_:3},16,["defaultOpen","class"])}}}),Bre=lt({__name:"Group",props:{as:{default:"div"},selectedIndex:{default:0},variant:{default:"default"}},setup(l){const a=SH(),{as:t,selectedIndex:s,variant:d}=l,c=$(s),p=g=>{c.value=g};return ka("group",ae(()=>({selectedIndex:c.value,setSelectedIndex:p,variant:d}))),(g,_)=>(k(),Be(Js(t),null,{default:i(()=>[(k(!0),I(Pe,null,ht(e(a).default&&e(a).default(),(v,h)=>(k(),Be(Js(v),{index:h},null,8,["index"]))),256))]),_:1}))}}),Gre={inheritAttrs:!1},Wre=lt({...Gre,__name:"Button",props:{as:{default:"button"}},setup(l){const{as:a}=l,t=Ba("disclosure"),s=Ba("group");s&&ra(s,()=>{s.value.selectedIndex!==(t==null?void 0:t.value.index)&&(t==null||t.value.close())});const d=is(),c=ae(()=>ss(["outline-none py-4 -my-4 font-medium w-full text-left dark:text-slate-400",(t==null?void 0:t.value.open)&&"text-primary dark:text-slate-300",typeof d.class=="string"&&d.class]));return(p,g)=>(k(),Be(e(Sle),{as:"template",onClick:g[0]||(g[0]=()=>{var _;e(t)&&((_=e(s))==null||_.setSelectedIndex(e(t).index))})},{default:i(()=>[(k(),Be(Js(a),ds({class:c.value},e(ls).omit(e(d),"class")),{default:i(()=>[Ya(p.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),Zre={inheritAttrs:!1},Kre=lt({...Zre,__name:"Panel",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["mt-3 text-slate-700 leading-relaxed dark:text-slate-400",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Sr),{as:"template",enter:"overflow-hidden transition-all linear duration-[400ms]",enterFrom:"mt-0 max-h-0 invisible opacity-0",enterTo:"mt-3 max-h-[2000px] visible opacity-100",entered:"mt-3",leave:"overflow-hidden transition-all linear duration-500",leaveFrom:"mt-3 max-h-[2000px] visible opacity-100",leaveTo:"mt-0 max-h-0 invisible opacity-0"},{default:i(()=>[o(e(Ele),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3})]),_:3}))}});Object.assign({},zre,{Group:Bre,Button:Wre,Panel:Kre});const Yre={inheritAttrs:!1},Xre=lt({...Yre,__name:"Slideover",props:{size:{default:"md"},open:{type:Boolean,default:!1},staticBackdrop:{type:Boolean}},emits:["close"],setup(l,{emit:a}){const t=l,{as:s,onClose:d,staticBackdrop:c,size:p}=t,g=ae(()=>t.open),_=is(),v=ae(()=>ss(["relative z-[60]",typeof _.class=="string"&&_.class])),h=$(!1),b=a,y=u=>{c?(h.value=!0,setTimeout(()=>{h.value=!1},300)):(d&&d(u),b("close",u))};return ka("slideover",{open:g.value,zoom:h,size:p}),(u,C)=>(k(),Be(e(Sr),{appear:"",as:"template",show:g.value},{default:i(()=>[o(e(Xq),ds({as:e(s),onClose:C[0]||(C[0]=x=>{y(x)}),class:v.value},e(ls).omit(e(_),"class","onClose")),{default:i(()=>[Ya(u.$slots,"default")]),_:3},16,["as","class"])]),_:3},8,["show"]))}}),Qre={inheritAttrs:!1},Jre=lt({...Qre,__name:"Description",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["p-5 overflow-y-auto flex-1",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(ez),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),eie={inheritAttrs:!1},tie=lt({...eie,__name:"Footer",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["px-5 py-3 text-right border-t border-slate-200/60 dark:border-darkmode-400",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))}}),aie={inheritAttrs:!1},sie=lt({...aie,__name:"Panel",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=Ba("slideover"),s=is(),d=ae(()=>ss(["w-[90%] ml-auto h-screen flex flex-col bg-white relative shadow-md transition-transform dark:bg-darkmode-600",(t==null?void 0:t.size)=="md"&&"sm:w-[460px]",(t==null?void 0:t.size)=="sm"&&"sm:w-[300px]",(t==null?void 0:t.size)=="lg"&&"sm:w-[600px]",(t==null?void 0:t.size)=="xl"&&"sm:w-[600px] lg:w-[900px]",(t==null?void 0:t.zoom.value)&&"scale-105",typeof s.class=="string"&&s.class]));return(c,p)=>(k(),I(Pe,null,[o(e(xp),{as:"div",enter:"ease-in-out duration-500",enterFrom:"opacity-0",enterTo:"opacity-100",leave:"ease-in-out duration-[400ms]",leaveFrom:"opacity-100",leaveTo:"opacity-0",class:"fixed inset-0 bg-black/60","aria-hidden":"true"}),o(e(xp),{as:"div",enter:"ease-in-out duration-500",enterFrom:"opacity-0 -mr-[100%]",enterTo:"opacity-100 mr-0",leave:"ease-in-out duration-[400ms]",leaveFrom:"opacity-100 mr-0",leaveTo:"opacity-0 -mr-[100%]",class:"fixed inset-y-0 right-0"},{default:i(()=>[o(e(Qq),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:d.value},e(ls).omit(e(s),"class")),{default:i(()=>[Ya(c.$slots,"default")]),_:3},16,["class"]))]),_:3})]),_:3})],64))}}),oie={inheritAttrs:!1},nie=lt({...oie,__name:"Title",props:{as:{default:"div"}},setup(l){const{as:a}=l,t=is(),s=ae(()=>ss(["flex items-center px-5 py-3 border-b border-slate-200/60 dark:border-darkmode-400",typeof t.class=="string"&&t.class]));return(d,c)=>(k(),Be(e(Jq),{as:"template"},{default:i(()=>[(k(),Be(Js(a),ds({class:s.value},e(ls).omit(e(t),"class")),{default:i(()=>[Ya(d.$slots,"default")]),_:3},16,["class"]))]),_:3}))}}),ri=Object.assign({},Xre,{Description:Jre,Footer:tie,Panel:sie,Title:nie}),Qa=wi("userContext",{state:()=>({isLoaded:!1,isAuthenticated:!1,userContext:{id:"",ulid:"",name:"",email:"",email_verified:!1,profile:{first_name:"",last_name:"",address:"",city:"",postal_code:"",country:"",status:"",tax_id:0,ic_num:0,img_path:"",remarks:""},roles:[],companies:[],settings:{theme:"",date_format:"",time_format:""},two_factor:!1,personal_access_tokens:0}}),getters:{getIsLoaded:l=>l.isLoaded,getIsAuthenticated:l=>l.isAuthenticated,getUserContext:l=>l.userContext},actions:{setUserContext(l){this.userContext=l,this.isLoaded=!0,this.isAuthenticated=!0}}}),di="selectedUserLocation",LF=()=>({company:{id:"",ulid:"",code:"",name:""},branch:{id:"",ulid:"",code:"",name:""}}),uz=l=>JSON.stringify(l),lie=l=>JSON.parse(l),pz=()=>{localStorage.removeItem(di),sessionStorage.removeItem(di)},rie=()=>{const l=localStorage.getItem(di)??sessionStorage.getItem(di);if(!l)return null;try{const a=lie(l);return localStorage.setItem(di,uz(a)),sessionStorage.removeItem(di),a}catch{return pz(),null}},IF=rie(),sa=wi("selectedUserLocation",{state:()=>({isUserLocationSelected:IF!==null,selectedUserLocation:IF??LF()}),getters:{getSelectedUserLocation:l=>l.selectedUserLocation,getSelectedUserCompany:l=>l.selectedUserLocation.company,getSelectedUserBranch:l=>l.selectedUserLocation.branch},actions:{clearSelectedUserLocation(){this.selectedUserLocation=LF(),this.isUserLocationSelected=!1,pz()},setSelectedUserLocation(l,a,t,s,d,c,p,g){this.clearSelectedUserLocation(),this.selectedUserLocation.company.id=l,this.selectedUserLocation.company.ulid=a,this.selectedUserLocation.company.code=t,this.selectedUserLocation.company.name=s,d&&(this.selectedUserLocation.branch.id=d),c&&(this.selectedUserLocation.branch.ulid=c),p&&(this.selectedUserLocation.branch.code=p),g&&(this.selectedUserLocation.branch.name=g),localStorage.setItem(di,uz(this.selectedUserLocation)),sessionStorage.removeItem(di),this.isUserLocationSelected=!0,window.location.reload()}}});/*! + * shared v9.11.0 + * (c) 2024 kazuya kawaguchi + * Released under the MIT License. + */const _I=typeof window<"u",xi=(l,a=!1)=>a?Symbol.for(l):Symbol(l),iie=(l,a,t)=>die({l,k:a,s:t}),die=l=>JSON.stringify(l).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Uo=l=>typeof l=="number"&&isFinite(l),cie=l=>mz(l)==="[object Date]",gi=l=>mz(l)==="[object RegExp]",JI=l=>fs(l)&&Object.keys(l).length===0,Qo=Object.assign;let VF;const hr=()=>VF||(VF=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function MF(l){return l.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const uie=Object.prototype.hasOwnProperty;function mI(l,a){return uie.call(l,a)}const _o=Array.isArray,no=l=>typeof l=="function",Na=l=>typeof l=="string",Is=l=>typeof l=="boolean",qs=l=>l!==null&&typeof l=="object",pie=l=>qs(l)&&no(l.then)&&no(l.catch),_z=Object.prototype.toString,mz=l=>_z.call(l),fs=l=>{if(!qs(l))return!1;const a=Object.getPrototypeOf(l);return a===null||a.constructor===Object},_ie=l=>l==null?"":_o(l)||fs(l)&&l.toString===_z?JSON.stringify(l,null,2):String(l);function mie(l,a=""){return l.reduce((t,s,d)=>d===0?t+s:t+a+s,"")}function TP(l){let a=l;return()=>++a}function vie(l,a){typeof console<"u"&&(console.warn("[intlify] "+l),a&&console.warn(a.stack))}const fm=l=>!qs(l)||_o(l);function G7(l,a){if(fm(l)||fm(a))throw new Error("Invalid value");const t=[{src:l,des:a}];for(;t.length;){const{src:s,des:d}=t.pop();Object.keys(s).forEach(c=>{fm(s[c])||fm(d[c])?d[c]=s[c]:t.push({src:s[c],des:d[c]})})}}/*! + * message-compiler v9.11.0 + * (c) 2024 kazuya kawaguchi + * Released under the MIT License. + */function hie(l,a,t){return{line:l,column:a,offset:t}}function QT(l,a,t){const s={start:l,end:a};return t!=null&&(s.source=t),s}const fie=/\{([0-9a-zA-Z]+)\}/g;function gie(l,...a){return a.length===1&&yie(a[0])&&(a=a[0]),(!a||!a.hasOwnProperty)&&(a={}),l.replace(fie,(t,s)=>a.hasOwnProperty(s)?a[s]:"")}const vz=Object.assign,TF=l=>typeof l=="string",yie=l=>l!==null&&typeof l=="object";function hz(l,a=""){return l.reduce((t,s,d)=>d===0?t+s:t+a+s,"")}const ps={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},bie={[ps.EXPECTED_TOKEN]:"Expected token: '{0}'",[ps.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[ps.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[ps.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[ps.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[ps.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[ps.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[ps.EMPTY_PLACEHOLDER]:"Empty placeholder",[ps.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[ps.INVALID_LINKED_FORMAT]:"Invalid linked format",[ps.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[ps.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[ps.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[ps.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[ps.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[ps.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function pu(l,a,t={}){const{domain:s,messages:d,args:c}=t,p=gie((d||bie)[l]||"",...c||[]),g=new SyntaxError(String(p));return g.code=l,a&&(g.location=a),g.domain=s,g}function wie(l){throw l}const ur=" ",kie="\r",dn=` +`,xie="\u2028",$ie="\u2029";function Cie(l){const a=l;let t=0,s=1,d=1,c=0;const p=E=>a[E]===kie&&a[E+1]===dn,g=E=>a[E]===dn,_=E=>a[E]===$ie,v=E=>a[E]===xie,h=E=>p(E)||g(E)||_(E)||v(E),b=()=>t,y=()=>s,u=()=>d,C=()=>c,x=E=>p(E)||_(E)||v(E)?dn:a[E],z=()=>x(t),P=()=>x(t+c);function F(){return c=0,h(t)&&(s++,d=0),p(t)&&t++,t++,d++,a[t]}function N(){return p(t+c)&&c++,c++,a[t+c]}function M(){t=0,s=1,d=1,c=0}function S(E=0){c=E}function L(){const E=t+c;for(;E!==t;)F();c=0}return{index:b,line:y,column:u,peekOffset:C,charAt:x,currentChar:z,currentPeek:P,next:F,peek:N,reset:M,resetPeek:S,skipToPeek:L}}const Zr=void 0,Sie=".",DF="'",Eie="tokenizer";function Aie(l,a={}){const t=a.location!==!1,s=Cie(l),d=()=>s.index(),c=()=>hie(s.line(),s.column(),s.index()),p=c(),g=d(),_={currentType:14,offset:g,startLoc:p,endLoc:p,lastType:14,lastOffset:g,lastStartLoc:p,lastEndLoc:p,braceNest:0,inLinked:!1,text:""},v=()=>_,{onError:h}=a;function b(Y,U,j,...oe){const Z=v();if(U.column+=j,U.offset+=j,h){const X=t?QT(Z.startLoc,U):null,le=pu(Y,X,{domain:Eie,args:oe});h(le)}}function y(Y,U,j){Y.endLoc=c(),Y.currentType=U;const oe={type:U};return t&&(oe.loc=QT(Y.startLoc,Y.endLoc)),j!=null&&(oe.value=j),oe}const u=Y=>y(Y,14);function C(Y,U){return Y.currentChar()===U?(Y.next(),U):(b(ps.EXPECTED_TOKEN,c(),0,U),"")}function x(Y){let U="";for(;Y.currentPeek()===ur||Y.currentPeek()===dn;)U+=Y.currentPeek(),Y.peek();return U}function z(Y){const U=x(Y);return Y.skipToPeek(),U}function P(Y){if(Y===Zr)return!1;const U=Y.charCodeAt(0);return U>=97&&U<=122||U>=65&&U<=90||U===95}function F(Y){if(Y===Zr)return!1;const U=Y.charCodeAt(0);return U>=48&&U<=57}function N(Y,U){const{currentType:j}=U;if(j!==2)return!1;x(Y);const oe=P(Y.currentPeek());return Y.resetPeek(),oe}function M(Y,U){const{currentType:j}=U;if(j!==2)return!1;x(Y);const oe=Y.currentPeek()==="-"?Y.peek():Y.currentPeek(),Z=F(oe);return Y.resetPeek(),Z}function S(Y,U){const{currentType:j}=U;if(j!==2)return!1;x(Y);const oe=Y.currentPeek()===DF;return Y.resetPeek(),oe}function L(Y,U){const{currentType:j}=U;if(j!==8)return!1;x(Y);const oe=Y.currentPeek()===".";return Y.resetPeek(),oe}function E(Y,U){const{currentType:j}=U;if(j!==9)return!1;x(Y);const oe=P(Y.currentPeek());return Y.resetPeek(),oe}function f(Y,U){const{currentType:j}=U;if(!(j===8||j===12))return!1;x(Y);const oe=Y.currentPeek()===":";return Y.resetPeek(),oe}function T(Y,U){const{currentType:j}=U;if(j!==10)return!1;const oe=()=>{const X=Y.currentPeek();return X==="{"?P(Y.peek()):X==="@"||X==="%"||X==="|"||X===":"||X==="."||X===ur||!X?!1:X===dn?(Y.peek(),oe()):P(X)},Z=oe();return Y.resetPeek(),Z}function H(Y){x(Y);const U=Y.currentPeek()==="|";return Y.resetPeek(),U}function O(Y){const U=x(Y),j=Y.currentPeek()==="%"&&Y.peek()==="{";return Y.resetPeek(),{isModulo:j,hasSpace:U.length>0}}function W(Y,U=!0){const j=(Z=!1,X="",le=!1)=>{const fe=Y.currentPeek();return fe==="{"?X==="%"?!1:Z:fe==="@"||!fe?X==="%"?!0:Z:fe==="%"?(Y.peek(),j(Z,"%",!0)):fe==="|"?X==="%"||le?!0:!(X===ur||X===dn):fe===ur?(Y.peek(),j(!0,ur,le)):fe===dn?(Y.peek(),j(!0,dn,le)):!0},oe=j();return U&&Y.resetPeek(),oe}function ie(Y,U){const j=Y.currentChar();return j===Zr?Zr:U(j)?(Y.next(),j):null}function ve(Y){return ie(Y,j=>{const oe=j.charCodeAt(0);return oe>=97&&oe<=122||oe>=65&&oe<=90||oe>=48&&oe<=57||oe===95||oe===36})}function de(Y){return ie(Y,j=>{const oe=j.charCodeAt(0);return oe>=48&&oe<=57})}function re(Y){return ie(Y,j=>{const oe=j.charCodeAt(0);return oe>=48&&oe<=57||oe>=65&&oe<=70||oe>=97&&oe<=102})}function K(Y){let U="",j="";for(;U=de(Y);)j+=U;return j}function Q(Y){z(Y);const U=Y.currentChar();return U!=="%"&&b(ps.EXPECTED_TOKEN,c(),0,U),Y.next(),"%"}function se(Y){let U="";for(;;){const j=Y.currentChar();if(j==="{"||j==="}"||j==="@"||j==="|"||!j)break;if(j==="%")if(W(Y))U+=j,Y.next();else break;else if(j===ur||j===dn)if(W(Y))U+=j,Y.next();else{if(H(Y))break;U+=j,Y.next()}else U+=j,Y.next()}return U}function ue(Y){z(Y);let U="",j="";for(;U=ve(Y);)j+=U;return Y.currentChar()===Zr&&b(ps.UNTERMINATED_CLOSING_BRACE,c(),0),j}function ke(Y){z(Y);let U="";return Y.currentChar()==="-"?(Y.next(),U+=`-${K(Y)}`):U+=K(Y),Y.currentChar()===Zr&&b(ps.UNTERMINATED_CLOSING_BRACE,c(),0),U}function we(Y){z(Y),C(Y,"'");let U="",j="";const oe=X=>X!==DF&&X!==dn;for(;U=ie(Y,oe);)U==="\\"?j+=Ce(Y):j+=U;const Z=Y.currentChar();return Z===dn||Z===Zr?(b(ps.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,c(),0),Z===dn&&(Y.next(),C(Y,"'")),j):(C(Y,"'"),j)}function Ce(Y){const U=Y.currentChar();switch(U){case"\\":case"'":return Y.next(),`\\${U}`;case"u":return $e(Y,U,4);case"U":return $e(Y,U,6);default:return b(ps.UNKNOWN_ESCAPE_SEQUENCE,c(),0,U),""}}function $e(Y,U,j){C(Y,U);let oe="";for(let Z=0;ZZ!=="{"&&Z!=="}"&&Z!==ur&&Z!==dn;for(;U=ie(Y,oe);)j+=U;return j}function je(Y){let U="",j="";for(;U=ve(Y);)j+=U;return j}function me(Y){const U=(j=!1,oe)=>{const Z=Y.currentChar();return Z==="{"||Z==="%"||Z==="@"||Z==="|"||Z==="("||Z===")"||!Z||Z===ur?oe:Z===dn||Z===Sie?(oe+=Z,Y.next(),U(j,oe)):(oe+=Z,Y.next(),U(!0,oe))};return U(!1,"")}function ce(Y){z(Y);const U=C(Y,"|");return z(Y),U}function G(Y,U){let j=null;switch(Y.currentChar()){case"{":return U.braceNest>=1&&b(ps.NOT_ALLOW_NEST_PLACEHOLDER,c(),0),Y.next(),j=y(U,2,"{"),z(Y),U.braceNest++,j;case"}":return U.braceNest>0&&U.currentType===2&&b(ps.EMPTY_PLACEHOLDER,c(),0),Y.next(),j=y(U,3,"}"),U.braceNest--,U.braceNest>0&&z(Y),U.inLinked&&U.braceNest===0&&(U.inLinked=!1),j;case"@":return U.braceNest>0&&b(ps.UNTERMINATED_CLOSING_BRACE,c(),0),j=q(Y,U)||u(U),U.braceNest=0,j;default:{let Z=!0,X=!0,le=!0;if(H(Y))return U.braceNest>0&&b(ps.UNTERMINATED_CLOSING_BRACE,c(),0),j=y(U,1,ce(Y)),U.braceNest=0,U.inLinked=!1,j;if(U.braceNest>0&&(U.currentType===5||U.currentType===6||U.currentType===7))return b(ps.UNTERMINATED_CLOSING_BRACE,c(),0),U.braceNest=0,te(Y,U);if(Z=N(Y,U))return j=y(U,5,ue(Y)),z(Y),j;if(X=M(Y,U))return j=y(U,6,ke(Y)),z(Y),j;if(le=S(Y,U))return j=y(U,7,we(Y)),z(Y),j;if(!Z&&!X&&!le)return j=y(U,13,he(Y)),b(ps.INVALID_TOKEN_IN_PLACEHOLDER,c(),0,j.value),z(Y),j;break}}return j}function q(Y,U){const{currentType:j}=U;let oe=null;const Z=Y.currentChar();switch((j===8||j===9||j===12||j===10)&&(Z===dn||Z===ur)&&b(ps.INVALID_LINKED_FORMAT,c(),0),Z){case"@":return Y.next(),oe=y(U,8,"@"),U.inLinked=!0,oe;case".":return z(Y),Y.next(),y(U,9,".");case":":return z(Y),Y.next(),y(U,10,":");default:return H(Y)?(oe=y(U,1,ce(Y)),U.braceNest=0,U.inLinked=!1,oe):L(Y,U)||f(Y,U)?(z(Y),q(Y,U)):E(Y,U)?(z(Y),y(U,12,je(Y))):T(Y,U)?(z(Y),Z==="{"?G(Y,U)||oe:y(U,11,me(Y))):(j===8&&b(ps.INVALID_LINKED_FORMAT,c(),0),U.braceNest=0,U.inLinked=!1,te(Y,U))}}function te(Y,U){let j={type:14};if(U.braceNest>0)return G(Y,U)||u(U);if(U.inLinked)return q(Y,U)||u(U);switch(Y.currentChar()){case"{":return G(Y,U)||u(U);case"}":return b(ps.UNBALANCED_CLOSING_BRACE,c(),0),Y.next(),y(U,3,"}");case"@":return q(Y,U)||u(U);default:{if(H(Y))return j=y(U,1,ce(Y)),U.braceNest=0,U.inLinked=!1,j;const{isModulo:Z,hasSpace:X}=O(Y);if(Z)return X?y(U,0,se(Y)):y(U,4,Q(Y));if(W(Y))return y(U,0,se(Y));break}}return j}function _e(){const{currentType:Y,offset:U,startLoc:j,endLoc:oe}=_;return _.lastType=Y,_.lastOffset=U,_.lastStartLoc=j,_.lastEndLoc=oe,_.offset=d(),_.startLoc=c(),s.currentChar()===Zr?y(_,14):te(s,_)}return{nextToken:_e,currentOffset:d,currentPosition:c,context:v}}const Lie="parser",Iie=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function Vie(l,a,t){switch(l){case"\\\\":return"\\";case"\\'":return"'";default:{const s=parseInt(a||t,16);return s<=55295||s>=57344?String.fromCodePoint(s):"�"}}}function Mie(l={}){const a=l.location!==!1,{onError:t}=l;function s(P,F,N,M,...S){const L=P.currentPosition();if(L.offset+=M,L.column+=M,t){const E=a?QT(N,L):null,f=pu(F,E,{domain:Lie,args:S});t(f)}}function d(P,F,N){const M={type:P};return a&&(M.start=F,M.end=F,M.loc={start:N,end:N}),M}function c(P,F,N,M){M&&(P.type=M),a&&(P.end=F,P.loc&&(P.loc.end=N))}function p(P,F){const N=P.context(),M=d(3,N.offset,N.startLoc);return M.value=F,c(M,P.currentOffset(),P.currentPosition()),M}function g(P,F){const N=P.context(),{lastOffset:M,lastStartLoc:S}=N,L=d(5,M,S);return L.index=parseInt(F,10),P.nextToken(),c(L,P.currentOffset(),P.currentPosition()),L}function _(P,F){const N=P.context(),{lastOffset:M,lastStartLoc:S}=N,L=d(4,M,S);return L.key=F,P.nextToken(),c(L,P.currentOffset(),P.currentPosition()),L}function v(P,F){const N=P.context(),{lastOffset:M,lastStartLoc:S}=N,L=d(9,M,S);return L.value=F.replace(Iie,Vie),P.nextToken(),c(L,P.currentOffset(),P.currentPosition()),L}function h(P){const F=P.nextToken(),N=P.context(),{lastOffset:M,lastStartLoc:S}=N,L=d(8,M,S);return F.type!==12?(s(P,ps.UNEXPECTED_EMPTY_LINKED_MODIFIER,N.lastStartLoc,0),L.value="",c(L,M,S),{nextConsumeToken:F,node:L}):(F.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,N.lastStartLoc,0,Pl(F)),L.value=F.value||"",c(L,P.currentOffset(),P.currentPosition()),{node:L})}function b(P,F){const N=P.context(),M=d(7,N.offset,N.startLoc);return M.value=F,c(M,P.currentOffset(),P.currentPosition()),M}function y(P){const F=P.context(),N=d(6,F.offset,F.startLoc);let M=P.nextToken();if(M.type===9){const S=h(P);N.modifier=S.node,M=S.nextConsumeToken||P.nextToken()}switch(M.type!==10&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(M)),M=P.nextToken(),M.type===2&&(M=P.nextToken()),M.type){case 11:M.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(M)),N.key=b(P,M.value||"");break;case 5:M.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(M)),N.key=_(P,M.value||"");break;case 6:M.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(M)),N.key=g(P,M.value||"");break;case 7:M.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(M)),N.key=v(P,M.value||"");break;default:{s(P,ps.UNEXPECTED_EMPTY_LINKED_KEY,F.lastStartLoc,0);const S=P.context(),L=d(7,S.offset,S.startLoc);return L.value="",c(L,S.offset,S.startLoc),N.key=L,c(N,S.offset,S.startLoc),{nextConsumeToken:M,node:N}}}return c(N,P.currentOffset(),P.currentPosition()),{node:N}}function u(P){const F=P.context(),N=F.currentType===1?P.currentOffset():F.offset,M=F.currentType===1?F.endLoc:F.startLoc,S=d(2,N,M);S.items=[];let L=null;do{const T=L||P.nextToken();switch(L=null,T.type){case 0:T.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(T)),S.items.push(p(P,T.value||""));break;case 6:T.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(T)),S.items.push(g(P,T.value||""));break;case 5:T.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(T)),S.items.push(_(P,T.value||""));break;case 7:T.value==null&&s(P,ps.UNEXPECTED_LEXICAL_ANALYSIS,F.lastStartLoc,0,Pl(T)),S.items.push(v(P,T.value||""));break;case 8:{const H=y(P);S.items.push(H.node),L=H.nextConsumeToken||null;break}}}while(F.currentType!==14&&F.currentType!==1);const E=F.currentType===1?F.lastOffset:P.currentOffset(),f=F.currentType===1?F.lastEndLoc:P.currentPosition();return c(S,E,f),S}function C(P,F,N,M){const S=P.context();let L=M.items.length===0;const E=d(1,F,N);E.cases=[],E.cases.push(M);do{const f=u(P);L||(L=f.items.length===0),E.cases.push(f)}while(S.currentType!==14);return L&&s(P,ps.MUST_HAVE_MESSAGES_IN_PLURAL,N,0),c(E,P.currentOffset(),P.currentPosition()),E}function x(P){const F=P.context(),{offset:N,startLoc:M}=F,S=u(P);return F.currentType===14?S:C(P,N,M,S)}function z(P){const F=Aie(P,vz({},l)),N=F.context(),M=d(0,N.offset,N.startLoc);return a&&M.loc&&(M.loc.source=P),M.body=x(F),l.onCacheKey&&(M.cacheKey=l.onCacheKey(P)),N.currentType!==14&&s(F,ps.UNEXPECTED_LEXICAL_ANALYSIS,N.lastStartLoc,0,P[N.offset]||""),c(M,F.currentOffset(),F.currentPosition()),M}return{parse:z}}function Pl(l){if(l.type===14)return"EOF";const a=(l.value||"").replace(/\r?\n/gu,"\\n");return a.length>10?a.slice(0,9)+"…":a}function Tie(l,a={}){const t={ast:l,helpers:new Set};return{context:()=>t,helper:c=>(t.helpers.add(c),c)}}function PF(l,a){for(let t=0;tUF(t)),l}function UF(l){if(l.items.length===1){const a=l.items[0];(a.type===3||a.type===9)&&(l.static=a.value,delete a.value)}else{const a=[];for(let t=0;tg;function v(z,P){g.code+=z}function h(z,P=!0){const F=P?d:"";v(c?F+" ".repeat(z):F)}function b(z=!0){const P=++g.indentLevel;z&&h(P)}function y(z=!0){const P=--g.indentLevel;z&&h(P)}function u(){h(g.indentLevel)}return{context:_,push:v,indent:b,deindent:y,newline:u,helper:z=>`_${z}`,needIndent:()=>g.needIndent}}function Fie(l,a){const{helper:t}=l;l.push(`${t("linked")}(`),au(l,a.key),a.modifier?(l.push(", "),au(l,a.modifier),l.push(", _type")):l.push(", undefined, _type"),l.push(")")}function Nie(l,a){const{helper:t,needIndent:s}=l;l.push(`${t("normalize")}([`),l.indent(s());const d=a.items.length;for(let c=0;c1){l.push(`${t("plural")}([`),l.indent(s());const d=a.cases.length;for(let c=0;c{const t=TF(a.mode)?a.mode:"normal",s=TF(a.filename)?a.filename:"message.intl",d=!!a.sourceMap,c=a.breakLineCode!=null?a.breakLineCode:t==="arrow"?";":` +`,p=a.needIndent?a.needIndent:t!=="arrow",g=l.helpers||[],_=Oie(l,{mode:t,filename:s,sourceMap:d,breakLineCode:c,needIndent:p});_.push(t==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),_.indent(p),g.length>0&&(_.push(`const { ${hz(g.map(b=>`${b}: _${b}`),", ")} } = ctx`),_.newline()),_.push("return "),au(_,l),_.deindent(p),_.push("}"),delete l.helpers;const{code:v,map:h}=_.context();return{ast:l,code:v,map:h?h.toJSON():void 0}};function zie(l,a={}){const t=vz({},a),s=!!t.jit,d=!!t.minify,c=t.optimize==null?!0:t.optimize,g=Mie(t).parse(l);return s?(c&&Pie(g),d&&Rc(g),{ast:g,code:""}):(Die(g,t),qie(g,t))}/*! + * core-base v9.11.0 + * (c) 2024 kazuya kawaguchi + * Released under the MIT License. + */function Bie(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(hr().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(hr().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(hr().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const $i=[];$i[0]={w:[0],i:[3,0],"[":[4],o:[7]};$i[1]={w:[1],".":[2],"[":[4],o:[7]};$i[2]={w:[2],i:[3,0],0:[3,0]};$i[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};$i[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};$i[5]={"'":[4,0],o:8,l:[5,0]};$i[6]={'"':[4,0],o:8,l:[6,0]};const Gie=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function Wie(l){return Gie.test(l)}function Zie(l){const a=l.charCodeAt(0),t=l.charCodeAt(l.length-1);return a===t&&(a===34||a===39)?l.slice(1,-1):l}function Kie(l){if(l==null)return"o";switch(l.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return l;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function Yie(l){const a=l.trim();return l.charAt(0)==="0"&&isNaN(parseInt(l))?!1:Wie(a)?Zie(a):"*"+a}function Xie(l){const a=[];let t=-1,s=0,d=0,c,p,g,_,v,h,b;const y=[];y[0]=()=>{p===void 0?p=g:p+=g},y[1]=()=>{p!==void 0&&(a.push(p),p=void 0)},y[2]=()=>{y[0](),d++},y[3]=()=>{if(d>0)d--,s=4,y[0]();else{if(d=0,p===void 0||(p=Yie(p),p===!1))return!1;y[1]()}};function u(){const C=l[t+1];if(s===5&&C==="'"||s===6&&C==='"')return t++,g="\\"+C,y[0](),!0}for(;s!==null;)if(t++,c=l[t],!(c==="\\"&&u())){if(_=Kie(c),b=$i[s],v=b[_]||b.l||8,v===8||(s=v[0],v[1]!==void 0&&(h=y[v[1]],h&&(g=c,h()===!1))))return;if(s===7)return a}}const RF=new Map;function Qie(l,a){return qs(l)?l[a]:null}function Jie(l,a){if(!qs(l))return null;let t=RF.get(a);if(t||(t=Xie(a),t&&RF.set(a,t)),!t)return null;const s=t.length;let d=l,c=0;for(;cl,tde=l=>"",ade="text",sde=l=>l.length===0?"":mie(l),ode=_ie;function OF(l,a){return l=Math.abs(l),a===2?l?l>1?1:0:1:l?Math.min(l,2):0}function nde(l){const a=Uo(l.pluralIndex)?l.pluralIndex:-1;return l.named&&(Uo(l.named.count)||Uo(l.named.n))?Uo(l.named.count)?l.named.count:Uo(l.named.n)?l.named.n:a:a}function lde(l,a){a.count||(a.count=l),a.n||(a.n=l)}function rde(l={}){const a=l.locale,t=nde(l),s=qs(l.pluralRules)&&Na(a)&&no(l.pluralRules[a])?l.pluralRules[a]:OF,d=qs(l.pluralRules)&&Na(a)&&no(l.pluralRules[a])?OF:void 0,c=P=>P[s(t,P.length,d)],p=l.list||[],g=P=>p[P],_=l.named||{};Uo(l.pluralIndex)&&lde(t,_);const v=P=>_[P];function h(P){const F=no(l.messages)?l.messages(P):qs(l.messages)?l.messages[P]:!1;return F||(l.parent?l.parent.message(P):tde)}const b=P=>l.modifiers?l.modifiers[P]:ede,y=fs(l.processor)&&no(l.processor.normalize)?l.processor.normalize:sde,u=fs(l.processor)&&no(l.processor.interpolate)?l.processor.interpolate:ode,C=fs(l.processor)&&Na(l.processor.type)?l.processor.type:ade,z={list:g,named:v,plural:c,linked:(P,...F)=>{const[N,M]=F;let S="text",L="";F.length===1?qs(N)?(L=N.modifier||L,S=N.type||S):Na(N)&&(L=N||L):F.length===2&&(Na(N)&&(L=N||L),Na(M)&&(S=M||S));const E=h(P)(z),f=S==="vnode"&&_o(E)&&L?E[0]:E;return L?b(L)(f,S):f},message:h,type:C,interpolate:u,normalize:y,values:Qo({},p,_)};return z}let $p=null;function ide(l){$p=l}function dde(l,a,t){$p&&$p.emit("i18n:init",{timestamp:Date.now(),i18n:l,version:a,meta:t})}const cde=ude("function:translate");function ude(l){return a=>$p&&$p.emit(l,a)}const pde={NOT_FOUND_KEY:1,FALLBACK_TO_TRANSLATE:2,CANNOT_FORMAT_NUMBER:3,FALLBACK_TO_NUMBER_FORMAT:4,CANNOT_FORMAT_DATE:5,FALLBACK_TO_DATE_FORMAT:6,EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:7,__EXTEND_POINT__:8},fz=ps.__EXTEND_POINT__,ji=TP(fz),xl={INVALID_ARGUMENT:fz,INVALID_DATE_ARGUMENT:ji(),INVALID_ISO_DATE_ARGUMENT:ji(),NOT_SUPPORT_NON_STRING_MESSAGE:ji(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:ji(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:ji(),NOT_SUPPORT_LOCALE_TYPE:ji(),__EXTEND_POINT__:ji()};function Hl(l){return pu(l,null,void 0)}function PP(l,a){return a.locale!=null?FF(a.locale):FF(l.locale)}let GM;function FF(l){if(Na(l))return l;if(no(l)){if(l.resolvedOnce&&GM!=null)return GM;if(l.constructor.name==="Function"){const a=l();if(pie(a))throw Hl(xl.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return GM=a}else throw Hl(xl.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Hl(xl.NOT_SUPPORT_LOCALE_TYPE)}function _de(l,a,t){return[...new Set([t,..._o(a)?a:qs(a)?Object.keys(a):Na(a)?[a]:[t]])]}function gz(l,a,t){const s=Na(t)?t:su,d=l;d.__localeChainCache||(d.__localeChainCache=new Map);let c=d.__localeChainCache.get(s);if(!c){c=[];let p=[t];for(;_o(p);)p=NF(c,p,a);const g=_o(a)||!fs(a)?a:a.default?a.default:null;p=Na(g)?[g]:g,_o(p)&&NF(c,p,!1),d.__localeChainCache.set(s,c)}return c}function NF(l,a,t){let s=!0;for(let d=0;d`${l.charAt(0).toLocaleUpperCase()}${l.substr(1)}`;function fde(){return{upper:(l,a)=>a==="text"&&Na(l)?l.toUpperCase():a==="vnode"&&qs(l)&&"__v_isVNode"in l?l.children.toUpperCase():l,lower:(l,a)=>a==="text"&&Na(l)?l.toLowerCase():a==="vnode"&&qs(l)&&"__v_isVNode"in l?l.children.toLowerCase():l,capitalize:(l,a)=>a==="text"&&Na(l)?HF(l):a==="vnode"&&qs(l)&&"__v_isVNode"in l?HF(l.children):l}}let yz;function qF(l){yz=l}let bz;function gde(l){bz=l}let wz;function yde(l){wz=l}let kz=null;const bde=l=>{kz=l},wde=()=>kz;let xz=null;const zF=l=>{xz=l},kde=()=>xz;let BF=0;function xde(l={}){const a=no(l.onWarn)?l.onWarn:vie,t=Na(l.version)?l.version:hde,s=Na(l.locale)||no(l.locale)?l.locale:su,d=no(s)?su:s,c=_o(l.fallbackLocale)||fs(l.fallbackLocale)||Na(l.fallbackLocale)||l.fallbackLocale===!1?l.fallbackLocale:d,p=fs(l.messages)?l.messages:{[d]:{}},g=fs(l.datetimeFormats)?l.datetimeFormats:{[d]:{}},_=fs(l.numberFormats)?l.numberFormats:{[d]:{}},v=Qo({},l.modifiers||{},fde()),h=l.pluralRules||{},b=no(l.missing)?l.missing:null,y=Is(l.missingWarn)||gi(l.missingWarn)?l.missingWarn:!0,u=Is(l.fallbackWarn)||gi(l.fallbackWarn)?l.fallbackWarn:!0,C=!!l.fallbackFormat,x=!!l.unresolving,z=no(l.postTranslation)?l.postTranslation:null,P=fs(l.processor)?l.processor:null,F=Is(l.warnHtmlMessage)?l.warnHtmlMessage:!0,N=!!l.escapeParameter,M=no(l.messageCompiler)?l.messageCompiler:yz,S=no(l.messageResolver)?l.messageResolver:bz||Qie,L=no(l.localeFallbacker)?l.localeFallbacker:wz||_de,E=qs(l.fallbackContext)?l.fallbackContext:void 0,f=l,T=qs(f.__datetimeFormatters)?f.__datetimeFormatters:new Map,H=qs(f.__numberFormatters)?f.__numberFormatters:new Map,O=qs(f.__meta)?f.__meta:{};BF++;const W={version:t,cid:BF,locale:s,fallbackLocale:c,messages:p,modifiers:v,pluralRules:h,missing:b,missingWarn:y,fallbackWarn:u,fallbackFormat:C,unresolving:x,postTranslation:z,processor:P,warnHtmlMessage:F,escapeParameter:N,messageCompiler:M,messageResolver:S,localeFallbacker:L,fallbackContext:E,onWarn:a,__meta:O};return W.datetimeFormats=g,W.numberFormats=_,W.__datetimeFormatters=T,W.__numberFormatters=H,__INTLIFY_PROD_DEVTOOLS__&&dde(W,t,O),W}function UP(l,a,t,s,d){const{missing:c,onWarn:p}=l;if(c!==null){const g=c(l,t,a,d);return Na(g)?g:a}else return a}function Hu(l,a,t){const s=l;s.__localeChainCache=new Map,l.localeFallbacker(l,t,a)}function WM(l){return t=>$de(t,l)}function $de(l,a){const t=a.b||a.body;if((t.t||t.type)===1){const s=t,d=s.c||s.cases;return l.plural(d.reduce((c,p)=>[...c,GF(l,p)],[]))}else return GF(l,t)}function GF(l,a){const t=a.s||a.static;if(t)return l.type==="text"?t:l.normalize([t]);{const s=(a.i||a.items).reduce((d,c)=>[...d,JT(l,c)],[]);return l.normalize(s)}}function JT(l,a){const t=a.t||a.type;switch(t){case 3:{const s=a;return s.v||s.value}case 9:{const s=a;return s.v||s.value}case 4:{const s=a;return l.interpolate(l.named(s.k||s.key))}case 5:{const s=a;return l.interpolate(l.list(s.i!=null?s.i:s.index))}case 6:{const s=a,d=s.m||s.modifier;return l.linked(JT(l,s.k||s.key),d?JT(l,d):void 0,l.type)}case 7:{const s=a;return s.v||s.value}case 8:{const s=a;return s.v||s.value}default:throw new Error(`unhandled node type on format message part: ${t}`)}}const $z=l=>l;let Fc=Object.create(null);const ou=l=>qs(l)&&(l.t===0||l.type===0)&&("b"in l||"body"in l);function Cz(l,a={}){let t=!1;const s=a.onError||wie;return a.onError=d=>{t=!0,s(d)},{...zie(l,a),detectError:t}}const Cde=(l,a)=>{if(!Na(l))throw Hl(xl.NOT_SUPPORT_NON_STRING_MESSAGE);{Is(a.warnHtmlMessage)&&a.warnHtmlMessage;const s=(a.onCacheKey||$z)(l),d=Fc[s];if(d)return d;const{code:c,detectError:p}=Cz(l,a),g=new Function(`return ${c}`)();return p?g:Fc[s]=g}};function Sde(l,a){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&Na(l)){Is(a.warnHtmlMessage)&&a.warnHtmlMessage;const s=(a.onCacheKey||$z)(l),d=Fc[s];if(d)return d;const{ast:c,detectError:p}=Cz(l,{...a,location:!1,jit:!0}),g=WM(c);return p?g:Fc[s]=g}else{const t=l.cacheKey;if(t){const s=Fc[t];return s||(Fc[t]=WM(l))}else return WM(l)}}const WF=()=>"",Qn=l=>no(l);function ZF(l,...a){const{fallbackFormat:t,postTranslation:s,unresolving:d,messageCompiler:c,fallbackLocale:p,messages:g}=l,[_,v]=eD(...a),h=Is(v.missingWarn)?v.missingWarn:l.missingWarn,b=Is(v.fallbackWarn)?v.fallbackWarn:l.fallbackWarn,y=Is(v.escapeParameter)?v.escapeParameter:l.escapeParameter,u=!!v.resolvedMessage,C=Na(v.default)||Is(v.default)?Is(v.default)?c?_:()=>_:v.default:t?c?_:()=>_:"",x=t||C!=="",z=PP(l,v);y&&Ede(v);let[P,F,N]=u?[_,z,g[z]||{}]:Sz(l,_,z,p,b,h),M=P,S=_;if(!u&&!(Na(M)||ou(M)||Qn(M))&&x&&(M=C,S=M),!u&&(!(Na(M)||ou(M)||Qn(M))||!Na(F)))return d?eV:_;let L=!1;const E=()=>{L=!0},f=Qn(M)?M:Ez(l,_,F,M,S,E);if(L)return M;const T=Ide(l,F,N,v),H=rde(T),O=Ade(l,f,H),W=s?s(O,_):O;if(__INTLIFY_PROD_DEVTOOLS__){const ie={timestamp:Date.now(),key:Na(_)?_:Qn(M)?M.key:"",locale:F||(Qn(M)?M.locale:""),format:Na(M)?M:Qn(M)?M.source:"",message:W};ie.meta=Qo({},l.__meta,wde()||{}),cde(ie)}return W}function Ede(l){_o(l.list)?l.list=l.list.map(a=>Na(a)?MF(a):a):qs(l.named)&&Object.keys(l.named).forEach(a=>{Na(l.named[a])&&(l.named[a]=MF(l.named[a]))})}function Sz(l,a,t,s,d,c){const{messages:p,onWarn:g,messageResolver:_,localeFallbacker:v}=l,h=v(l,s,t);let b={},y,u=null;const C="translate";for(let x=0;xs;return v.locale=t,v.key=a,v}const _=p(s,Lde(l,t,d,s,g,c));return _.locale=t,_.key=a,_.source=s,_}function Ade(l,a,t){return a(t)}function eD(...l){const[a,t,s]=l,d={};if(!Na(a)&&!Uo(a)&&!Qn(a)&&!ou(a))throw Hl(xl.INVALID_ARGUMENT);const c=Uo(a)?String(a):(Qn(a),a);return Uo(t)?d.plural=t:Na(t)?d.default=t:fs(t)&&!JI(t)?d.named=t:_o(t)&&(d.list=t),Uo(s)?d.plural=s:Na(s)?d.default=s:fs(s)&&Qo(d,s),[c,d]}function Lde(l,a,t,s,d,c){return{locale:a,key:t,warnHtmlMessage:d,onError:p=>{throw c&&c(p),p},onCacheKey:p=>iie(a,t,p)}}function Ide(l,a,t,s){const{modifiers:d,pluralRules:c,messageResolver:p,fallbackLocale:g,fallbackWarn:_,missingWarn:v,fallbackContext:h}=l,y={locale:a,modifiers:d,pluralRules:c,messages:u=>{let C=p(t,u);if(C==null&&h){const[,,x]=Sz(h,u,a,g,_,v);C=p(x,u)}if(Na(C)||ou(C)){let x=!1;const P=Ez(l,u,a,C,u,()=>{x=!0});return x?WF:P}else return Qn(C)?C:WF}};return l.processor&&(y.processor=l.processor),s.list&&(y.list=s.list),s.named&&(y.named=s.named),Uo(s.plural)&&(y.pluralIndex=s.plural),y}function KF(l,...a){const{datetimeFormats:t,unresolving:s,fallbackLocale:d,onWarn:c,localeFallbacker:p}=l,{__datetimeFormatters:g}=l,[_,v,h,b]=tD(...a),y=Is(h.missingWarn)?h.missingWarn:l.missingWarn;Is(h.fallbackWarn)?h.fallbackWarn:l.fallbackWarn;const u=!!h.part,C=PP(l,h),x=p(l,d,C);if(!Na(_)||_==="")return new Intl.DateTimeFormat(C,b).format(v);let z={},P,F=null;const N="datetime format";for(let L=0;L{Az.includes(_)?p[_]=t[_]:c[_]=t[_]}),Na(s)?c.locale=s:fs(s)&&(p=s),fs(d)&&(p=d),[c.key||"",g,c,p]}function YF(l,a,t){const s=l;for(const d in t){const c=`${a}__${d}`;s.__datetimeFormatters.has(c)&&s.__datetimeFormatters.delete(c)}}function XF(l,...a){const{numberFormats:t,unresolving:s,fallbackLocale:d,onWarn:c,localeFallbacker:p}=l,{__numberFormatters:g}=l,[_,v,h,b]=aD(...a),y=Is(h.missingWarn)?h.missingWarn:l.missingWarn;Is(h.fallbackWarn)?h.fallbackWarn:l.fallbackWarn;const u=!!h.part,C=PP(l,h),x=p(l,d,C);if(!Na(_)||_==="")return new Intl.NumberFormat(C,b).format(v);let z={},P,F=null;const N="number format";for(let L=0;L{Lz.includes(_)?p[_]=t[_]:c[_]=t[_]}),Na(s)?c.locale=s:fs(s)&&(p=s),fs(d)&&(p=d),[c.key||"",g,c,p]}function QF(l,a,t){const s=l;for(const d in t){const c=`${a}__${d}`;s.__numberFormatters.has(c)&&s.__numberFormatters.delete(c)}}Bie();/*! + * vue-i18n v9.11.0 + * (c) 2024 kazuya kawaguchi + * Released under the MIT License. + */const Vde="9.11.0";function Mde(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(hr().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(hr().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(hr().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(hr().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(hr().__INTLIFY_PROD_DEVTOOLS__=!1)}const Iz=pde.__EXTEND_POINT__,pr=TP(Iz);pr(),pr(),pr(),pr(),pr(),pr(),pr(),pr(),pr();const Vz=xl.__EXTEND_POINT__,fn=TP(Vz),Ro={UNEXPECTED_RETURN_TYPE:Vz,INVALID_ARGUMENT:fn(),MUST_BE_CALL_SETUP_TOP:fn(),NOT_INSTALLED:fn(),NOT_AVAILABLE_IN_LEGACY_MODE:fn(),REQUIRED_VALUE:fn(),INVALID_VALUE:fn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:fn(),NOT_INSTALLED_WITH_PROVIDE:fn(),UNEXPECTED_ERROR:fn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:fn(),BRIDGE_SUPPORT_VUE_2_ONLY:fn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:fn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:fn(),__EXTEND_POINT__:fn()};function qo(l,...a){return pu(l,null,void 0)}const sD=xi("__translateVNode"),oD=xi("__datetimeParts"),nD=xi("__numberParts"),Mz=xi("__setPluralRules"),Tz=xi("__injectWithOption"),lD=xi("__dispose");function Cp(l){if(!qs(l))return l;for(const a in l)if(mI(l,a))if(!a.includes("."))qs(l[a])&&Cp(l[a]);else{const t=a.split("."),s=t.length-1;let d=l,c=!1;for(let p=0;p{if("locale"in g&&"resource"in g){const{locale:_,resource:v}=g;_?(p[_]=p[_]||{},G7(v,p[_])):G7(v,p)}else Na(g)&&G7(JSON.parse(g),p)}),d==null&&c)for(const g in p)mI(p,g)&&Cp(p[g]);return p}function Dz(l){return l.type}function Pz(l,a,t){let s=qs(a.messages)?a.messages:{};"__i18nGlobal"in t&&(s=tV(l.locale.value,{messages:s,__i18n:t.__i18nGlobal}));const d=Object.keys(s);d.length&&d.forEach(c=>{l.mergeLocaleMessage(c,s[c])});{if(qs(a.datetimeFormats)){const c=Object.keys(a.datetimeFormats);c.length&&c.forEach(p=>{l.mergeDateTimeFormat(p,a.datetimeFormats[p])})}if(qs(a.numberFormats)){const c=Object.keys(a.numberFormats);c.length&&c.forEach(p=>{l.mergeNumberFormat(p,a.numberFormats[p])})}}}function JF(l){return o(Dp,null,l,0)}const eN="__INTLIFY_META__",tN=()=>[],Tde=()=>!1;let aN=0;function sN(l){return(a,t,s,d)=>l(t,s,xr()||void 0,d)}const Dde=()=>{const l=xr();let a=null;return l&&(a=Dz(l)[eN])?{[eN]:a}:null};function RP(l={},a){const{__root:t,__injectWithOption:s}=l,d=t===void 0,c=l.flatJson,p=_I?$:MI,g=!!l.translateExistCompatible;let _=Is(l.inheritLocale)?l.inheritLocale:!0;const v=p(t&&_?t.locale.value:Na(l.locale)?l.locale:su),h=p(t&&_?t.fallbackLocale.value:Na(l.fallbackLocale)||_o(l.fallbackLocale)||fs(l.fallbackLocale)||l.fallbackLocale===!1?l.fallbackLocale:v.value),b=p(tV(v.value,l)),y=p(fs(l.datetimeFormats)?l.datetimeFormats:{[v.value]:{}}),u=p(fs(l.numberFormats)?l.numberFormats:{[v.value]:{}});let C=t?t.missingWarn:Is(l.missingWarn)||gi(l.missingWarn)?l.missingWarn:!0,x=t?t.fallbackWarn:Is(l.fallbackWarn)||gi(l.fallbackWarn)?l.fallbackWarn:!0,z=t?t.fallbackRoot:Is(l.fallbackRoot)?l.fallbackRoot:!0,P=!!l.fallbackFormat,F=no(l.missing)?l.missing:null,N=no(l.missing)?sN(l.missing):null,M=no(l.postTranslation)?l.postTranslation:null,S=t?t.warnHtmlMessage:Is(l.warnHtmlMessage)?l.warnHtmlMessage:!0,L=!!l.escapeParameter;const E=t?t.modifiers:fs(l.modifiers)?l.modifiers:{};let f=l.pluralRules||t&&t.pluralRules,T;T=(()=>{d&&zF(null);const kt={version:Vde,locale:v.value,fallbackLocale:h.value,messages:b.value,modifiers:E,pluralRules:f,missing:N===null?void 0:N,missingWarn:C,fallbackWarn:x,fallbackFormat:P,unresolving:!0,postTranslation:M===null?void 0:M,warnHtmlMessage:S,escapeParameter:L,messageResolver:l.messageResolver,messageCompiler:l.messageCompiler,__meta:{framework:"vue"}};kt.datetimeFormats=y.value,kt.numberFormats=u.value,kt.__datetimeFormatters=fs(T)?T.__datetimeFormatters:void 0,kt.__numberFormatters=fs(T)?T.__numberFormatters:void 0;const gt=xde(kt);return d&&zF(gt),gt})(),Hu(T,v.value,h.value);function O(){return[v.value,h.value,b.value,y.value,u.value]}const W=ae({get:()=>v.value,set:kt=>{v.value=kt,T.locale=v.value}}),ie=ae({get:()=>h.value,set:kt=>{h.value=kt,T.fallbackLocale=h.value,Hu(T,v.value,kt)}}),ve=ae(()=>b.value),de=ae(()=>y.value),re=ae(()=>u.value);function K(){return no(M)?M:null}function Q(kt){M=kt,T.postTranslation=kt}function se(){return F}function ue(kt){kt!==null&&(N=sN(kt)),F=kt,T.missing=N}const ke=(kt,gt,Pt,Qt,Jt,Lt)=>{O();let Ye;try{__INTLIFY_PROD_DEVTOOLS__,d||(T.fallbackContext=t?kde():void 0),Ye=kt(T)}finally{__INTLIFY_PROD_DEVTOOLS__,d||(T.fallbackContext=void 0)}if(Pt!=="translate exists"&&Uo(Ye)&&Ye===eV||Pt==="translate exists"&&!Ye){const[Te,Fe]=gt();return t&&z?Qt(t):Jt(Te)}else{if(Lt(Ye))return Ye;throw qo(Ro.UNEXPECTED_RETURN_TYPE)}};function we(...kt){return ke(gt=>Reflect.apply(ZF,null,[gt,...kt]),()=>eD(...kt),"translate",gt=>Reflect.apply(gt.t,gt,[...kt]),gt=>gt,gt=>Na(gt))}function Ce(...kt){const[gt,Pt,Qt]=kt;if(Qt&&!qs(Qt))throw qo(Ro.INVALID_ARGUMENT);return we(gt,Pt,Qo({resolvedMessage:!0},Qt||{}))}function $e(...kt){return ke(gt=>Reflect.apply(KF,null,[gt,...kt]),()=>tD(...kt),"datetime format",gt=>Reflect.apply(gt.d,gt,[...kt]),()=>jF,gt=>Na(gt))}function he(...kt){return ke(gt=>Reflect.apply(XF,null,[gt,...kt]),()=>aD(...kt),"number format",gt=>Reflect.apply(gt.n,gt,[...kt]),()=>jF,gt=>Na(gt))}function je(kt){return kt.map(gt=>Na(gt)||Uo(gt)||Is(gt)?JF(String(gt)):gt)}const ce={normalize:je,interpolate:kt=>kt,type:"vnode"};function G(...kt){return ke(gt=>{let Pt;const Qt=gt;try{Qt.processor=ce,Pt=Reflect.apply(ZF,null,[Qt,...kt])}finally{Qt.processor=null}return Pt},()=>eD(...kt),"translate",gt=>gt[sD](...kt),gt=>[JF(gt)],gt=>_o(gt))}function q(...kt){return ke(gt=>Reflect.apply(XF,null,[gt,...kt]),()=>aD(...kt),"number format",gt=>gt[nD](...kt),tN,gt=>Na(gt)||_o(gt))}function te(...kt){return ke(gt=>Reflect.apply(KF,null,[gt,...kt]),()=>tD(...kt),"datetime format",gt=>gt[oD](...kt),tN,gt=>Na(gt)||_o(gt))}function _e(kt){f=kt,T.pluralRules=f}function Y(kt,gt){return ke(()=>{if(!kt)return!1;const Pt=Na(gt)?gt:v.value,Qt=oe(Pt),Jt=T.messageResolver(Qt,kt);return g?Jt!=null:ou(Jt)||Qn(Jt)||Na(Jt)},()=>[kt],"translate exists",Pt=>Reflect.apply(Pt.te,Pt,[kt,gt]),Tde,Pt=>Is(Pt))}function U(kt){let gt=null;const Pt=gz(T,h.value,v.value);for(let Qt=0;Qt{_&&(v.value=kt,T.locale=kt,Hu(T,v.value,h.value))}),ra(t.fallbackLocale,kt=>{_&&(h.value=kt,T.fallbackLocale=kt,Hu(T,v.value,h.value))}));const Wt={id:aN,locale:W,fallbackLocale:ie,get inheritLocale(){return _},set inheritLocale(kt){_=kt,kt&&t&&(v.value=t.locale.value,h.value=t.fallbackLocale.value,Hu(T,v.value,h.value))},get availableLocales(){return Object.keys(b.value).sort()},messages:ve,get modifiers(){return E},get pluralRules(){return f||{}},get isGlobal(){return d},get missingWarn(){return C},set missingWarn(kt){C=kt,T.missingWarn=C},get fallbackWarn(){return x},set fallbackWarn(kt){x=kt,T.fallbackWarn=x},get fallbackRoot(){return z},set fallbackRoot(kt){z=kt},get fallbackFormat(){return P},set fallbackFormat(kt){P=kt,T.fallbackFormat=P},get warnHtmlMessage(){return S},set warnHtmlMessage(kt){S=kt,T.warnHtmlMessage=kt},get escapeParameter(){return L},set escapeParameter(kt){L=kt,T.escapeParameter=kt},t:we,getLocaleMessage:oe,setLocaleMessage:Z,mergeLocaleMessage:X,getPostTranslationHandler:K,setPostTranslationHandler:Q,getMissingHandler:se,setMissingHandler:ue,[Mz]:_e};return Wt.datetimeFormats=de,Wt.numberFormats=re,Wt.rt=Ce,Wt.te=Y,Wt.tm=j,Wt.d=$e,Wt.n=he,Wt.getDateTimeFormat=le,Wt.setDateTimeFormat=fe,Wt.mergeDateTimeFormat=Me,Wt.getNumberFormat=mt,Wt.setNumberFormat=Mt,Wt.mergeNumberFormat=Gt,Wt[Tz]=s,Wt[sD]=G,Wt[oD]=te,Wt[nD]=q,Wt}function Pde(l){const a=Na(l.locale)?l.locale:su,t=Na(l.fallbackLocale)||_o(l.fallbackLocale)||fs(l.fallbackLocale)||l.fallbackLocale===!1?l.fallbackLocale:a,s=no(l.missing)?l.missing:void 0,d=Is(l.silentTranslationWarn)||gi(l.silentTranslationWarn)?!l.silentTranslationWarn:!0,c=Is(l.silentFallbackWarn)||gi(l.silentFallbackWarn)?!l.silentFallbackWarn:!0,p=Is(l.fallbackRoot)?l.fallbackRoot:!0,g=!!l.formatFallbackMessages,_=fs(l.modifiers)?l.modifiers:{},v=l.pluralizationRules,h=no(l.postTranslation)?l.postTranslation:void 0,b=Na(l.warnHtmlInMessage)?l.warnHtmlInMessage!=="off":!0,y=!!l.escapeParameterHtml,u=Is(l.sync)?l.sync:!0;let C=l.messages;if(fs(l.sharedMessages)){const L=l.sharedMessages;C=Object.keys(L).reduce((f,T)=>{const H=f[T]||(f[T]={});return Qo(H,L[T]),f},C||{})}const{__i18n:x,__root:z,__injectWithOption:P}=l,F=l.datetimeFormats,N=l.numberFormats,M=l.flatJson,S=l.translateExistCompatible;return{locale:a,fallbackLocale:t,messages:C,flatJson:M,datetimeFormats:F,numberFormats:N,missing:s,missingWarn:d,fallbackWarn:c,fallbackRoot:p,fallbackFormat:g,modifiers:_,pluralRules:v,postTranslation:h,warnHtmlMessage:b,escapeParameter:y,messageResolver:l.messageResolver,inheritLocale:u,translateExistCompatible:S,__i18n:x,__root:z,__injectWithOption:P}}function rD(l={},a){{const t=RP(Pde(l)),{__extender:s}=l,d={id:t.id,get locale(){return t.locale.value},set locale(c){t.locale.value=c},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(c){t.fallbackLocale.value=c},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(c){},get missing(){return t.getMissingHandler()},set missing(c){t.setMissingHandler(c)},get silentTranslationWarn(){return Is(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(c){t.missingWarn=Is(c)?!c:c},get silentFallbackWarn(){return Is(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(c){t.fallbackWarn=Is(c)?!c:c},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(c){t.fallbackFormat=c},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(c){t.setPostTranslationHandler(c)},get sync(){return t.inheritLocale},set sync(c){t.inheritLocale=c},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(c){t.warnHtmlMessage=c!=="off"},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(c){t.escapeParameter=c},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(c){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...c){const[p,g,_]=c,v={};let h=null,b=null;if(!Na(p))throw qo(Ro.INVALID_ARGUMENT);const y=p;return Na(g)?v.locale=g:_o(g)?h=g:fs(g)&&(b=g),_o(_)?h=_:fs(_)&&(b=_),Reflect.apply(t.t,t,[y,h||b||{},v])},rt(...c){return Reflect.apply(t.rt,t,[...c])},tc(...c){const[p,g,_]=c,v={plural:1};let h=null,b=null;if(!Na(p))throw qo(Ro.INVALID_ARGUMENT);const y=p;return Na(g)?v.locale=g:Uo(g)?v.plural=g:_o(g)?h=g:fs(g)&&(b=g),Na(_)?v.locale=_:_o(_)?h=_:fs(_)&&(b=_),Reflect.apply(t.t,t,[y,h||b||{},v])},te(c,p){return t.te(c,p)},tm(c){return t.tm(c)},getLocaleMessage(c){return t.getLocaleMessage(c)},setLocaleMessage(c,p){t.setLocaleMessage(c,p)},mergeLocaleMessage(c,p){t.mergeLocaleMessage(c,p)},d(...c){return Reflect.apply(t.d,t,[...c])},getDateTimeFormat(c){return t.getDateTimeFormat(c)},setDateTimeFormat(c,p){t.setDateTimeFormat(c,p)},mergeDateTimeFormat(c,p){t.mergeDateTimeFormat(c,p)},n(...c){return Reflect.apply(t.n,t,[...c])},getNumberFormat(c){return t.getNumberFormat(c)},setNumberFormat(c,p){t.setNumberFormat(c,p)},mergeNumberFormat(c,p){t.mergeNumberFormat(c,p)},getChoiceIndex(c,p){return-1}};return d.__extender=s,d}}const OP={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:l=>l==="parent"||l==="global",default:"parent"},i18n:{type:Object}};function Ude({slots:l},a){return a.length===1&&a[0]==="default"?(l.default?l.default():[]).reduce((s,d)=>[...s,...d.type===Pe?d.children:[d]],[]):a.reduce((t,s)=>{const d=l[s];return d&&(t[s]=d()),t},{})}function Uz(l){return Pe}const Rde=lt({name:"i18n-t",props:Qo({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:l=>Uo(l)||!isNaN(l)}},OP),setup(l,a){const{slots:t,attrs:s}=a,d=l.i18n||At({useScope:l.scope,__useComponent:!0});return()=>{const c=Object.keys(t).filter(b=>b!=="_"),p={};l.locale&&(p.locale=l.locale),l.plural!==void 0&&(p.plural=Na(l.plural)?+l.plural:l.plural);const g=Ude(a,c),_=d[sD](l.keypath,g,p),v=Qo({},s),h=Na(l.tag)||qs(l.tag)?l.tag:Uz();return Os(h,v,_)}}}),oN=Rde;function Ode(l){return _o(l)&&!Na(l[0])}function Rz(l,a,t,s){const{slots:d,attrs:c}=a;return()=>{const p={part:!0};let g={};l.locale&&(p.locale=l.locale),Na(l.format)?p.key=l.format:qs(l.format)&&(Na(l.format.key)&&(p.key=l.format.key),g=Object.keys(l.format).reduce((y,u)=>t.includes(u)?Qo({},y,{[u]:l.format[u]}):y,{}));const _=s(l.value,p,g);let v=[p.key];_o(_)?v=_.map((y,u)=>{const C=d[y.type],x=C?C({[y.type]:y.value,index:u,parts:_}):[y.value];return Ode(x)&&(x[0].key=`${y.type}-${u}`),x}):Na(_)&&(v=[_]);const h=Qo({},c),b=Na(l.tag)||qs(l.tag)?l.tag:Uz();return Os(b,h,v)}}const Fde=lt({name:"i18n-n",props:Qo({value:{type:Number,required:!0},format:{type:[String,Object]}},OP),setup(l,a){const t=l.i18n||At({useScope:l.scope,__useComponent:!0});return Rz(l,a,Lz,(...s)=>t[nD](...s))}}),nN=Fde,Nde=lt({name:"i18n-d",props:Qo({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},OP),setup(l,a){const t=l.i18n||At({useScope:l.scope,__useComponent:!0});return Rz(l,a,Az,(...s)=>t[oD](...s))}}),lN=Nde;function jde(l,a){const t=l;if(l.mode==="composition")return t.__getInstance(a)||l.global;{const s=t.__getInstance(a);return s!=null?s.__composer:l.global.__composer}}function Hde(l){const a=p=>{const{instance:g,modifiers:_,value:v}=p;if(!g||!g.$)throw qo(Ro.UNEXPECTED_ERROR);const h=jde(l,g.$),b=rN(v);return[Reflect.apply(h.t,h,[...iN(b)]),h]};return{created:(p,g)=>{const[_,v]=a(g);_I&&l.global===v&&(p.__i18nWatcher=ra(v.locale,()=>{g.instance&&g.instance.$forceUpdate()})),p.__composer=v,p.textContent=_},unmounted:p=>{_I&&p.__i18nWatcher&&(p.__i18nWatcher(),p.__i18nWatcher=void 0,delete p.__i18nWatcher),p.__composer&&(p.__composer=void 0,delete p.__composer)},beforeUpdate:(p,{value:g})=>{if(p.__composer){const _=p.__composer,v=rN(g);p.textContent=Reflect.apply(_.t,_,[...iN(v)])}},getSSRProps:p=>{const[g]=a(p);return{textContent:g}}}}function rN(l){if(Na(l))return{path:l};if(fs(l)){if(!("path"in l))throw qo(Ro.REQUIRED_VALUE,"path");return l}else throw qo(Ro.INVALID_VALUE)}function iN(l){const{path:a,locale:t,args:s,choice:d,plural:c}=l,p={},g=s||{};return Na(t)&&(p.locale=t),Uo(d)&&(p.plural=d),Uo(c)&&(p.plural=c),[a,g,p]}function qde(l,a,...t){const s=fs(t[0])?t[0]:{},d=!!s.useI18nComponentName;(Is(s.globalInstall)?s.globalInstall:!0)&&([d?"i18n":oN.name,"I18nT"].forEach(p=>l.component(p,oN)),[nN.name,"I18nN"].forEach(p=>l.component(p,nN)),[lN.name,"I18nD"].forEach(p=>l.component(p,lN))),l.directive("t",Hde(a))}function zde(l,a,t){return{beforeCreate(){const s=xr();if(!s)throw qo(Ro.UNEXPECTED_ERROR);const d=this.$options;if(d.i18n){const c=d.i18n;if(d.__i18n&&(c.__i18n=d.__i18n),c.__root=a,this===this.$root)this.$i18n=dN(l,c);else{c.__injectWithOption=!0,c.__extender=t.__vueI18nExtend,this.$i18n=rD(c);const p=this.$i18n;p.__extender&&(p.__disposer=p.__extender(this.$i18n))}}else if(d.__i18n)if(this===this.$root)this.$i18n=dN(l,d);else{this.$i18n=rD({__i18n:d.__i18n,__injectWithOption:!0,__extender:t.__vueI18nExtend,__root:a});const c=this.$i18n;c.__extender&&(c.__disposer=c.__extender(this.$i18n))}else this.$i18n=l;d.__i18nGlobal&&Pz(a,d,d),this.$t=(...c)=>this.$i18n.t(...c),this.$rt=(...c)=>this.$i18n.rt(...c),this.$tc=(...c)=>this.$i18n.tc(...c),this.$te=(c,p)=>this.$i18n.te(c,p),this.$d=(...c)=>this.$i18n.d(...c),this.$n=(...c)=>this.$i18n.n(...c),this.$tm=c=>this.$i18n.tm(c),t.__setInstance(s,this.$i18n)},mounted(){},unmounted(){const s=xr();if(!s)throw qo(Ro.UNEXPECTED_ERROR);const d=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,d.__disposer&&(d.__disposer(),delete d.__disposer,delete d.__extender),t.__deleteInstance(s),delete this.$i18n}}}function dN(l,a){l.locale=a.locale||l.locale,l.fallbackLocale=a.fallbackLocale||l.fallbackLocale,l.missing=a.missing||l.missing,l.silentTranslationWarn=a.silentTranslationWarn||l.silentFallbackWarn,l.silentFallbackWarn=a.silentFallbackWarn||l.silentFallbackWarn,l.formatFallbackMessages=a.formatFallbackMessages||l.formatFallbackMessages,l.postTranslation=a.postTranslation||l.postTranslation,l.warnHtmlInMessage=a.warnHtmlInMessage||l.warnHtmlInMessage,l.escapeParameterHtml=a.escapeParameterHtml||l.escapeParameterHtml,l.sync=a.sync||l.sync,l.__composer[Mz](a.pluralizationRules||l.pluralizationRules);const t=tV(l.locale,{messages:a.messages,__i18n:a.__i18n});return Object.keys(t).forEach(s=>l.mergeLocaleMessage(s,t[s])),a.datetimeFormats&&Object.keys(a.datetimeFormats).forEach(s=>l.mergeDateTimeFormat(s,a.datetimeFormats[s])),a.numberFormats&&Object.keys(a.numberFormats).forEach(s=>l.mergeNumberFormat(s,a.numberFormats[s])),l}const Bde=xi("global-vue-i18n");function Gde(l={},a){const t=__VUE_I18N_LEGACY_API__&&Is(l.legacy)?l.legacy:__VUE_I18N_LEGACY_API__,s=Is(l.globalInjection)?l.globalInjection:!0,d=__VUE_I18N_LEGACY_API__&&t?!!l.allowComposition:!0,c=new Map,[p,g]=Wde(l,t),_=xi("");function v(y){return c.get(y)||null}function h(y,u){c.set(y,u)}function b(y){c.delete(y)}{const y={get mode(){return __VUE_I18N_LEGACY_API__&&t?"legacy":"composition"},get allowComposition(){return d},async install(u,...C){if(u.__VUE_I18N_SYMBOL__=_,u.provide(u.__VUE_I18N_SYMBOL__,y),fs(C[0])){const P=C[0];y.__composerExtend=P.__composerExtend,y.__vueI18nExtend=P.__vueI18nExtend}let x=null;!t&&s&&(x=ace(u,y.global)),__VUE_I18N_FULL_INSTALL__&&qde(u,y,...C),__VUE_I18N_LEGACY_API__&&t&&u.mixin(zde(g,g.__composer,y));const z=u.unmount;u.unmount=()=>{x&&x(),y.dispose(),z()}},get global(){return g},dispose(){p.stop()},__instances:c,__getInstance:v,__setInstance:h,__deleteInstance:b};return y}}function At(l={}){const a=xr();if(a==null)throw qo(Ro.MUST_BE_CALL_SETUP_TOP);if(!a.isCE&&a.appContext.app!=null&&!a.appContext.app.__VUE_I18N_SYMBOL__)throw qo(Ro.NOT_INSTALLED);const t=Zde(a),s=Yde(t),d=Dz(a),c=Kde(l,d);if(__VUE_I18N_LEGACY_API__&&t.mode==="legacy"&&!l.__useComponent){if(!t.allowComposition)throw qo(Ro.NOT_AVAILABLE_IN_LEGACY_MODE);return ece(a,c,s,l)}if(c==="global")return Pz(s,l,d),s;if(c==="parent"){let _=Xde(t,a,l.__useComponent);return _==null&&(_=s),_}const p=t;let g=p.__getInstance(a);if(g==null){const _=Qo({},l);"__i18n"in d&&(_.__i18n=d.__i18n),s&&(_.__root=s),g=RP(_),p.__composerExtend&&(g[lD]=p.__composerExtend(g)),Jde(p,a,g),p.__setInstance(a,g)}return g}function Wde(l,a,t){const s=ZD();{const d=__VUE_I18N_LEGACY_API__&&a?s.run(()=>rD(l)):s.run(()=>RP(l));if(d==null)throw qo(Ro.UNEXPECTED_ERROR);return[s,d]}}function Zde(l){{const a=Ba(l.isCE?Bde:l.appContext.app.__VUE_I18N_SYMBOL__);if(!a)throw qo(l.isCE?Ro.NOT_INSTALLED_WITH_PROVIDE:Ro.UNEXPECTED_ERROR);return a}}function Kde(l,a){return JI(l)?"__i18n"in a?"local":"global":l.useScope?l.useScope:"local"}function Yde(l){return l.mode==="composition"?l.global:l.global.__composer}function Xde(l,a,t=!1){let s=null;const d=a.root;let c=Qde(a,t);for(;c!=null;){const p=l;if(l.mode==="composition")s=p.__getInstance(c);else if(__VUE_I18N_LEGACY_API__){const g=p.__getInstance(c);g!=null&&(s=g.__composer,t&&s&&!s[Tz]&&(s=null))}if(s!=null||d===c)break;c=c.parent}return s}function Qde(l,a=!1){return l==null?null:a&&l.vnode.ctx||l.parent}function Jde(l,a,t){zt(()=>{},a),Fs(()=>{const s=t;l.__deleteInstance(a);const d=s[lD];d&&(d(),delete s[lD])},a)}function ece(l,a,t,s={}){const d=a==="local",c=MI(null);if(d&&l.proxy&&!(l.proxy.$options.i18n||l.proxy.$options.__i18n))throw qo(Ro.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const p=Is(s.inheritLocale)?s.inheritLocale:!Na(s.locale),g=$(!d||p?t.locale.value:Na(s.locale)?s.locale:su),_=$(!d||p?t.fallbackLocale.value:Na(s.fallbackLocale)||_o(s.fallbackLocale)||fs(s.fallbackLocale)||s.fallbackLocale===!1?s.fallbackLocale:g.value),v=$(tV(g.value,s)),h=$(fs(s.datetimeFormats)?s.datetimeFormats:{[g.value]:{}}),b=$(fs(s.numberFormats)?s.numberFormats:{[g.value]:{}}),y=d?t.missingWarn:Is(s.missingWarn)||gi(s.missingWarn)?s.missingWarn:!0,u=d?t.fallbackWarn:Is(s.fallbackWarn)||gi(s.fallbackWarn)?s.fallbackWarn:!0,C=d?t.fallbackRoot:Is(s.fallbackRoot)?s.fallbackRoot:!0,x=!!s.fallbackFormat,z=no(s.missing)?s.missing:null,P=no(s.postTranslation)?s.postTranslation:null,F=d?t.warnHtmlMessage:Is(s.warnHtmlMessage)?s.warnHtmlMessage:!0,N=!!s.escapeParameter,M=d?t.modifiers:fs(s.modifiers)?s.modifiers:{},S=s.pluralRules||d&&t.pluralRules;function L(){return[g.value,_.value,v.value,h.value,b.value]}const E=ae({get:()=>c.value?c.value.locale.value:g.value,set:U=>{c.value&&(c.value.locale.value=U),g.value=U}}),f=ae({get:()=>c.value?c.value.fallbackLocale.value:_.value,set:U=>{c.value&&(c.value.fallbackLocale.value=U),_.value=U}}),T=ae(()=>c.value?c.value.messages.value:v.value),H=ae(()=>h.value),O=ae(()=>b.value);function W(){return c.value?c.value.getPostTranslationHandler():P}function ie(U){c.value&&c.value.setPostTranslationHandler(U)}function ve(){return c.value?c.value.getMissingHandler():z}function de(U){c.value&&c.value.setMissingHandler(U)}function re(U){return L(),U()}function K(...U){return c.value?re(()=>Reflect.apply(c.value.t,null,[...U])):re(()=>"")}function Q(...U){return c.value?Reflect.apply(c.value.rt,null,[...U]):""}function se(...U){return c.value?re(()=>Reflect.apply(c.value.d,null,[...U])):re(()=>"")}function ue(...U){return c.value?re(()=>Reflect.apply(c.value.n,null,[...U])):re(()=>"")}function ke(U){return c.value?c.value.tm(U):{}}function we(U,j){return c.value?c.value.te(U,j):!1}function Ce(U){return c.value?c.value.getLocaleMessage(U):{}}function $e(U,j){c.value&&(c.value.setLocaleMessage(U,j),v.value[U]=j)}function he(U,j){c.value&&c.value.mergeLocaleMessage(U,j)}function je(U){return c.value?c.value.getDateTimeFormat(U):{}}function me(U,j){c.value&&(c.value.setDateTimeFormat(U,j),h.value[U]=j)}function ce(U,j){c.value&&c.value.mergeDateTimeFormat(U,j)}function G(U){return c.value?c.value.getNumberFormat(U):{}}function q(U,j){c.value&&(c.value.setNumberFormat(U,j),b.value[U]=j)}function te(U,j){c.value&&c.value.mergeNumberFormat(U,j)}const _e={get id(){return c.value?c.value.id:-1},locale:E,fallbackLocale:f,messages:T,datetimeFormats:H,numberFormats:O,get inheritLocale(){return c.value?c.value.inheritLocale:p},set inheritLocale(U){c.value&&(c.value.inheritLocale=U)},get availableLocales(){return c.value?c.value.availableLocales:Object.keys(v.value)},get modifiers(){return c.value?c.value.modifiers:M},get pluralRules(){return c.value?c.value.pluralRules:S},get isGlobal(){return c.value?c.value.isGlobal:!1},get missingWarn(){return c.value?c.value.missingWarn:y},set missingWarn(U){c.value&&(c.value.missingWarn=U)},get fallbackWarn(){return c.value?c.value.fallbackWarn:u},set fallbackWarn(U){c.value&&(c.value.missingWarn=U)},get fallbackRoot(){return c.value?c.value.fallbackRoot:C},set fallbackRoot(U){c.value&&(c.value.fallbackRoot=U)},get fallbackFormat(){return c.value?c.value.fallbackFormat:x},set fallbackFormat(U){c.value&&(c.value.fallbackFormat=U)},get warnHtmlMessage(){return c.value?c.value.warnHtmlMessage:F},set warnHtmlMessage(U){c.value&&(c.value.warnHtmlMessage=U)},get escapeParameter(){return c.value?c.value.escapeParameter:N},set escapeParameter(U){c.value&&(c.value.escapeParameter=U)},t:K,getPostTranslationHandler:W,setPostTranslationHandler:ie,getMissingHandler:ve,setMissingHandler:de,rt:Q,d:se,n:ue,tm:ke,te:we,getLocaleMessage:Ce,setLocaleMessage:$e,mergeLocaleMessage:he,getDateTimeFormat:je,setDateTimeFormat:me,mergeDateTimeFormat:ce,getNumberFormat:G,setNumberFormat:q,mergeNumberFormat:te};function Y(U){U.locale.value=g.value,U.fallbackLocale.value=_.value,Object.keys(v.value).forEach(j=>{U.mergeLocaleMessage(j,v.value[j])}),Object.keys(h.value).forEach(j=>{U.mergeDateTimeFormat(j,h.value[j])}),Object.keys(b.value).forEach(j=>{U.mergeNumberFormat(j,b.value[j])}),U.escapeParameter=N,U.fallbackFormat=x,U.fallbackRoot=C,U.fallbackWarn=u,U.missingWarn=y,U.warnHtmlMessage=F}return xH(()=>{if(l.proxy==null||l.proxy.$i18n==null)throw qo(Ro.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const U=c.value=l.proxy.$i18n.__composer;a==="global"?(g.value=U.locale.value,_.value=U.fallbackLocale.value,v.value=U.messages.value,h.value=U.datetimeFormats.value,b.value=U.numberFormats.value):d&&Y(U)}),_e}const tce=["locale","fallbackLocale","availableLocales"],cN=["t","rt","d","n","tm","te"];function ace(l,a){const t=Object.create(null);return tce.forEach(d=>{const c=Object.getOwnPropertyDescriptor(a,d);if(!c)throw qo(Ro.UNEXPECTED_ERROR);const p=ko(c.value)?{get(){return c.value.value},set(g){c.value.value=g}}:{get(){return c.get&&c.get()}};Object.defineProperty(t,d,p)}),l.config.globalProperties.$i18n=t,cN.forEach(d=>{const c=Object.getOwnPropertyDescriptor(a,d);if(!c||!c.value)throw qo(Ro.UNEXPECTED_ERROR);Object.defineProperty(l.config.globalProperties,`$${d}`,c)}),()=>{delete l.config.globalProperties.$i18n,cN.forEach(d=>{delete l.config.globalProperties[`$${d}`]})}}Mde();__INTLIFY_JIT_COMPILATION__?qF(Sde):qF(Cde);gde(Jie);yde(gz);if(__INTLIFY_PROD_DEVTOOLS__){const l=hr();l.__INTLIFY__=!0,ide(l.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const sce=n("div",{class:"absolute left-3 top-0 h-full w-px bg-gray-200"},null,-1),oce=n("div",{class:"absolute left-3 top-1/2 h-px w-3 bg-gray-200"},null,-1),nce={class:"text-primary"},_u=lt({__name:"UserLocation",props:{visible:{type:Boolean,default:!0},theme:{default:"rubick"},layout:{default:"side-menu"}},setup(l){const a=l;ho(a,"visible");const t=ho(a,"theme"),s=ho(a,"layout"),{t:d}=At(),c=Qa(),p=sa(),g=ae(()=>c.userContext),_=ae(()=>p.selectedUserLocation),v=ae(()=>{let C="";return _.value.company.name!=""&&(C=_.value.company.name),_.value.branch.name!=""&&(C+=" - "+_.value.branch.name),C}),h=ae(()=>{let C=0;return g.value.companies.forEach(x=>{C+=1,x.branches&&(C+=x.branches.length)}),C}),b=ae(()=>ss([t.value=="rubick"&&(s.value=="side-menu"||s.value=="simple-menu")&&"hidden mr-auto -intro-x sm:flex",t.value=="rubick"&&s.value=="top-menu"&&"h-full md:ml-10 md:pl-10 md:border-l border-white/[0.08] mr-auto -intro-x",t.value=="icewall"&&"h-full md:ml-10 md:pl-10 md:border-l border-white/[0.08] mr-auto -intro-x",t.value=="enigma"&&"h-full md:ml-10 md:pl-10 md:border-l border-white/[0.08] mr-auto -intro-x",t.value=="tinker"&&(s.value=="side-menu"||s.value=="simple-menu")&&"hidden mr-auto -intro-x sm:flex",t.value=="tinker"&&s.value=="top-menu"&&"h-full md:ml-10 md:pl-10 md:border-l border-white/[0.08] mr-auto -intro-x"])),y=ae(()=>{switch(!0){case(t.value=="rubick"&&(s.value=="side-menu"||s.value=="simple-menu")):return!1;case(t.value=="rubick"&&s.value=="top-menu"):return!0;case t.value=="icewall":return!0;case t.value=="enigma":return!0;case(t.value=="tinker"&&(s.value=="side-menu"||s.value=="simple-menu")):return!1;case(t.value=="tinker"&&s.value=="top-menu"):return!0;default:return!1}});zt(()=>{p.getSelectedUserLocation});const u=(C,x)=>{let z=ls.find(g.value.companies,{id:C});if(!z)return;let P=x==""?ls.find(z.branches,{is_main:!0}):ls.find(z.branches,{id:x});P?(p.clearSelectedUserLocation(),p.setSelectedUserLocation(z.id,z.ulid,z.code,z.name,P.id,P.ulid,P.code,P.name)):(p.clearSelectedUserLocation(),p.setSelectedUserLocation(z.id,z.ulid,z.code,z.name))};return(C,x)=>(k(),Be(e(HM),{light:y.value,class:w(b.value)},{default:i(()=>[o(e(HM).Text,null,{default:i(()=>[o(e(vo),null,{default:i(()=>[o(e(vo).Button,{variant:"primary"},{default:i(()=>[o(e(ee),{icon:"Umbrella"})]),_:1}),o(e(vo).Items,{class:w({"w-96 h-12":h.value==0,"w-96 h-48":h.value>=1&&h.value<=10,"w-96 h-96":h.value&&h.value>10,"overflow-y-auto":!0}),placement:"bottom-start"},{default:i(()=>[g.value.companies&&g.value.companies.length!=0?(k(!0),I(Pe,{key:0},ht(g.value.companies,(z,P)=>(k(),I(Pe,{key:P},[o(e(vo).Item,{onClick:F=>u(z.id,""),class:"relative"},{default:i(()=>[n("span",{class:w({"text-primary font-bold":!0,underline:z.default})},r(z.name),3)]),_:2},1032,["onClick"]),(k(!0),I(Pe,null,ht(z.branches,(F,N)=>(k(),Be(e(vo).Item,{key:N,onClick:M=>u(z.id,F==null?"":F.id),class:"pl-6 relative"},{default:i(()=>[sce,oce,F!=null?(k(),I("span",{key:0,class:w(["pl-1",{"text-primary":!0,underline:F.is_main}])},r(F.name),3)):He("",!0)]),_:2},1032,["onClick"]))),128)),g.value.companies.length-1!=P?(k(),Be(e(vo).Divider,{key:0})):He("",!0)],64))),128)):(k(),Be(e(vo).Item,{key:1},{default:i(()=>[n("span",nce,r(e(d)("components.user-location.data_not_found")),1)]),_:1}))]),_:1},8,["class"])]),_:1})]),_:1}),v.value!=""?(k(),Be(e(HM).Text,{key:0},{default:i(()=>[m(r(v.value),1)]),_:1})):He("",!0)]),_:1},8,["light","class"]))}}),lce={inheritAttrs:!1},rce=lt({...lce,__name:"FormCheck",setup(l){const a=is(),t=ae(()=>ss(["flex items-center",typeof a.class=="string"&&a.class]));return(s,d)=>(k(),I("div",ds({class:t.value},e(ls).omit(e(a),"class")),[Ya(s.$slots,"default")],16))}}),ice=["type"],dce={inheritAttrs:!1},cce=lt({...dce,__name:"Input",props:{modelValue:{},type:{}},emits:["update:modelValue"],setup(l,{emit:a}){const t=l,s=is(),d=ae(()=>ss(["transition-all duration-100 ease-in-out",t.type=="radio"&&"shadow-sm border-slate-200 cursor-pointer focus:ring-4 focus:ring-offset-0 focus:ring-primary focus:ring-opacity-20 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50",t.type=="checkbox"&&"shadow-sm border-slate-200 cursor-pointer rounded focus:ring-4 focus:ring-offset-0 focus:ring-primary focus:ring-opacity-20 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50","[&[type='radio']]:checked:bg-primary [&[type='radio']]:checked:border-primary [&[type='radio']]:checked:border-opacity-10","[&[type='checkbox']]:checked:bg-primary [&[type='checkbox']]:checked:border-primary [&[type='checkbox']]:checked:border-opacity-10","[&:disabled:not(:checked)]:bg-slate-100 [&:disabled:not(:checked)]:cursor-not-allowed [&:disabled:not(:checked)]:dark:bg-darkmode-800/50","[&:disabled:checked]:opacity-70 [&:disabled:checked]:cursor-not-allowed [&:disabled:checked]:dark:bg-darkmode-800/50",typeof s.class=="string"&&s.class])),c=a,p=ae({get(){return t.modelValue},set(g){c("update:modelValue",g)}});return(g,_)=>xn((k(),I("input",ds({class:d.value,type:t.type},e(ls).omit(e(s),"class"),{"onUpdate:modelValue":_[0]||(_[0]=v=>p.value=v)}),null,16,ice)),[[uP,p.value]])}}),uce={inheritAttrs:!1},pce=lt({...uce,__name:"Label",setup(l){const a=is(),t=ae(()=>ss(["cursor-pointer ml-2",typeof a.class=="string"&&a.class]));return(s,d)=>(k(),I("label",ds({class:t.value},e(ls).omit(e(a),"class")),[Ya(s.$slots,"default")],16))}}),an=Object.assign({},rce,{Input:cce,Label:pce}),_ce=["type"],mce={inheritAttrs:!1},Je=lt({...mce,__name:"FormInput",props:{value:{},modelValue:{},formInputSize:{},rounded:{type:Boolean}},emits:["update:modelValue"],setup(l,{emit:a}){const t=l,s=is(),d=Ba("formInline",!1),c=Ba("inputGroup",!1),p=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed dark:disabled:bg-darkmode-800/50 dark:disabled:border-transparent","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50 [&[readonly]]:dark:border-transparent","transition duration-200 ease-in-out w-full text-sm border-slate-200 shadow-sm rounded-md placeholder:text-slate-400/90 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50 dark:placeholder:text-slate-500/80",t.formInputSize=="sm"&&"text-xs py-1.5 px-2",t.formInputSize=="lg"&&"text-lg py-1.5 px-4",t.rounded&&"rounded-full",d&&"flex-1",c&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r z-10",typeof s.class=="string"&&s.class])),g=a,_=ae({get(){return t.modelValue===void 0?t.value:t.modelValue},set(v){g("update:modelValue",v)}});return(v,h)=>xn((k(),I("input",ds({class:p.value,type:t.type},e(ls).omit(e(s),"class"),{"onUpdate:modelValue":h[0]||(h[0]=b=>_.value=b)}),null,16,_ce)),[[uP,_.value]])}}),vce=["type"],hce={inheritAttrs:!1},la=lt({...hce,__name:"FormTextarea",props:{value:{},modelValue:{},formTextareaSize:{},rounded:{type:Boolean}},emits:["update:modelValue"],setup(l,{emit:a}){const t=l,s=is(),d=Ba("formInline",!1),c=Ba("inputGroup",!1),p=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed dark:disabled:bg-darkmode-800/50 dark:disabled:border-transparent","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50 [&[readonly]]:dark:border-transparent","transition duration-200 ease-in-out w-full text-sm border-slate-200 shadow-sm rounded-md placeholder:text-slate-400/90 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50 dark:placeholder:text-slate-500/80",t.formTextareaSize=="sm"&&"text-xs py-1.5 px-2",t.formTextareaSize=="lg"&&"text-lg py-1.5 px-4",t.rounded&&"rounded-full",d&&"flex-1",c&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r z-10",typeof s.class=="string"&&s.class])),g=a,_=ae({get(){return t.modelValue===void 0?t.value:t.modelValue},set(v){g("update:modelValue",v)}});return(v,h)=>xn((k(),I("textarea",ds({type:t.type,class:p.value},e(ls).omit(e(s),"class"),{"onUpdate:modelValue":h[0]||(h[0]=b=>_.value=b)}),null,16,vce)),[[Wl,_.value]])}}),fce={inheritAttrs:!1},V=lt({...fce,__name:"FormLabel",setup(l){const a=is(),t=Ba("formInline",!1),s=ae(()=>ss(["inline-block mb-2",t&&"mb-2 sm:mb-0 sm:mr-5 sm:text-right",typeof a.class=="string"&&a.class]));return(d,c)=>(k(),I("label",ds({class:s.value},e(ls).omit(e(a),"class")),[Ya(d.$slots,"default")],16))}}),gce={inheritAttrs:!1},ja=lt({...gce,__name:"FormSelect",props:{value:{},modelValue:{},formSelectSize:{}},emits:["update:modelValue"],setup(l,{emit:a}){const t=$(),s=l,d=is(),c=Ba("formInline",!1),p=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed disabled:dark:bg-darkmode-800/50","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50","transition duration-200 ease-in-out w-full text-sm border-slate-200 shadow-sm rounded-md py-2 px-3 pr-8 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50",s.formSelectSize=="sm"&&"text-xs py-1.5 pl-2 pr-8",s.formSelectSize=="lg"&&"text-lg py-1.5 pl-4 pr-8",c&&"flex-1",typeof d.class=="string"&&d.class])),g=a,_=ae({get(){var v;if(s.modelValue===void 0&&s.value===void 0){const h=(v=t.value)==null?void 0:v.querySelectorAll("option")[0];return h!==void 0&&(h.getAttribute("value")!==null?h.getAttribute("value"):h.text)}return s.modelValue===void 0?s.value:s.modelValue},set(v){g("update:modelValue",v)}});return(v,h)=>xn((k(),I("select",ds({ref_key:"selectRef",ref:t,class:p.value},e(ls).omit(e(d),"class"),{"onUpdate:modelValue":h[0]||(h[0]=b=>_.value=b)}),[Ya(v.$slots,"default")],16)),[[YH,_.value]])}}),yce=["readonly"],bce=["onMousedown"],wce={inheritAttrs:!1},Ut=lt({...wce,__name:"FormSelectSearch",props:{modelValue:{},options:{},formInputSize:{},rounded:{type:Boolean}},emits:["update:modelValue","change","update:search","search","clear"],setup(l,{emit:a}){const t=l,s=a,d=is(),c=Ba("formInline",!1),p=Ba("inputGroup",!1),g=$(null),_=$(null),v=$(!1),h=$(!1),b=$(""),y=$({top:"0px",left:"0px",width:"0px"}),u=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed dark:disabled:bg-darkmode-800/50 dark:disabled:border-transparent","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50 [&[readonly]]:dark:border-transparent","transition duration-200 ease-in-out w-full text-sm border-slate-200 shadow-sm rounded-md placeholder:text-slate-400/90 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50 dark:placeholder:text-slate-500/80",t.formInputSize=="sm"&&"text-xs py-1.5 px-2",t.formInputSize=="lg"&&"text-lg py-1.5 px-4",t.rounded&&"rounded-full",c&&"flex-1",p&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r z-10","pr-8",typeof d.class=="string"&&d.class])),C=ae(()=>!t.options||t.modelValue===void 0||t.modelValue===null?null:t.options.find(O=>O.value===t.modelValue)??null),x=ae(()=>t.options??[]),z=ae(()=>C.value!==null),P=ae(()=>t.modelValue!==void 0&&t.modelValue!==null&&t.modelValue!=="");ra(()=>[t.modelValue,t.options],()=>{v.value||(b.value=C.value?C.value.label:"")},{immediate:!0});const F=ls.debounce(O=>{s("update:search",O),s("search",O)},300),N=()=>{const O=g.value??_.value;if(!O)return;const W=O.getBoundingClientRect();y.value={top:`${W.bottom+4}px`,left:`${W.left}px`,width:`${W.width}px`}},M=()=>{window.addEventListener("resize",N),window.addEventListener("scroll",N,!0)},S=()=>{window.removeEventListener("resize",N),window.removeEventListener("scroll",N,!0)},L=O=>{if(z.value)return;const ie=O.target.value;b.value=ie,h.value=!0,N(),F(ie)},E=async()=>{z.value||(v.value=!0,h.value=!0,await vs(),N())},f=()=>{v.value=!1,h.value=!1,b.value=C.value?C.value.label:b.value},T=O=>{s("update:modelValue",O.value),s("change",O.value),b.value=O.label,h.value=!1,v.value=!1},H=()=>{s("update:modelValue",null),s("change",null),b.value="",h.value=!1,v.value=!1,s("update:search",""),s("search",""),s("clear")};return ra(h,async O=>{if(O){await vs(),N(),M();return}S()}),RI(()=>{S(),F.cancel()}),(O,W)=>(k(),I("div",{ref_key:"wrapperRef",ref:g,class:"relative"},[xn(n("input",ds({ref_key:"inputRef",ref:_,class:u.value,type:"text"},e(ls).omit(e(d),"class"),{"onUpdate:modelValue":W[0]||(W[0]=ie=>b.value=ie),readonly:z.value,onFocus:E,onBlur:f,onInput:L}),null,16,yce),[[Wl,b.value]]),P.value?(k(),I("button",{key:0,type:"button",class:"absolute inset-y-0 right-0 flex items-center pr-3 text-slate-500 hover:text-danger",onMousedown:da(H,["prevent","stop"])},[o(e(ee),{icon:"X",class:"w-4 h-4"})],32)):He("",!0),(k(),Be(UH,{to:"body"},[h.value&&x.value.length>0?(k(),I("ul",{key:0,style:bi(y.value),class:"fixed z-[9999] max-h-60 overflow-auto rounded-md border border-slate-200 bg-white text-sm shadow-lg dark:border-slate-600 dark:bg-darkmode-800"},[(k(!0),I(Pe,null,ht(x.value,ie=>(k(),I("li",{key:ie.value,class:"cursor-pointer px-3 py-2 hover:bg-slate-100 dark:hover:bg-darkmode-700",onMousedown:da(ve=>T(ie),["prevent"])},r(ie.label),41,bce))),128))],4)):He("",!0)]))],512))}}),kce=lt({__name:"FormSwitch",setup(l){return(a,t)=>(k(),Be(e(an),null,{default:i(()=>[Ya(a.$slots,"default")]),_:3}))}}),xce={inheritAttrs:!1},$ce=lt({...xce,__name:"Input",props:{modelValue:{},type:{}},emits:["update:modelValue"],setup(l,{emit:a}){const t=l,s=is(),d=ae(()=>ss(["w-[38px] h-[24px] p-px rounded-full relative","before:w-[20px] before:h-[20px] before:shadow-[1px_1px_3px_rgba(0,0,0,0.25)] before:transition-[margin-left] before:duration-200 before:ease-in-out before:absolute before:inset-y-0 before:my-auto before:rounded-full before:dark:bg-darkmode-600","checked:bg-primary checked:border-primary checked:bg-none","before:checked:ml-[14px] before:checked:bg-white",typeof s.class=="string"&&s.class])),c=a,p=ae({get(){return t.modelValue},set(g){c("update:modelValue",g)}});return(g,_)=>(k(),Be(e(an).Input,ds({type:t.type,class:d.value},e(ls).omit(e(s),"class"),{modelValue:p.value,"onUpdate:modelValue":_[0]||(_[0]=v=>p.value=v)}),null,16,["type","class","modelValue"]))}}),Cce=lt({__name:"Label",setup(l){return(a,t)=>(k(),Be(e(an).Label,null,{default:i(()=>[Ya(a.$slots,"default")]),_:3}))}}),ia=Object.assign({},kce,{Input:$ce,Label:Cce}),Sce={inheritAttrs:!1},Ece=lt({...Sce,__name:"InputGroup",setup(l){const a=is(),t=ae(()=>ss(["flex",typeof a.class=="string"&&a.class]));return ka("inputGroup",!0),(s,d)=>(k(),I("div",ds({class:t.value},e(ls).omit(e(a),"class")),[Ya(s.$slots,"default")],16))}}),Ace={inheritAttrs:!1},Lce=lt({...Ace,__name:"Text",setup(l){const a=is(),t=Ba("inputGroup"),s=ae(()=>ss(["py-2 px-3 bg-slate-100 border shadow-sm border-slate-200 text-slate-600 dark:bg-darkmode-900/20 dark:border-darkmode-900/20 dark:text-slate-400",t&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r",typeof a.class=="string"&&a.class]));return(d,c)=>(k(),I("div",ds({class:s.value},e(ls).omit(e(a),"class")),[Ya(d.$slots,"default")],16))}});Object.assign({},Ece,{Text:Lce});function Oz(l,a){return function(){return l.apply(a,arguments)}}const{toString:Ice}=Object.prototype,{getPrototypeOf:FP}=Object,aV=(l=>a=>{const t=Ice.call(a);return l[t]||(l[t]=t.slice(8,-1).toLowerCase())})(Object.create(null)),Xl=l=>(l=l.toLowerCase(),a=>aV(a)===l),sV=l=>a=>typeof a===l,{isArray:mu}=Array,Sp=sV("undefined");function Vce(l){return l!==null&&!Sp(l)&&l.constructor!==null&&!Sp(l.constructor)&&ol(l.constructor.isBuffer)&&l.constructor.isBuffer(l)}const Fz=Xl("ArrayBuffer");function Mce(l){let a;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?a=ArrayBuffer.isView(l):a=l&&l.buffer&&Fz(l.buffer),a}const Tce=sV("string"),ol=sV("function"),Nz=sV("number"),oV=l=>l!==null&&typeof l=="object",Dce=l=>l===!0||l===!1,W7=l=>{if(aV(l)!=="object")return!1;const a=FP(l);return(a===null||a===Object.prototype||Object.getPrototypeOf(a)===null)&&!(Symbol.toStringTag in l)&&!(Symbol.iterator in l)},Pce=Xl("Date"),Uce=Xl("File"),Rce=Xl("Blob"),Oce=Xl("FileList"),Fce=l=>oV(l)&&ol(l.pipe),Nce=l=>{let a;return l&&(typeof FormData=="function"&&l instanceof FormData||ol(l.append)&&((a=aV(l))==="formdata"||a==="object"&&ol(l.toString)&&l.toString()==="[object FormData]"))},jce=Xl("URLSearchParams"),Hce=l=>l.trim?l.trim():l.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function zp(l,a,{allOwnKeys:t=!1}={}){if(l===null||typeof l>"u")return;let s,d;if(typeof l!="object"&&(l=[l]),mu(l))for(s=0,d=l.length;s0;)if(d=t[s],a===d.toLowerCase())return d;return null}const Hz=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,qz=l=>!Sp(l)&&l!==Hz;function iD(){const{caseless:l}=qz(this)&&this||{},a={},t=(s,d)=>{const c=l&&jz(a,d)||d;W7(a[c])&&W7(s)?a[c]=iD(a[c],s):W7(s)?a[c]=iD({},s):mu(s)?a[c]=s.slice():a[c]=s};for(let s=0,d=arguments.length;s(zp(a,(d,c)=>{t&&ol(d)?l[c]=Oz(d,t):l[c]=d},{allOwnKeys:s}),l),zce=l=>(l.charCodeAt(0)===65279&&(l=l.slice(1)),l),Bce=(l,a,t,s)=>{l.prototype=Object.create(a.prototype,s),l.prototype.constructor=l,Object.defineProperty(l,"super",{value:a.prototype}),t&&Object.assign(l.prototype,t)},Gce=(l,a,t,s)=>{let d,c,p;const g={};if(a=a||{},l==null)return a;do{for(d=Object.getOwnPropertyNames(l),c=d.length;c-- >0;)p=d[c],(!s||s(p,l,a))&&!g[p]&&(a[p]=l[p],g[p]=!0);l=t!==!1&&FP(l)}while(l&&(!t||t(l,a))&&l!==Object.prototype);return a},Wce=(l,a,t)=>{l=String(l),(t===void 0||t>l.length)&&(t=l.length),t-=a.length;const s=l.indexOf(a,t);return s!==-1&&s===t},Zce=l=>{if(!l)return null;if(mu(l))return l;let a=l.length;if(!Nz(a))return null;const t=new Array(a);for(;a-- >0;)t[a]=l[a];return t},Kce=(l=>a=>l&&a instanceof l)(typeof Uint8Array<"u"&&FP(Uint8Array)),Yce=(l,a)=>{const s=(l&&l[Symbol.iterator]).call(l);let d;for(;(d=s.next())&&!d.done;){const c=d.value;a.call(l,c[0],c[1])}},Xce=(l,a)=>{let t;const s=[];for(;(t=l.exec(a))!==null;)s.push(t);return s},Qce=Xl("HTMLFormElement"),Jce=l=>l.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(t,s,d){return s.toUpperCase()+d}),uN=(({hasOwnProperty:l})=>(a,t)=>l.call(a,t))(Object.prototype),eue=Xl("RegExp"),zz=(l,a)=>{const t=Object.getOwnPropertyDescriptors(l),s={};zp(t,(d,c)=>{let p;(p=a(d,c,l))!==!1&&(s[c]=p||d)}),Object.defineProperties(l,s)},tue=l=>{zz(l,(a,t)=>{if(ol(l)&&["arguments","caller","callee"].indexOf(t)!==-1)return!1;const s=l[t];if(ol(s)){if(a.enumerable=!1,"writable"in a){a.writable=!1;return}a.set||(a.set=()=>{throw Error("Can not rewrite read-only method '"+t+"'")})}})},aue=(l,a)=>{const t={},s=d=>{d.forEach(c=>{t[c]=!0})};return mu(l)?s(l):s(String(l).split(a)),t},sue=()=>{},oue=(l,a)=>(l=+l,Number.isFinite(l)?l:a),ZM="abcdefghijklmnopqrstuvwxyz",pN="0123456789",Bz={DIGIT:pN,ALPHA:ZM,ALPHA_DIGIT:ZM+ZM.toUpperCase()+pN},nue=(l=16,a=Bz.ALPHA_DIGIT)=>{let t="";const{length:s}=a;for(;l--;)t+=a[Math.random()*s|0];return t};function lue(l){return!!(l&&ol(l.append)&&l[Symbol.toStringTag]==="FormData"&&l[Symbol.iterator])}const rue=l=>{const a=new Array(10),t=(s,d)=>{if(oV(s)){if(a.indexOf(s)>=0)return;if(!("toJSON"in s)){a[d]=s;const c=mu(s)?[]:{};return zp(s,(p,g)=>{const _=t(p,d+1);!Sp(_)&&(c[g]=_)}),a[d]=void 0,c}}return s};return t(l,0)},iue=Xl("AsyncFunction"),due=l=>l&&(oV(l)||ol(l))&&ol(l.then)&&ol(l.catch),ba={isArray:mu,isArrayBuffer:Fz,isBuffer:Vce,isFormData:Nce,isArrayBufferView:Mce,isString:Tce,isNumber:Nz,isBoolean:Dce,isObject:oV,isPlainObject:W7,isUndefined:Sp,isDate:Pce,isFile:Uce,isBlob:Rce,isRegExp:eue,isFunction:ol,isStream:Fce,isURLSearchParams:jce,isTypedArray:Kce,isFileList:Oce,forEach:zp,merge:iD,extend:qce,trim:Hce,stripBOM:zce,inherits:Bce,toFlatObject:Gce,kindOf:aV,kindOfTest:Xl,endsWith:Wce,toArray:Zce,forEachEntry:Yce,matchAll:Xce,isHTMLForm:Qce,hasOwnProperty:uN,hasOwnProp:uN,reduceDescriptors:zz,freezeMethods:tue,toObjectSet:aue,toCamelCase:Jce,noop:sue,toFiniteNumber:oue,findKey:jz,global:Hz,isContextDefined:qz,ALPHABET:Bz,generateString:nue,isSpecCompliantForm:lue,toJSONObject:rue,isAsyncFn:iue,isThenable:due};function Rs(l,a,t,s,d){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=l,this.name="AxiosError",a&&(this.code=a),t&&(this.config=t),s&&(this.request=s),d&&(this.response=d)}ba.inherits(Rs,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:ba.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Gz=Rs.prototype,Wz={};["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(l=>{Wz[l]={value:l}});Object.defineProperties(Rs,Wz);Object.defineProperty(Gz,"isAxiosError",{value:!0});Rs.from=(l,a,t,s,d,c)=>{const p=Object.create(Gz);return ba.toFlatObject(l,p,function(_){return _!==Error.prototype},g=>g!=="isAxiosError"),Rs.call(p,l.message,a,t,s,d),p.cause=l,p.name=l.name,c&&Object.assign(p,c),p};const cue=null;function dD(l){return ba.isPlainObject(l)||ba.isArray(l)}function Zz(l){return ba.endsWith(l,"[]")?l.slice(0,-2):l}function _N(l,a,t){return l?l.concat(a).map(function(d,c){return d=Zz(d),!t&&c?"["+d+"]":d}).join(t?".":""):a}function uue(l){return ba.isArray(l)&&!l.some(dD)}const pue=ba.toFlatObject(ba,{},null,function(a){return/^is[A-Z]/.test(a)});function nV(l,a,t){if(!ba.isObject(l))throw new TypeError("target must be an object");a=a||new FormData,t=ba.toFlatObject(t,{metaTokens:!0,dots:!1,indexes:!1},!1,function(x,z){return!ba.isUndefined(z[x])});const s=t.metaTokens,d=t.visitor||h,c=t.dots,p=t.indexes,_=(t.Blob||typeof Blob<"u"&&Blob)&&ba.isSpecCompliantForm(a);if(!ba.isFunction(d))throw new TypeError("visitor must be a function");function v(C){if(C===null)return"";if(ba.isDate(C))return C.toISOString();if(!_&&ba.isBlob(C))throw new Rs("Blob is not supported. Use a Buffer instead.");return ba.isArrayBuffer(C)||ba.isTypedArray(C)?_&&typeof Blob=="function"?new Blob([C]):Buffer.from(C):C}function h(C,x,z){let P=C;if(C&&!z&&typeof C=="object"){if(ba.endsWith(x,"{}"))x=s?x:x.slice(0,-2),C=JSON.stringify(C);else if(ba.isArray(C)&&uue(C)||(ba.isFileList(C)||ba.endsWith(x,"[]"))&&(P=ba.toArray(C)))return x=Zz(x),P.forEach(function(N,M){!(ba.isUndefined(N)||N===null)&&a.append(p===!0?_N([x],M,c):p===null?x:x+"[]",v(N))}),!1}return dD(C)?!0:(a.append(_N(z,x,c),v(C)),!1)}const b=[],y=Object.assign(pue,{defaultVisitor:h,convertValue:v,isVisitable:dD});function u(C,x){if(!ba.isUndefined(C)){if(b.indexOf(C)!==-1)throw Error("Circular reference detected in "+x.join("."));b.push(C),ba.forEach(C,function(P,F){(!(ba.isUndefined(P)||P===null)&&d.call(a,P,ba.isString(F)?F.trim():F,x,y))===!0&&u(P,x?x.concat(F):[F])}),b.pop()}}if(!ba.isObject(l))throw new TypeError("data must be an object");return u(l),a}function mN(l){const a={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(l).replace(/[!'()~]|%20|%00/g,function(s){return a[s]})}function NP(l,a){this._pairs=[],l&&nV(l,this,a)}const Kz=NP.prototype;Kz.append=function(a,t){this._pairs.push([a,t])};Kz.toString=function(a){const t=a?function(s){return a.call(this,s,mN)}:mN;return this._pairs.map(function(d){return t(d[0])+"="+t(d[1])},"").join("&")};function _ue(l){return encodeURIComponent(l).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Yz(l,a,t){if(!a)return l;const s=t&&t.encode||_ue,d=t&&t.serialize;let c;if(d?c=d(a,t):c=ba.isURLSearchParams(a)?a.toString():new NP(a,t).toString(s),c){const p=l.indexOf("#");p!==-1&&(l=l.slice(0,p)),l+=(l.indexOf("?")===-1?"?":"&")+c}return l}class vN{constructor(){this.handlers=[]}use(a,t,s){return this.handlers.push({fulfilled:a,rejected:t,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(a){this.handlers[a]&&(this.handlers[a]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(a){ba.forEach(this.handlers,function(s){s!==null&&a(s)})}}const Xz={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},mue=typeof URLSearchParams<"u"?URLSearchParams:NP,vue=typeof FormData<"u"?FormData:null,hue=typeof Blob<"u"?Blob:null,fue={isBrowser:!0,classes:{URLSearchParams:mue,FormData:vue,Blob:hue},protocols:["http","https","file","blob","url","data"]},Qz=typeof window<"u"&&typeof document<"u",gue=(l=>Qz&&["ReactNative","NativeScript","NS"].indexOf(l)<0)(typeof navigator<"u"&&navigator.product),yue=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",bue=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Qz,hasStandardBrowserEnv:gue,hasStandardBrowserWebWorkerEnv:yue},Symbol.toStringTag,{value:"Module"})),ql={...bue,...fue};function wue(l,a){return nV(l,new ql.classes.URLSearchParams,Object.assign({visitor:function(t,s,d,c){return ql.isNode&&ba.isBuffer(t)?(this.append(s,t.toString("base64")),!1):c.defaultVisitor.apply(this,arguments)}},a))}function kue(l){return ba.matchAll(/\w+|\[(\w*)]/g,l).map(a=>a[0]==="[]"?"":a[1]||a[0])}function xue(l){const a={},t=Object.keys(l);let s;const d=t.length;let c;for(s=0;s=t.length;return p=!p&&ba.isArray(d)?d.length:p,_?(ba.hasOwnProp(d,p)?d[p]=[d[p],s]:d[p]=s,!g):((!d[p]||!ba.isObject(d[p]))&&(d[p]=[]),a(t,s,d[p],c)&&ba.isArray(d[p])&&(d[p]=xue(d[p])),!g)}if(ba.isFormData(l)&&ba.isFunction(l.entries)){const t={};return ba.forEachEntry(l,(s,d)=>{a(kue(s),d,t,0)}),t}return null}function $ue(l,a,t){if(ba.isString(l))try{return(a||JSON.parse)(l),ba.trim(l)}catch(s){if(s.name!=="SyntaxError")throw s}return(t||JSON.stringify)(l)}const jP={transitional:Xz,adapter:["xhr","http"],transformRequest:[function(a,t){const s=t.getContentType()||"",d=s.indexOf("application/json")>-1,c=ba.isObject(a);if(c&&ba.isHTMLForm(a)&&(a=new FormData(a)),ba.isFormData(a))return d?JSON.stringify(Jz(a)):a;if(ba.isArrayBuffer(a)||ba.isBuffer(a)||ba.isStream(a)||ba.isFile(a)||ba.isBlob(a))return a;if(ba.isArrayBufferView(a))return a.buffer;if(ba.isURLSearchParams(a))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),a.toString();let g;if(c){if(s.indexOf("application/x-www-form-urlencoded")>-1)return wue(a,this.formSerializer).toString();if((g=ba.isFileList(a))||s.indexOf("multipart/form-data")>-1){const _=this.env&&this.env.FormData;return nV(g?{"files[]":a}:a,_&&new _,this.formSerializer)}}return c||d?(t.setContentType("application/json",!1),$ue(a)):a}],transformResponse:[function(a){const t=this.transitional||jP.transitional,s=t&&t.forcedJSONParsing,d=this.responseType==="json";if(a&&ba.isString(a)&&(s&&!this.responseType||d)){const p=!(t&&t.silentJSONParsing)&&d;try{return JSON.parse(a)}catch(g){if(p)throw g.name==="SyntaxError"?Rs.from(g,Rs.ERR_BAD_RESPONSE,this,null,this.response):g}}return a}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ql.classes.FormData,Blob:ql.classes.Blob},validateStatus:function(a){return a>=200&&a<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ba.forEach(["delete","get","head","post","put","patch"],l=>{jP.headers[l]={}});const HP=jP,Cue=ba.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"]),Sue=l=>{const a={};let t,s,d;return l&&l.split(` +`).forEach(function(p){d=p.indexOf(":"),t=p.substring(0,d).trim().toLowerCase(),s=p.substring(d+1).trim(),!(!t||a[t]&&Cue[t])&&(t==="set-cookie"?a[t]?a[t].push(s):a[t]=[s]:a[t]=a[t]?a[t]+", "+s:s)}),a},hN=Symbol("internals");function qu(l){return l&&String(l).trim().toLowerCase()}function Z7(l){return l===!1||l==null?l:ba.isArray(l)?l.map(Z7):String(l)}function Eue(l){const a=Object.create(null),t=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=t.exec(l);)a[s[1]]=s[2];return a}const Aue=l=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(l.trim());function KM(l,a,t,s,d){if(ba.isFunction(s))return s.call(this,a,t);if(d&&(a=t),!!ba.isString(a)){if(ba.isString(s))return a.indexOf(s)!==-1;if(ba.isRegExp(s))return s.test(a)}}function Lue(l){return l.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(a,t,s)=>t.toUpperCase()+s)}function Iue(l,a){const t=ba.toCamelCase(" "+a);["get","set","has"].forEach(s=>{Object.defineProperty(l,s+t,{value:function(d,c,p){return this[s].call(this,a,d,c,p)},configurable:!0})})}let lV=class{constructor(a){a&&this.set(a)}set(a,t,s){const d=this;function c(g,_,v){const h=qu(_);if(!h)throw new Error("header name must be a non-empty string");const b=ba.findKey(d,h);(!b||d[b]===void 0||v===!0||v===void 0&&d[b]!==!1)&&(d[b||_]=Z7(g))}const p=(g,_)=>ba.forEach(g,(v,h)=>c(v,h,_));return ba.isPlainObject(a)||a instanceof this.constructor?p(a,t):ba.isString(a)&&(a=a.trim())&&!Aue(a)?p(Sue(a),t):a!=null&&c(t,a,s),this}get(a,t){if(a=qu(a),a){const s=ba.findKey(this,a);if(s){const d=this[s];if(!t)return d;if(t===!0)return Eue(d);if(ba.isFunction(t))return t.call(this,d,s);if(ba.isRegExp(t))return t.exec(d);throw new TypeError("parser must be boolean|regexp|function")}}}has(a,t){if(a=qu(a),a){const s=ba.findKey(this,a);return!!(s&&this[s]!==void 0&&(!t||KM(this,this[s],s,t)))}return!1}delete(a,t){const s=this;let d=!1;function c(p){if(p=qu(p),p){const g=ba.findKey(s,p);g&&(!t||KM(s,s[g],g,t))&&(delete s[g],d=!0)}}return ba.isArray(a)?a.forEach(c):c(a),d}clear(a){const t=Object.keys(this);let s=t.length,d=!1;for(;s--;){const c=t[s];(!a||KM(this,this[c],c,a,!0))&&(delete this[c],d=!0)}return d}normalize(a){const t=this,s={};return ba.forEach(this,(d,c)=>{const p=ba.findKey(s,c);if(p){t[p]=Z7(d),delete t[c];return}const g=a?Lue(c):String(c).trim();g!==c&&delete t[c],t[g]=Z7(d),s[g]=!0}),this}concat(...a){return this.constructor.concat(this,...a)}toJSON(a){const t=Object.create(null);return ba.forEach(this,(s,d)=>{s!=null&&s!==!1&&(t[d]=a&&ba.isArray(s)?s.join(", "):s)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([a,t])=>a+": "+t).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(a){return a instanceof this?a:new this(a)}static concat(a,...t){const s=new this(a);return t.forEach(d=>s.set(d)),s}static accessor(a){const s=(this[hN]=this[hN]={accessors:{}}).accessors,d=this.prototype;function c(p){const g=qu(p);s[g]||(Iue(d,p),s[g]=!0)}return ba.isArray(a)?a.forEach(c):c(a),this}};lV.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);ba.reduceDescriptors(lV.prototype,({value:l},a)=>{let t=a[0].toUpperCase()+a.slice(1);return{get:()=>l,set(s){this[t]=s}}});ba.freezeMethods(lV);const wr=lV;function YM(l,a){const t=this||HP,s=a||t,d=wr.from(s.headers);let c=s.data;return ba.forEach(l,function(g){c=g.call(t,c,d.normalize(),a?a.status:void 0)}),d.normalize(),c}function eB(l){return!!(l&&l.__CANCEL__)}function Bp(l,a,t){Rs.call(this,l??"canceled",Rs.ERR_CANCELED,a,t),this.name="CanceledError"}ba.inherits(Bp,Rs,{__CANCEL__:!0});function Vue(l,a,t){const s=t.config.validateStatus;!t.status||!s||s(t.status)?l(t):a(new Rs("Request failed with status code "+t.status,[Rs.ERR_BAD_REQUEST,Rs.ERR_BAD_RESPONSE][Math.floor(t.status/100)-4],t.config,t.request,t))}const Mue=ql.hasStandardBrowserEnv?{write(l,a,t,s,d,c){const p=[l+"="+encodeURIComponent(a)];ba.isNumber(t)&&p.push("expires="+new Date(t).toGMTString()),ba.isString(s)&&p.push("path="+s),ba.isString(d)&&p.push("domain="+d),c===!0&&p.push("secure"),document.cookie=p.join("; ")},read(l){const a=document.cookie.match(new RegExp("(^|;\\s*)("+l+")=([^;]*)"));return a?decodeURIComponent(a[3]):null},remove(l){this.write(l,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Tue(l){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(l)}function Due(l,a){return a?l.replace(/\/?\/$/,"")+"/"+a.replace(/^\/+/,""):l}function tB(l,a){return l&&!Tue(a)?Due(l,a):a}const Pue=ql.hasStandardBrowserEnv?function(){const a=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let s;function d(c){let p=c;return a&&(t.setAttribute("href",p),p=t.href),t.setAttribute("href",p),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:t.pathname.charAt(0)==="/"?t.pathname:"/"+t.pathname}}return s=d(window.location.href),function(p){const g=ba.isString(p)?d(p):p;return g.protocol===s.protocol&&g.host===s.host}}():function(){return function(){return!0}}();function Uue(l){const a=/^([-+\w]{1,25})(:?\/\/|:)/.exec(l);return a&&a[1]||""}function Rue(l,a){l=l||10;const t=new Array(l),s=new Array(l);let d=0,c=0,p;return a=a!==void 0?a:1e3,function(_){const v=Date.now(),h=s[c];p||(p=v),t[d]=_,s[d]=v;let b=c,y=0;for(;b!==d;)y+=t[b++],b=b%l;if(d=(d+1)%l,d===c&&(c=(c+1)%l),v-p{const c=d.loaded,p=d.lengthComputable?d.total:void 0,g=c-t,_=s(g),v=c<=p;t=c;const h={loaded:c,total:p,progress:p?c/p:void 0,bytes:g,rate:_||void 0,estimated:_&&p&&v?(p-c)/_:void 0,event:d};h[a?"download":"upload"]=!0,l(h)}}const Oue=typeof XMLHttpRequest<"u",Fue=Oue&&function(l){return new Promise(function(t,s){let d=l.data;const c=wr.from(l.headers).normalize();let{responseType:p,withXSRFToken:g}=l,_;function v(){l.cancelToken&&l.cancelToken.unsubscribe(_),l.signal&&l.signal.removeEventListener("abort",_)}let h;if(ba.isFormData(d)){if(ql.hasStandardBrowserEnv||ql.hasStandardBrowserWebWorkerEnv)c.setContentType(!1);else if((h=c.getContentType())!==!1){const[x,...z]=h?h.split(";").map(P=>P.trim()).filter(Boolean):[];c.setContentType([x||"multipart/form-data",...z].join("; "))}}let b=new XMLHttpRequest;if(l.auth){const x=l.auth.username||"",z=l.auth.password?unescape(encodeURIComponent(l.auth.password)):"";c.set("Authorization","Basic "+btoa(x+":"+z))}const y=tB(l.baseURL,l.url);b.open(l.method.toUpperCase(),Yz(y,l.params,l.paramsSerializer),!0),b.timeout=l.timeout;function u(){if(!b)return;const x=wr.from("getAllResponseHeaders"in b&&b.getAllResponseHeaders()),P={data:!p||p==="text"||p==="json"?b.responseText:b.response,status:b.status,statusText:b.statusText,headers:x,config:l,request:b};Vue(function(N){t(N),v()},function(N){s(N),v()},P),b=null}if("onloadend"in b?b.onloadend=u:b.onreadystatechange=function(){!b||b.readyState!==4||b.status===0&&!(b.responseURL&&b.responseURL.indexOf("file:")===0)||setTimeout(u)},b.onabort=function(){b&&(s(new Rs("Request aborted",Rs.ECONNABORTED,l,b)),b=null)},b.onerror=function(){s(new Rs("Network Error",Rs.ERR_NETWORK,l,b)),b=null},b.ontimeout=function(){let z=l.timeout?"timeout of "+l.timeout+"ms exceeded":"timeout exceeded";const P=l.transitional||Xz;l.timeoutErrorMessage&&(z=l.timeoutErrorMessage),s(new Rs(z,P.clarifyTimeoutError?Rs.ETIMEDOUT:Rs.ECONNABORTED,l,b)),b=null},ql.hasStandardBrowserEnv&&(g&&ba.isFunction(g)&&(g=g(l)),g||g!==!1&&Pue(y))){const x=l.xsrfHeaderName&&l.xsrfCookieName&&Mue.read(l.xsrfCookieName);x&&c.set(l.xsrfHeaderName,x)}d===void 0&&c.setContentType(null),"setRequestHeader"in b&&ba.forEach(c.toJSON(),function(z,P){b.setRequestHeader(P,z)}),ba.isUndefined(l.withCredentials)||(b.withCredentials=!!l.withCredentials),p&&p!=="json"&&(b.responseType=l.responseType),typeof l.onDownloadProgress=="function"&&b.addEventListener("progress",fN(l.onDownloadProgress,!0)),typeof l.onUploadProgress=="function"&&b.upload&&b.upload.addEventListener("progress",fN(l.onUploadProgress)),(l.cancelToken||l.signal)&&(_=x=>{b&&(s(!x||x.type?new Bp(null,l,b):x),b.abort(),b=null)},l.cancelToken&&l.cancelToken.subscribe(_),l.signal&&(l.signal.aborted?_():l.signal.addEventListener("abort",_)));const C=Uue(y);if(C&&ql.protocols.indexOf(C)===-1){s(new Rs("Unsupported protocol "+C+":",Rs.ERR_BAD_REQUEST,l));return}b.send(d||null)})},cD={http:cue,xhr:Fue};ba.forEach(cD,(l,a)=>{if(l){try{Object.defineProperty(l,"name",{value:a})}catch{}Object.defineProperty(l,"adapterName",{value:a})}});const gN=l=>`- ${l}`,Nue=l=>ba.isFunction(l)||l===null||l===!1,aB={getAdapter:l=>{l=ba.isArray(l)?l:[l];const{length:a}=l;let t,s;const d={};for(let c=0;c`adapter ${g} `+(_===!1?"is not supported by the environment":"is not available in the build"));let p=a?c.length>1?`since : +`+c.map(gN).join(` +`):" "+gN(c[0]):"as no adapter specified";throw new Rs("There is no suitable adapter to dispatch the request "+p,"ERR_NOT_SUPPORT")}return s},adapters:cD};function XM(l){if(l.cancelToken&&l.cancelToken.throwIfRequested(),l.signal&&l.signal.aborted)throw new Bp(null,l)}function yN(l){return XM(l),l.headers=wr.from(l.headers),l.data=YM.call(l,l.transformRequest),["post","put","patch"].indexOf(l.method)!==-1&&l.headers.setContentType("application/x-www-form-urlencoded",!1),aB.getAdapter(l.adapter||HP.adapter)(l).then(function(s){return XM(l),s.data=YM.call(l,l.transformResponse,s),s.headers=wr.from(s.headers),s},function(s){return eB(s)||(XM(l),s&&s.response&&(s.response.data=YM.call(l,l.transformResponse,s.response),s.response.headers=wr.from(s.response.headers))),Promise.reject(s)})}const bN=l=>l instanceof wr?{...l}:l;function nu(l,a){a=a||{};const t={};function s(v,h,b){return ba.isPlainObject(v)&&ba.isPlainObject(h)?ba.merge.call({caseless:b},v,h):ba.isPlainObject(h)?ba.merge({},h):ba.isArray(h)?h.slice():h}function d(v,h,b){if(ba.isUndefined(h)){if(!ba.isUndefined(v))return s(void 0,v,b)}else return s(v,h,b)}function c(v,h){if(!ba.isUndefined(h))return s(void 0,h)}function p(v,h){if(ba.isUndefined(h)){if(!ba.isUndefined(v))return s(void 0,v)}else return s(void 0,h)}function g(v,h,b){if(b in a)return s(v,h);if(b in l)return s(void 0,v)}const _={url:c,method:c,data:c,baseURL:p,transformRequest:p,transformResponse:p,paramsSerializer:p,timeout:p,timeoutMessage:p,withCredentials:p,withXSRFToken:p,adapter:p,responseType:p,xsrfCookieName:p,xsrfHeaderName:p,onUploadProgress:p,onDownloadProgress:p,decompress:p,maxContentLength:p,maxBodyLength:p,beforeRedirect:p,transport:p,httpAgent:p,httpsAgent:p,cancelToken:p,socketPath:p,responseEncoding:p,validateStatus:g,headers:(v,h)=>d(bN(v),bN(h),!0)};return ba.forEach(Object.keys(Object.assign({},l,a)),function(h){const b=_[h]||d,y=b(l[h],a[h],h);ba.isUndefined(y)&&b!==g||(t[h]=y)}),t}const sB="1.6.8",qP={};["object","boolean","number","function","string","symbol"].forEach((l,a)=>{qP[l]=function(s){return typeof s===l||"a"+(a<1?"n ":" ")+l}});const wN={};qP.transitional=function(a,t,s){function d(c,p){return"[Axios v"+sB+"] Transitional option '"+c+"'"+p+(s?". "+s:"")}return(c,p,g)=>{if(a===!1)throw new Rs(d(p," has been removed"+(t?" in "+t:"")),Rs.ERR_DEPRECATED);return t&&!wN[p]&&(wN[p]=!0,console.warn(d(p," has been deprecated since v"+t+" and will be removed in the near future"))),a?a(c,p,g):!0}};function jue(l,a,t){if(typeof l!="object")throw new Rs("options must be an object",Rs.ERR_BAD_OPTION_VALUE);const s=Object.keys(l);let d=s.length;for(;d-- >0;){const c=s[d],p=a[c];if(p){const g=l[c],_=g===void 0||p(g,c,l);if(_!==!0)throw new Rs("option "+c+" must be "+_,Rs.ERR_BAD_OPTION_VALUE);continue}if(t!==!0)throw new Rs("Unknown option "+c,Rs.ERR_BAD_OPTION)}}const uD={assertOptions:jue,validators:qP},Kr=uD.validators;let vI=class{constructor(a){this.defaults=a,this.interceptors={request:new vN,response:new vN}}async request(a,t){try{return await this._request(a,t)}catch(s){if(s instanceof Error){let d;Error.captureStackTrace?Error.captureStackTrace(d={}):d=new Error;const c=d.stack?d.stack.replace(/^.+\n/,""):"";s.stack?c&&!String(s.stack).endsWith(c.replace(/^.+\n.+\n/,""))&&(s.stack+=` +`+c):s.stack=c}throw s}}_request(a,t){typeof a=="string"?(t=t||{},t.url=a):t=a||{},t=nu(this.defaults,t);const{transitional:s,paramsSerializer:d,headers:c}=t;s!==void 0&&uD.assertOptions(s,{silentJSONParsing:Kr.transitional(Kr.boolean),forcedJSONParsing:Kr.transitional(Kr.boolean),clarifyTimeoutError:Kr.transitional(Kr.boolean)},!1),d!=null&&(ba.isFunction(d)?t.paramsSerializer={serialize:d}:uD.assertOptions(d,{encode:Kr.function,serialize:Kr.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let p=c&&ba.merge(c.common,c[t.method]);c&&ba.forEach(["delete","get","head","post","put","patch","common"],C=>{delete c[C]}),t.headers=wr.concat(p,c);const g=[];let _=!0;this.interceptors.request.forEach(function(x){typeof x.runWhen=="function"&&x.runWhen(t)===!1||(_=_&&x.synchronous,g.unshift(x.fulfilled,x.rejected))});const v=[];this.interceptors.response.forEach(function(x){v.push(x.fulfilled,x.rejected)});let h,b=0,y;if(!_){const C=[yN.bind(this),void 0];for(C.unshift.apply(C,g),C.push.apply(C,v),y=C.length,h=Promise.resolve(t);b{if(!s._listeners)return;let c=s._listeners.length;for(;c-- >0;)s._listeners[c](d);s._listeners=null}),this.promise.then=d=>{let c;const p=new Promise(g=>{s.subscribe(g),c=g}).then(d);return p.cancel=function(){s.unsubscribe(c)},p},a(function(c,p,g){s.reason||(s.reason=new Bp(c,p,g),t(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(a){if(this.reason){a(this.reason);return}this._listeners?this._listeners.push(a):this._listeners=[a]}unsubscribe(a){if(!this._listeners)return;const t=this._listeners.indexOf(a);t!==-1&&this._listeners.splice(t,1)}static source(){let a;return{token:new oB(function(d){a=d}),cancel:a}}};const que=Hue;function zue(l){return function(t){return l.apply(null,t)}}function Bue(l){return ba.isObject(l)&&l.isAxiosError===!0}const pD={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};Object.entries(pD).forEach(([l,a])=>{pD[a]=l});const Gue=pD;function nB(l){const a=new K7(l),t=Oz(K7.prototype.request,a);return ba.extend(t,K7.prototype,a,{allOwnKeys:!0}),ba.extend(t,a,null,{allOwnKeys:!0}),t.create=function(d){return nB(nu(l,d))},t}const Io=nB(HP);Io.Axios=K7;Io.CanceledError=Bp;Io.CancelToken=que;Io.isCancel=eB;Io.VERSION=sB;Io.toFormData=nV;Io.AxiosError=Rs;Io.Cancel=Io.CanceledError;Io.all=function(a){return Promise.all(a)};Io.spread=zue;Io.isAxiosError=Bue;Io.mergeConfig=nu;Io.AxiosHeaders=wr;Io.formToJSON=l=>Jz(ba.isHTMLForm(l)?new FormData(l):l);Io.getAdapter=aB.getAdapter;Io.HttpStatusCode=Gue;Io.default=Io;const Gp=Io,{Axios:gos,AxiosError:yos,CanceledError:bos,isCancel:Wue,CancelToken:wos,VERSION:kos,all:xos,Cancel:$os,isAxiosError:Et,spread:Cos,toFormData:Sos,AxiosHeaders:Eos,HttpStatusCode:Aos,formToJSON:Los,getAdapter:Ios,mergeConfig:Vos}=Gp,fr=()=>typeof window<"u"&&window.APP_CONFIG&&window.APP_CONFIG.VITE_BACKEND_URL?window.APP_CONFIG.VITE_BACKEND_URL:"http://localhost:8000",Ct=Gp.create({baseURL:fr(),headers:{"X-Requested-With":"XMLHttpRequest",Accept:"application/json","X-LogRequestResponse":"false","X-Sanitizer-Mode":""}});Ct.defaults.withCredentials=!0;Ct.defaults.withXSRFToken=!0;Ct.interceptors.request.use(function(l){return l.headers["X-Localization"]=localStorage.getItem("DCSLAB_LANG")==null?document.documentElement.lang:localStorage.getItem("DCSLAB_LANG"),l.headers["X-Timezone"]=Intl.DateTimeFormat().resolvedOptions().timeZone,l});Ct.interceptors.response.use(l=>l,l=>{if(l.response==null||l.response.status==null)return Promise.reject(l);switch(l.response.status){case 401:window.location.replace("/auth/login");break}return Promise.reject(l)});const zP=Gp.create({baseURL:fr(),headers:{"X-Requested-With":"XMLHttpRequest",Accept:"application/json"}});zP.defaults.withCredentials=!0;zP.interceptors.request.use(function(l){return l.headers["X-Timezone"]=Intl.DateTimeFormat().resolvedOptions().timeZone,l});Gp.create();const Zue=()=>{const l=new URL(fr());return l?l.hostname:"localhost"},Kue=()=>{const l=new URL(fr());return l?Number(l.port):8e3},Da=wi("ziggyRoute",{state:()=>({ziggyRoute:{url:Zue(),port:Kue(),defaults:{},routes:{"api.get.db.module.profile.read":{uri:"api/get/dashboard/module/profile/read",methods:["GET","HEAD"]},"api.get.db.core.user.menu":{uri:"api/get/dashboard/core/user/menu",methods:["GET","HEAD"]},"api.get.db.core.user.api":{uri:"api/get/dashboard/core/user/api",methods:["GET","HEAD"]}}}}),getters:{getZiggy(l){const a=sessionStorage.getItem("ziggyRoute");if(a){const t=JSON.parse(a);this.ziggyRoute=t}return l.ziggyRoute}},actions:{setZiggy(l){l!=null&&(sessionStorage.setItem("ziggyRoute",JSON.stringify(l)),this.ziggyRoute=l)}}});var Yue=String.prototype.replace,Xue=/%20/g,QM={RFC1738:"RFC1738",RFC3986:"RFC3986"},BP={default:QM.RFC3986,formatters:{RFC1738:function(l){return Yue.call(l,Xue,"+")},RFC3986:function(l){return String(l)}},RFC1738:QM.RFC1738,RFC3986:QM.RFC3986},Que=BP,JM=Object.prototype.hasOwnProperty,Qd=Array.isArray,Ul=function(){for(var l=[],a=0;a<256;++a)l.push("%"+((a<16?"0":"")+a.toString(16)).toUpperCase());return l}(),Jue=function(a){for(;a.length>1;){var t=a.pop(),s=t.obj[t.prop];if(Qd(s)){for(var d=[],c=0;c=48&&v<=57||v>=65&&v<=90||v>=97&&v<=122||c===Que.RFC1738&&(v===40||v===41)){g+=p.charAt(_);continue}if(v<128){g=g+Ul[v];continue}if(v<2048){g=g+(Ul[192|v>>6]+Ul[128|v&63]);continue}if(v<55296||v>=57344){g=g+(Ul[224|v>>12]+Ul[128|v>>6&63]+Ul[128|v&63]);continue}_+=1,v=65536+((v&1023)<<10|p.charCodeAt(_)&1023),g+=Ul[240|v>>18]+Ul[128|v>>12&63]+Ul[128|v>>6&63]+Ul[128|v&63]}return g},ope=function(a){for(var t=[{obj:{o:a},prop:"o"}],s=[],d=0;d"u")return M;var S;if(s==="comma"&&ac(x))S=[{value:x.length>0?x.join(",")||null:void 0}];else if(ac(g))S=g;else{var L=Object.keys(x);S=_?L.sort(_):L}for(var E=0;E"u"?Ko.allowDots:!!a.allowDots,charset:t,charsetSentinel:typeof a.charsetSentinel=="boolean"?a.charsetSentinel:Ko.charsetSentinel,delimiter:typeof a.delimiter>"u"?Ko.delimiter:a.delimiter,encode:typeof a.encode=="boolean"?a.encode:Ko.encode,encoder:typeof a.encoder=="function"?a.encoder:Ko.encoder,encodeValuesOnly:typeof a.encodeValuesOnly=="boolean"?a.encodeValuesOnly:Ko.encodeValuesOnly,filter:c,format:s,formatter:d,serializeDate:typeof a.serializeDate=="function"?a.serializeDate:Ko.serializeDate,skipNulls:typeof a.skipNulls=="boolean"?a.skipNulls:Ko.skipNulls,sort:typeof a.sort=="function"?a.sort:null,strictNullHandling:typeof a.strictNullHandling=="boolean"?a.strictNullHandling:Ko.strictNullHandling}},hpe=function(l,a){var t=l,s=vpe(a),d,c;typeof s.filter=="function"?(c=s.filter,t=c("",t)):ac(s.filter)&&(c=s.filter,d=c);var p=[];if(typeof t!="object"||t===null)return"";var g;a&&a.arrayFormat in kN?g=a.arrayFormat:a&&"indices"in a?g=a.indices?"indices":"repeat":g="indices";var _=kN[g];d||(d=Object.keys(t)),s.sort&&d.sort(s.sort);for(var v=0;v0?y+b:""},lu=rB,mD=Object.prototype.hasOwnProperty,fpe=Array.isArray,Zo={allowDots:!1,allowPrototypes:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:lu.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},gpe=function(l){return l.replace(/&#(\d+);/g,function(a,t){return String.fromCharCode(parseInt(t,10))})},dB=function(l,a){return l&&typeof l=="string"&&a.comma&&l.indexOf(",")>-1?l.split(","):l},ype="utf8=%26%2310003%3B",bpe="utf8=%E2%9C%93",wpe=function(a,t){var s={},d=t.ignoreQueryPrefix?a.replace(/^\?/,""):a,c=t.parameterLimit===1/0?void 0:t.parameterLimit,p=d.split(t.delimiter,c),g=-1,_,v=t.charset;if(t.charsetSentinel)for(_=0;_-1&&(C=fpe(C)?[C]:C),mD.call(s,u)?s[u]=lu.combine(s[u],C):s[u]=C}return s},kpe=function(l,a,t,s){for(var d=s?a:dB(a,t),c=l.length-1;c>=0;--c){var p,g=l[c];if(g==="[]"&&t.parseArrays)p=[].concat(d);else{p=t.plainObjects?Object.create(null):{};var _=g.charAt(0)==="["&&g.charAt(g.length-1)==="]"?g.slice(1,-1):g,v=parseInt(_,10);!t.parseArrays&&_===""?p={0:d}:!isNaN(v)&&g!==_&&String(v)===_&&v>=0&&t.parseArrays&&v<=t.arrayLimit?(p=[],p[v]=d):_!=="__proto__"&&(p[_]=d)}d=p}return d},xpe=function(a,t,s,d){if(a){var c=s.allowDots?a.replace(/\.([^.[]+)/g,"[$1]"):a,p=/(\[[^[\]]*])/,g=/(\[[^[\]]*])/g,_=s.depth>0&&p.exec(c),v=_?c.slice(0,_.index):c,h=[];if(v){if(!s.plainObjects&&mD.call(Object.prototype,v)&&!s.allowPrototypes)return;h.push(v)}for(var b=0;s.depth>0&&(_=g.exec(c))!==null&&b"u"?Zo.charset:a.charset;return{allowDots:typeof a.allowDots>"u"?Zo.allowDots:!!a.allowDots,allowPrototypes:typeof a.allowPrototypes=="boolean"?a.allowPrototypes:Zo.allowPrototypes,arrayLimit:typeof a.arrayLimit=="number"?a.arrayLimit:Zo.arrayLimit,charset:t,charsetSentinel:typeof a.charsetSentinel=="boolean"?a.charsetSentinel:Zo.charsetSentinel,comma:typeof a.comma=="boolean"?a.comma:Zo.comma,decoder:typeof a.decoder=="function"?a.decoder:Zo.decoder,delimiter:typeof a.delimiter=="string"||lu.isRegExp(a.delimiter)?a.delimiter:Zo.delimiter,depth:typeof a.depth=="number"||a.depth===!1?+a.depth:Zo.depth,ignoreQueryPrefix:a.ignoreQueryPrefix===!0,interpretNumericEntities:typeof a.interpretNumericEntities=="boolean"?a.interpretNumericEntities:Zo.interpretNumericEntities,parameterLimit:typeof a.parameterLimit=="number"?a.parameterLimit:Zo.parameterLimit,parseArrays:a.parseArrays!==!1,plainObjects:typeof a.plainObjects=="boolean"?a.plainObjects:Zo.plainObjects,strictNullHandling:typeof a.strictNullHandling=="boolean"?a.strictNullHandling:Zo.strictNullHandling}},Cpe=function(l,a){var t=$pe(a);if(l===""||l===null||typeof l>"u")return t.plainObjects?Object.create(null):{};for(var s=typeof l=="string"?wpe(l,t):l,d=t.plainObjects?Object.create(null):{},c=Object.keys(s),p=0;p({name:s.replace(/{|\??}/g,""),required:!/\?}$/.test(s)})))!=null?a:[]}matchesUrl(a){if(!this.definition.methods.includes("GET"))return!1;const t=this.template.replace(/(\/?){([^}?]*)(\??)}/g,(p,g,_,v)=>{var h;const b=`(?<${_}>${((h=this.wheres[_])==null?void 0:h.replace(/(^\^)|(\$$)/g,""))||"[^/?]+"})`;return v?`(${g}${b})?`:`${g}${b}`}).replace(/^\w+:\/\//,""),[s,d]=a.replace(/^\w+:\/\//,"").split("?"),c=new RegExp(`^${t}/?$`).exec(decodeURI(s));if(c){for(const p in c.groups)c.groups[p]=typeof c.groups[p]=="string"?decodeURIComponent(c.groups[p]):c.groups[p];return{params:c.groups,query:cB.parse(d)}}return!1}compile(a){return this.parameterSegments.length?this.template.replace(/{([^}?]+)(\??)}/g,(t,s,d)=>{var c,p;if(!d&&[null,void 0].includes(a[s]))throw new Error(`Ziggy error: '${s}' parameter is required for route '${this.name}'.`);if(this.wheres[s]&&!new RegExp(`^${d?`(${this.wheres[s]})?`:this.wheres[s]}$`).test((p=a[s])!=null?p:""))throw new Error(`Ziggy error: '${s}' parameter does not match required format '${this.wheres[s]}' for route '${this.name}'.`);return encodeURI((c=a[s])!=null?c:"").replace(/%7C/g,"|").replace(/%25/g,"%").replace(/\$/g,"%24")}).replace(`${this.origin}//`,`${this.origin}/`).replace(/\/+$/,""):this.template}}class Lpe extends String{constructor(a,t,s=!0,d){if(super(),this.t=d??(typeof Ziggy<"u"?Ziggy:globalThis==null?void 0:globalThis.Ziggy),this.t=Tn({},this.t,{absolute:s}),a){if(!this.t.routes[a])throw new Error(`Ziggy error: route '${a}' is not in the route list.`);this.i=new eT(a,this.t.routes[a],this.t),this.o=this.h(t)}}toString(){const a=Object.keys(this.o).filter(t=>!this.i.parameterSegments.some(({name:s})=>s===t)).filter(t=>t!=="_query").reduce((t,s)=>Tn({},t,{[s]:this.o[s]}),{});return this.i.compile(this.o)+cB.stringify(Tn({},a,this.o._query),{addQueryPrefix:!0,arrayFormat:"indices",encodeValuesOnly:!0,skipNulls:!0,encoder:(t,s)=>typeof t=="boolean"?Number(t):s(t)})}u(a){a?this.t.absolute&&a.startsWith("/")&&(a=this.l().host+a):a=this.m();let t={};const[s,d]=Object.entries(this.t.routes).find(([c,p])=>t=new eT(c,p,this.t).matchesUrl(a))||[void 0,void 0];return Tn({name:s},t,{route:d})}m(){const{host:a,pathname:t,search:s}=this.l();return(this.t.absolute?a+t:t.replace(this.t.url.replace(/^\w*:\/\/[^/]+/,""),"").replace(/^\/+/,"/"))+s}current(a,t){const{name:s,params:d,query:c,route:p}=this.u();if(!a)return s;const g=new RegExp(`^${a.replace(/\./g,"\\.").replace(/\*/g,".*")}$`).test(s);if([null,void 0].includes(t)||!g)return g;const _=new eT(s,p,this.t);t=this.h(t,_);const v=Tn({},d,c);if(Object.values(t).every(b=>!b)&&!Object.values(v).some(b=>b!==void 0))return!0;const h=(b,y)=>Object.entries(b).every(([u,C])=>Array.isArray(C)&&Array.isArray(y[u])?C.every(x=>y[u].includes(x)):typeof C=="object"&&typeof y[u]=="object"&&C!==null&&y[u]!==null?h(C,y[u]):y[u]==C);return h(t,v)}l(){var a,t,s,d,c,p;const{host:g="",pathname:_="",search:v=""}=typeof window<"u"?window.location:{};return{host:(a=(t=this.t.location)==null?void 0:t.host)!=null?a:g,pathname:(s=(d=this.t.location)==null?void 0:d.pathname)!=null?s:_,search:(c=(p=this.t.location)==null?void 0:p.search)!=null?c:v}}get params(){const{params:a,query:t}=this.u();return Tn({},a,t)}has(a){return Object.keys(this.t.routes).includes(a)}h(a={},t=this.i){a!=null||(a={}),a=["string","number"].includes(typeof a)?[a]:a;const s=t.parameterSegments.filter(({name:d})=>!this.t.defaults[d]);return Array.isArray(a)?a=a.reduce((d,c,p)=>Tn({},d,s[p]?{[s[p].name]:c}:typeof c=="object"?c:{[c]:""}),{}):s.length!==1||a[s[0].name]||!a.hasOwnProperty(Object.values(t.bindings)[0])&&!a.hasOwnProperty("id")||(a={[s[0].name]:a}),Tn({},this.p(t),this.$(a,t))}p(a){return a.parameterSegments.filter(({name:t})=>this.t.defaults[t]).reduce((t,{name:s},d)=>Tn({},t,{[s]:this.t.defaults[s]}),{})}$(a,{bindings:t,parameterSegments:s}){return Object.entries(a).reduce((d,[c,p])=>{if(!p||typeof p!="object"||Array.isArray(p)||!s.some(({name:g})=>g===c))return Tn({},d,{[c]:p});if(!p.hasOwnProperty(t[c])){if(!p.hasOwnProperty("id"))throw new Error(`Ziggy error: object passed as '${c}' parameter is missing route model binding key '${t[c]}'.`);t[c]="id"}return Tn({},d,{[c]:p[t[c]]})},{})}valueOf(){return this.toString()}}function nt(l,a,t,s){const d=new Lpe(l,a,t,s);return l?d.toString():d}class ma{constructor(){qt(this,"debugMode",!1);qt(this,"DCSLAB_SYSTEM_KEY","DCSLAB_SYSTEM");qt(this,"DCSLAB_LAST_ENTITY_KEY","DCSLAB_LAST_ENTITY");this.debugMode="true"}getCachedDDL(a){const t=sessionStorage.getItem(this.DCSLAB_SYSTEM_KEY);if(t==null)return null;const s=this.debugMode?JSON.parse(t):JSON.parse(atob(t));return Object.hasOwnProperty.call(s,a)?s[a]:null}setCachedDDL(a,t){if(t==null)return;let s=sessionStorage.getItem(this.DCSLAB_SYSTEM_KEY);s==null&&(s=JSON.stringify(new Object));const d=this.debugMode?JSON.parse(s):JSON.parse(atob(s));d[a]=t,this.debugMode?sessionStorage.setItem(this.DCSLAB_SYSTEM_KEY,JSON.stringify(d)):sessionStorage.setItem(this.DCSLAB_SYSTEM_KEY,btoa(JSON.stringify(d)))}getLastEntity(a){const t=sessionStorage.getItem(this.DCSLAB_LAST_ENTITY_KEY);if(t==null)return null;const s=this.debugMode?JSON.parse(t):JSON.parse(atob(t));return s==null||(a=a.toUpperCase(),!Object.hasOwnProperty.call(s,a))?null:s[a]}setLastEntity(a,t){if(a=a.toUpperCase(),t==null)return;const s={};s[a]=t,this.debugMode?sessionStorage.setItem(this.DCSLAB_LAST_ENTITY_KEY,JSON.stringify(s)):sessionStorage.setItem(this.DCSLAB_LAST_ENTITY_KEY,btoa(JSON.stringify(s)))}removeLastEntity(a){const t=sessionStorage.getItem(this.DCSLAB_LAST_ENTITY_KEY);if(t==null)return;const s=this.debugMode?JSON.parse(t):JSON.parse(atob(t));if(s==null||(a=a.toUpperCase(),!Object.hasOwnProperty.call(s,a)))return;let c={};c=Oa.omit(s,[a]),this.debugMode?sessionStorage.setItem(this.DCSLAB_LAST_ENTITY_KEY,JSON.stringify(c)):sessionStorage.setItem(this.DCSLAB_LAST_ENTITY_KEY,btoa(JSON.stringify(c)))}isLastEntity(a){const t=sessionStorage.getItem(this.DCSLAB_LAST_ENTITY_KEY);if(t==null)return!1;const s=this.debugMode?JSON.parse(t):JSON.parse(atob(t));return s==null?!1:(a=a.toUpperCase(),a in s)}}class qa{generateZiggyUrlErrorServiceResponse(a){return{success:!1,errors:{ziggy:[a||"Ziggy error: unknown"]}}}generateAxiosValidationErrorServiceResponse(a){const t={success:!1},s=a.response,d=Object.keys(s.data.errors);for(const c of d)t.errors==null&&(t.errors={}),t.errors[c]=s.data.errors[c];return t}generateAxiosErrorServiceResponse(a){const t=a.response;return{success:!1,errors:{axios:[t.data.message+" ("+t.status+":"+t.statusText+")"]}}}}class _s{constructor(){qt(this,"ziggyRoute");qt(this,"ziggyRouteStore",Da());qt(this,"cacheService");qt(this,"errorHandlerService");this.ziggyRoute=this.ziggyRouteStore.getZiggy,this.cacheService=new ma,this.errorHandlerService=new qa}async readUserMenu(){const a={success:!1};try{const t=nt("api.get.db.core.user.menu",void 0,!1,this.ziggyRoute),s=await Ct.get(t);return a.success=!0,a.data=s.data,a}catch(t){return t instanceof Error&&t.message.includes("Ziggy error")?this.errorHandlerService.generateZiggyUrlErrorServiceResponse(t.message):Et(t)?this.errorHandlerService.generateAxiosErrorServiceResponse(t):a}}async readUserApi(){const a={success:!1};try{const t=nt("api.get.db.core.user.api",void 0,!1,this.ziggyRoute),s=await Ct.get(t);return a.success=!0,a.data=s.data,a}catch(t){return t instanceof Error&&t.message.includes("Ziggy error")?this.errorHandlerService.generateZiggyUrlErrorServiceResponse(t.message):Et(t)?this.errorHandlerService.generateAxiosErrorServiceResponse(t):a}}async getStatusDDL(a=!0){const t=a?"statusDDL_with_deleted":"statusDDL_no_deleted";let s=[];try{if(this.cacheService.getCachedDDL(t)==null){const c=nt("api.get.db.common.ddl.list.statuses",{show_deleted:a},!1,this.ziggyRoute),p=await Ct.get(c);this.cacheService.setCachedDDL(t,p.data)}const d=this.cacheService.getCachedDDL(t);return d!=null&&(s=d),s}catch{return s}}async getCountriesDDL(){const a="countriesDDL";let t=[];try{if(this.cacheService.getCachedDDL(a)==null){const d=nt("api.get.db.common.ddl.list.countries",void 0,!1,this.ziggyRoute),c=await Ct.get(d);this.cacheService.setCachedDDL(a,c.data)}const s=this.cacheService.getCachedDDL(a);return s!=null&&(t=s),t}catch{return t}}async getPaymentTermTypesDDL(){const a="paymentTermTypesDDL";let t=[];try{if(this.cacheService.getCachedDDL(a)==null){const d=nt("api.get.db.common.ddl.list.payment_term_types",void 0,!1,this.ziggyRoute),c=await Ct.get(d);this.cacheService.setCachedDDL(a,c.data)}const s=this.cacheService.getCachedDDL(a);return s!=null&&(t=s),t}catch{return t}}async getRoundingTypesDDL(){const a="roundingTypesDDL";let t=[];try{if(this.cacheService.getCachedDDL(a)==null){const d=nt("api.get.db.common.ddl.list.rounding_types",void 0,!1,this.ziggyRoute),c=await Ct.get(d);this.cacheService.setCachedDDL(a,c.data)}const s=this.cacheService.getCachedDDL(a);return s!=null&&(t=s),t}catch{return t}}async uploadFile(a){const t={success:!1};try{const s=new FormData;s.append("file",a);const d=nt("api.post.db.core.user.upload",void 0,!1,this.ziggyRoute);Ct.defaults.headers.common["Content-Type"]="multipart/form-data";const c=await Ct.post(d,s);return t.success=!0,t.data=c.data.data,t}catch(s){return s instanceof Error&&s.message.includes("Ziggy error")?this.errorHandlerService.generateZiggyUrlErrorServiceResponse(s.message):Et(s)?this.errorHandlerService.generateAxiosErrorServiceResponse(s):t}}}const Ipe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQgAAAC/CAMAAAA1kLK0AAAAVFBMVEX////MzMyZmZn39/fHx8fExMTJycmRkZGOjo7Pz8/n5+fT09Pq6url5eX8/PyUlJTw8PDa2tqJiYm+vr7X19eurq6oqKjf39+FhYW4uLienp5+fn553DI2AAAJJElEQVR4nO2d14KrOAyGQ+i9hEySnfd/z6XIxrgQmMgEdvVfnZNMDHzIklwQl8oldaou7oXUySUQowgEiECACASIQIAIBIhAgAgEiECACASIQIAIBIhAgAgEiECACASIQIAIBIhAgAgEiECACASIQIAIBIhAgAgEiECACASIQIC+DaIo2Lp8UXz1RL4GonCrvG5TJ+By0rbOK/dLPL4CoqgerRN4/cXP1H3gBU77qL4AY38Qbt4GnichmOHovm3z3U9rXxBFki5CEGCkya52sSuIqvW89xCYPK+t9ju3HUEkjr/CFmZ24TvJXme3G4jcYAy9g+ykOE5uFvk+57cTiETF0F9/EKf1I0865Y86jYePVBS7WMUuICrHUyDEdaJGyaJK6liB4Tk7+IodQLitJ1Fw6mzhqG5WOxILr7V/ltZBJLPe31FYkS91GdecRRDY7h+2QRSpN8OQZiuzgyJLZyi81G5aYRlEJZpDENSbDubW3uzXVj2FXRC5L1rDNgy95ih8m5HUKohW4OD/zd+58zawz1A4kD0QRTzdTe/vdl0Fk5cJYmuOwh4IV3APnxm10MGCwNrp2gLhTvfRiz88hhsLjdk6X0sgqunU/cfnzT0mo/DsBA9LIER7yDAazGzbhB0QAgcHqX3B5VghYQVEESDbw9DoFIQCC7HDCohUzILQSFw4iSBFa5PLBoh6NtpEJMEBezVam0wWQCS+49gm4aMPRvFBVBIHO73Dxw6i6CAKfv2Tm8cjUTi8UWSHiQ6i5h6tmPoI3rSjy5tHdhPYIHhG2SeA0yABL4rODoAoZBDF3AYmEni9Y7Iz1M6BDIJ1jABmDmyQaNkxUDsHLgieWnvsbuUeOgmet6Km2rggWJwXgpsFEixAoyaYqCD4GYpTahZItCrvj4UKgl/xzI1Z8BOcLVJ7F1wQzCDkrEEggZRPJB66SWCCiE33SSFRDQu/Jq3YLcMOFaOdPCIIbhDqbcqlHPPxGy2oub8/FrpJIIIAF6b15bJN5NF1QdF7XwLxKUBb6cADwXIIfeore8xFEuV6k0DLJfBAsDBp6LabSKwwCfASaBtq0EAU7MxMgUEh0XxkEixwYK19oYFgtmqeWJVJJAskmrdOkCXaWINQNBAP8F4LqzkKied4+/tIUW42iRUH3CIsEGz8rXFej9ft9hp7gxQ7kiZsyh8/bdvU/ymbUCAR3mZ6qZfLB3g4fQMLhGt2lU5TluVo64kcRW+CV6yCUugs5UyNJpmOjej/dAFIICBm6Jx4HE69XiYhqb4aYkmoAbxwyD8ICwQkOLrbM4KAkPiGxMWfe9DOe4QmEGCESINxJBB8skTzHYBYSSIvJ79ZXuMsf0UGEGywi7MAiAQCgqd29oyBuIajh5RiR/G6//zcbykLg9WVkSj/GT5LIwMImBfECaBIIPJAuDRJHASQkKPoo3emYRTeobNzEhGEip9SDyIbGwpQnAQSiNrsIgQQ11COomJmVTb38ecZeMwSWktDPQh3wQw3CwkEhLJA+52QH0RaEtkTrrwZLaoFjwmn1hpAXAJjyN4uHBDMV2oduAji2ugzKyBx/R3N/D50jghs/m7oGpcU0VvigGBGqk13ZyCAhBw7MhY1n4Pnq5rRWQ6/b03OkmXZKCkVDggIGvqR5xzE9aklkbBMqhxu76scw2ddZTdj+GQbq1DCBg6IBIKG9owkENdmOKKJROT3/6vAQthwTA8CJgdRdu7jgAAb9bVtySCu48fKuAP+LBwakX6iB+H6Cz1yo3BAsOip9VoSiNCHzw0koiE79cIVIArE+IkDAuZtPe2XEoiG5z9yjjn2jvKn/7c0f6UHAQs9KDO4qCC0aYQCoj+gO9BQouhIYviDVSAQp7JxQLDFX+2XctfoP8ue2nxiiKJj0rWma8CwC2X8uT+IwVc+IiXHHEk82RBjjbP8D4CoQ3NmFQ6+738C4hFpMqvBb2TR/8UiRh/Ru0XFJkYSzxP7iO1RYxxVyTM1Yyw5cdTYnkf8CCQyzezdSfOITZnlgMsZhxbhQEUzj+mfM7PcPtZw2cjCQEL6yVnGGttGn8Nf+Wy0KfuJ4f+SizjN6JPNR2hX82UQ5av/tGBz1XoSbPZuEURyuPmIDTNU3CQqdqlv5qwWQBxvhmr9nOVgEuNSd/4L/39qo+iMxFnmLFfPYoMNjPEua6B7jClUpuSY70AcbxZ77boGE2wNcu+AopHziZFEuAziiOsa61a6ps5xBf+W38Mo7Jf9B+8ik0jCRRBHXOlatfapI3Gp0lu/9vka+rmcY3ISp1n7XLMaPidRau+jEjuiBRAOoq/ccX+E4jF99U+NJE6zP+L9jhlV0VXXkWQS4wrHeXbMLOyhMoHojKIUC41kN+24YyChA3HMPVQLu+rMILoLnO2qa7SZVU9CA+Kgu+oWtj0ugRj85rTP8qnNJ6pIB+Kg+ywXdt6+AzHrLIbMKlJAHHbnrXkvtvNcejhD0u/gQBUSjZK8H3Yvtnl3fhanG+TImdXoQRW8h92d/+Z5ja2SScg68PMai0/wbJccOyQd+AmepWe6/iLmBLQkDv1MF/ajd0s24eAe6rLPc59/lZnEwZ/75PdJv9CzXSaPWfDPkQ502ePZ8E80kZiFycM/G66rFvCZtCSOXy1gGgih1Q7TkCh4kYrj1o9QKop8LtVPnKGiyFRjBq9ilpJt8/ziyDVmbBQFymaZ1UmqDol1qNAaFnLMhM8SH70O1dQ5AjzTnXqHUEf36JXJplp1AV7+O5HgtnH4WnVCZowY52USZ6heKNSztEbiHPUshbKTlnrHWSqcCjVvEUubC3WQT1PzVqiCjFba3BU6xmmqIFNd7ElUKZ03TLXzWcv0NgUQvV+Di964wkTv4GGav5VpIwq3nr/T6cRvZaL3dAmiN7fxQ9C7/Jjo7Y5c9L5PLnoDLBe9E5iL3hLNRe8NF45Ib5Ln6vKltrtexUH2jjNw2hUZF76+AqJX4VZ53ab9xYOctK3zyv0ChF5fAwEqChdUfIkA6NsgDiMCASIQIAIBIhAgAgEiECACASIQIAIBIhAgAgEiECACASIQIAIBIhAgAgEiECACASIQIAIBIhAgAgEiECACASIQIAIBIhAgAgFyL5VL6lT9C86bdxzAdoHwAAAAAElFTkSuQmCC",Vpe=["src"],Mpe={class:"flex gap-2 mt-4"},Tpe=["type"],Dpe={class:"border-slate-200 border w-[15%] rounded bg-slate-100 cursor-pointer flex justify-center items-center",for:"upload"},Ppe={inheritAttrs:!1},uB=lt({...Ppe,__name:"FormFileUpload",props:{value:{},modelValue:{},formInputSize:{},rounded:{type:Boolean}},emits:["update:modelValue"],setup(l,{emit:a}){const{t}=At(),s=l,d=is(),c=Ba("formInline",!1),p=Ba("inputGroup",!1),g=$(""),_=new _s,v=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed dark:disabled:bg-darkmode-800/50 dark:disabled:border-transparent","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50 [&[readonly]]:dark:border-transparent","transition duration-200 ease-in-out w-full text-sm border-slate-200 shadow-sm rounded-md placeholder:text-slate-400/90 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50 dark:placeholder:text-slate-500/80",s.formInputSize=="sm"&&"text-xs py-1.5 px-2",s.formInputSize=="lg"&&"text-lg py-1.5 px-4",s.rounded&&"rounded-full",c&&"flex-1",p&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r z-10",typeof d.class=="string"&&d.class])),h=a,b=ae({get(){return s.modelValue===void 0?s.value:s.modelValue},set(u){h("update:modelValue",u)}}),y=async u=>{const x=u.target.files,z=new FileReader;if(x){let P=x[0].name;z.readAsDataURL(x[0]),b.value=P;let F=await _.uploadFile(x[0]);F&&F.data&&(g.value=F.data.url)}};return zt(()=>{g.value||(g.value=Ipe)}),(u,C)=>(k(),I(Pe,null,[g.value?(k(),I("div",{key:0,class:w(["flex","justify-center","mt-2","w-full","align-center",{"bg-slate-100":g.value},"rounded","p-4"])},[n("img",{class:"rounded aspect-auto",src:g.value?g.value:"",alt:"Image Preview"},null,8,Vpe)],2)):He("",!0),n("div",Mpe,[n("input",ds({disabled:"",class:v.value,type:s.type},e(ls).omit(e(d),"class")),null,16,Tpe),n("input",{id:"upload",type:"file",hidden:"",onChange:C[0]||(C[0]=x=>y(x))},null,32),n("label",Dpe,r(e(t)("components.file-upload.browse")),1)])],64))}});class Upe{constructor(){qt(this,"ziggyRoute");qt(this,"ziggyRouteStore",Da());qt(this,"errorHandlerService");this.ziggyRoute=this.ziggyRouteStore.getZiggy,this.errorHandlerService=new qa}async upload(a){const t={success:!1};try{const s=new FormData;s.append("image",a);const d=nt("api.post.product.image.upload",void 0,!1,this.ziggyRoute);Ct.defaults.headers.common["Content-Type"]="multipart/form-data";const c=await Ct.post(d,s);return t.success=!0,t.data=c.data.data,t}catch(s){return s instanceof Error&&s.message.includes("Ziggy error")?this.errorHandlerService.generateZiggyUrlErrorServiceResponse(s.message):Et(s)?this.errorHandlerService.generateAxiosErrorServiceResponse(s):t}}}const Rpe={inheritAttrs:!1},J=lt({...Rpe,__name:"Button",props:{as:{default:"button"},variant:{},elevated:{type:Boolean},size:{},rounded:{type:Boolean}},setup(l){const{as:a,size:t,variant:s,elevated:d,rounded:c}=l,p=is(),g=["transition duration-200 border shadow-sm inline-flex items-center justify-center py-2 px-3 rounded-md font-medium cursor-pointer","focus:ring-4 focus:ring-primary focus:ring-opacity-20","focus-visible:outline-none","dark:focus:ring-slate-700 dark:focus:ring-opacity-50","[&:hover:not(:disabled)]:bg-opacity-90 [&:hover:not(:disabled)]:border-opacity-90","[&:not(button)]:text-center","disabled:opacity-70 disabled:cursor-not-allowed"],_=["text-xs py-1.5 px-2"],v=["text-lg py-1.5 px-4"],h=["bg-primary border-primary text-white dark:border-primary"],b=["bg-secondary/70 border-secondary/70 text-slate-500","dark:border-darkmode-400 dark:bg-darkmode-400 dark:text-slate-300","[&:hover:not(:disabled)]:bg-slate-100 [&:hover:not(:disabled)]:border-slate-100","[&:hover:not(:disabled)]:dark:border-darkmode-300/80 [&:hover:not(:disabled)]:dark:bg-darkmode-300/80"],y=["bg-success border-success text-slate-900","dark:border-success"],u=["bg-warning border-warning text-slate-900","dark:border-warning"],C=["bg-pending border-pending text-white","dark:border-pending"],x=["bg-danger border-danger text-white","dark:border-danger"],z=["bg-dark border-dark text-white","dark:bg-darkmode-800 dark:border-transparent dark:text-slate-300","[&:hover:not(:disabled)]:dark:dark:bg-darkmode-800/70"],P=["bg-[#3b5998] border-[#3b5998] text-white dark:border-[#3b5998]"],F=["bg-[#4ab3f4] border-[#4ab3f4] text-white dark:border-[#4ab3f4]"],N=["bg-[#517fa4] border-[#517fa4] text-white dark:border-[#517fa4]"],M=["bg-[#0077b5] border-[#0077b5] text-white dark:border-[#0077b5]"],S=["border-primary text-primary","dark:border-primary","[&:hover:not(:disabled)]:bg-primary/10"],L=["border-secondary text-slate-500","dark:border-darkmode-100/40 dark:text-slate-300","[&:hover:not(:disabled)]:bg-secondary/20","[&:hover:not(:disabled)]:dark:bg-darkmode-100/10"],E=["border-success text-success","dark:border-success","[&:hover:not(:disabled)]:bg-success/10"],f=["border-warning text-warning","dark:border-warning","[&:hover:not(:disabled)]:bg-warning/10"],T=["border-pending text-pending","dark:border-pending","[&:hover:not(:disabled)]:bg-pending/10"],H=["border-danger text-danger","dark:border-danger","[&:hover:not(:disabled)]:bg-danger/10"],O=["border-dark text-dark","dark:border-darkmode-800 dark:text-slate-300","[&:hover:not(:disabled)]:bg-darkmode-800/30","[&:hover:not(:disabled)]:dark:bg-opacity-30"],W=["bg-primary border-primary bg-opacity-20 border-opacity-5 text-primary","dark:border-opacity-100 dark:bg-opacity-20 dark:border-primary","[&:hover:not(:disabled)]:bg-opacity-10 [&:hover:not(:disabled)]:border-opacity-10","[&:hover:not(:disabled)]:dark:border-opacity-60"],ie=["bg-slate-300 border-secondary bg-opacity-20 text-slate-500","dark:bg-darkmode-100/20 dark:border-darkmode-100/30 dark:text-slate-300","[&:hover:not(:disabled)]:bg-opacity-10","[&:hover:not(:disabled)]:dark:bg-darkmode-100/10 [&:hover:not(:disabled)]:dark:border-darkmode-100/20"],ve=["bg-success border-success bg-opacity-20 border-opacity-5 text-success","dark:border-success dark:border-opacity-20","[&:hover:not(:disabled)]:bg-opacity-10 [&:hover:not(:disabled)]:border-opacity-10"],de=["bg-warning border-warning bg-opacity-20 border-opacity-5 text-warning","dark:border-warning dark:border-opacity-20","[&:hover:not(:disabled)]:bg-opacity-10 [&:hover:not(:disabled)]:border-opacity-10"],re=["bg-pending border-pending bg-opacity-20 border-opacity-5 text-pending","dark:border-pending dark:border-opacity-20","[&:hover:not(:disabled)]:bg-opacity-10 [&:hover:not(:disabled)]:border-opacity-10"],K=["bg-danger border-danger bg-opacity-20 border-opacity-5 text-danger","dark:border-danger dark:border-opacity-20","[&:hover:not(:disabled)]:bg-opacity-10 [&:hover:not(:disabled)]:border-opacity-10"],Q=["bg-dark border-dark bg-opacity-20 border-opacity-5 text-dark","dark:bg-darkmode-800/30 dark:border-darkmode-800/60 dark:text-slate-300","[&:hover:not(:disabled)]:bg-opacity-10 [&:hover:not(:disabled)]:border-opacity-10","[&:hover:not(:disabled)]:dark:bg-darkmode-800/50 [&:hover:not(:disabled)]:dark:border-darkmode-800"],se=ae(()=>ss([g,t=="sm"&&_,t=="lg"&&v,s=="primary"&&h,s=="secondary"&&b,s=="success"&&y,s=="warning"&&u,s=="pending"&&C,s=="danger"&&x,s=="dark"&&z,s=="outline-primary"&&S,s=="outline-secondary"&&L,s=="outline-success"&&E,s=="outline-warning"&&f,s=="outline-pending"&&T,s=="outline-danger"&&H,s=="outline-dark"&&O,s=="soft-primary"&&W,s=="soft-secondary"&&ie,s=="soft-success"&&ve,s=="soft-warning"&&de,s=="soft-pending"&&re,s=="soft-danger"&&K,s=="soft-dark"&&Q,s=="facebook"&&P,s=="twitter"&&F,s=="instagram"&&N,s=="linkedin"&&M,c&&"rounded-full",d&&"shadow-md",typeof p.class=="string"&&p.class]));return(ue,ke)=>(k(),Be(Js(a),ds({class:se.value},e(ls).omit(e(p),"class")),{default:i(()=>[Ya(ue.$slots,"default")]),_:3},16,["class"]))}}),Ope={class:"flex items-center gap-2"},Fpe={class:"flex-1"},Npe=["disabled","type"],jpe={inheritAttrs:!1},_a=lt({...jpe,__name:"FormInputCode",props:{value:{},modelValue:{},formInputSize:{},rounded:{type:Boolean}},emits:["setAuto","update:modelValue"],setup(l,{emit:a}){const t=l,s=is(),d=Ba("formInline",!1),c=Ba("inputGroup",!1),p=a,g=ae(()=>t.modelValue=="_AUTO_"),_=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed dark:disabled:bg-darkmode-800/50 dark:disabled:border-transparent","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50 [&[readonly]]:dark:border-transparent","transition duration-200 ease-in-out w-full text-sm border-slate-200 shadow-sm rounded-md placeholder:text-slate-400/90 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50 dark:placeholder:text-slate-500/80",t.formInputSize=="sm"&&"text-xs py-1.5 px-2",t.formInputSize=="lg"&&"text-lg py-1.5 px-4",t.rounded&&"rounded-full",d&&"flex-1",c&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r z-10",typeof s.class=="string"&&s.class])),v=ae({get(){return t.modelValue===void 0?t.value:t.modelValue},set(b){p("update:modelValue",b)}}),h=()=>{p("setAuto")};return(b,y)=>(k(),I("div",Ope,[n("div",Fpe,[xn(n("input",ds({disabled:g.value,class:_.value,type:t.type},e(ls).omit(e(s),"class"),{"onUpdate:modelValue":y[0]||(y[0]=u=>v.value=u)}),null,16,Npe),[[uP,v.value]])]),n("button",{type:"button",class:"px-3 py-2.5 text-xs font-medium border border-slate-200 rounded-md bg-slate-100 text-slate-600 hover:bg-slate-200 whitespace-nowrap",onClick:h}," Auto ")]))}});var pB={exports:{}};(function(l,a){(function(t,s){l.exports=s()})(li,function(){var t=1e3,s=6e4,d=36e5,c="millisecond",p="second",g="minute",_="hour",v="day",h="week",b="month",y="quarter",u="year",C="date",x="Invalid Date",z=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,P=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,F={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(ve){var de=["th","st","nd","rd"],re=ve%100;return"["+ve+(de[(re-20)%10]||de[re]||de[0])+"]"}},N=function(ve,de,re){var K=String(ve);return!K||K.length>=de?ve:""+Array(de+1-K.length).join(re)+ve},M={s:N,z:function(ve){var de=-ve.utcOffset(),re=Math.abs(de),K=Math.floor(re/60),Q=re%60;return(de<=0?"+":"-")+N(K,2,"0")+":"+N(Q,2,"0")},m:function ve(de,re){if(de.date()1)return ve(ue[0])}else{var ke=de.name;L[ke]=de,Q=ke}return!K&&Q&&(S=Q),Q||!K&&S},H=function(ve,de){if(f(ve))return ve.clone();var re=typeof de=="object"?de:{};return re.date=ve,re.args=arguments,new W(re)},O=M;O.l=T,O.i=f,O.w=function(ve,de){return H(ve,{locale:de.$L,utc:de.$u,x:de.$x,$offset:de.$offset})};var W=function(){function ve(re){this.$L=T(re.locale,null,!0),this.parse(re),this.$x=this.$x||re.x||{},this[E]=!0}var de=ve.prototype;return de.parse=function(re){this.$d=function(K){var Q=K.date,se=K.utc;if(Q===null)return new Date(NaN);if(O.u(Q))return new Date;if(Q instanceof Date)return new Date(Q);if(typeof Q=="string"&&!/Z$/i.test(Q)){var ue=Q.match(z);if(ue){var ke=ue[2]-1||0,we=(ue[7]||"0").substring(0,3);return se?new Date(Date.UTC(ue[1],ke,ue[3]||1,ue[4]||0,ue[5]||0,ue[6]||0,we)):new Date(ue[1],ke,ue[3]||1,ue[4]||0,ue[5]||0,ue[6]||0,we)}}return new Date(Q)}(re),this.init()},de.init=function(){var re=this.$d;this.$y=re.getFullYear(),this.$M=re.getMonth(),this.$D=re.getDate(),this.$W=re.getDay(),this.$H=re.getHours(),this.$m=re.getMinutes(),this.$s=re.getSeconds(),this.$ms=re.getMilliseconds()},de.$utils=function(){return O},de.isValid=function(){return this.$d.toString()!==x},de.isSame=function(re,K){var Q=H(re);return this.startOf(K)<=Q&&Q<=this.endOf(K)},de.isAfter=function(re,K){return H(re)L.toString())};let F=C.replace(c,(L,E,f,T,H)=>["#",E,E,f,f,T,T,H?H+H:""].join("")).match(d);if(F!==null)return{mode:"rgb",color:[parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16)].map(L=>L.toString()),alpha:F[4]?(parseInt(F[4],16)/255).toString():void 0};var N;let M=(N=C.match(h))!==null&&N!==void 0?N:C.match(b);if(M===null)return null;let S=[M[2],M[3],M[4]].filter(Boolean).map(L=>L.toString());return S.length===2&&S[0].startsWith("var(")?{mode:M[1],color:[S[0]],alpha:S[1]}:!x&&S.length!==3||S.length<3&&!S.some(L=>/^var\(.*?\)$/.test(L))?null:{mode:M[1],color:S,alpha:(z=M[5])===null||z===void 0||(P=z.toString)===null||P===void 0?void 0:P.call(z)}}function u({mode:C,color:x,alpha:z}){let P=z!==void 0;return C==="rgba"||C==="hsla"?`${C}(${x.join(", ")}${P?`, ${z}`:""})`:`${C}(${x.join(" ")}${P?` / ${z}`:""})`}})(Bpe);_B.extend(zpe);const na=(l,a)=>_B(l).format(a),Ht=l=>{if(l!=null&&l!==""){let a=l.toString().trim();const t=a.startsWith("-");let[s,d]=a.split(".");s=s.replace(/\D/g,"");const c=s.length%3;let p=s.substr(0,c);const g=s.substr(c).match(/\d{3}/g);let _;return g&&(_=c?".":"",p+=_+g.join(".")),d&&(d=d.replace(/0+$/,""),d.length>0&&(p+=","+d)),t&&p!==""?`-${p}`:p}else return""},Er=(l,a=300,t=s=>{})=>{l.style.transitionProperty="height, margin, padding",l.style.transitionDuration=a+"ms",l.style.height=l.offsetHeight+"px",l.offsetHeight,l.style.overflow="hidden",l.style.height="0",l.style.paddingTop="0",l.style.paddingBottom="0",l.style.marginTop="0",l.style.marginBottom="0",window.setTimeout(()=>{l.style.display="none",l.style.removeProperty("height"),l.style.removeProperty("padding-top"),l.style.removeProperty("padding-bottom"),l.style.removeProperty("margin-top"),l.style.removeProperty("margin-bottom"),l.style.removeProperty("overflow"),l.style.removeProperty("transition-duration"),l.style.removeProperty("transition-property"),t(l)},a)},Ar=(l,a=300,t=s=>{})=>{l.style.removeProperty("display");let s=window.getComputedStyle(l).display;s==="none"&&(s="block"),l.style.display=s;let d=l.offsetHeight;l.style.overflow="hidden",l.style.height="0",l.style.paddingTop="0",l.style.paddingBottom="0",l.style.marginTop="0",l.style.marginBottom="0",l.offsetHeight,l.style.transitionProperty="height, margin, padding",l.style.transitionDuration=a+"ms",l.style.height=d+"px",l.style.removeProperty("padding-top"),l.style.removeProperty("padding-bottom"),l.style.removeProperty("margin-top"),l.style.removeProperty("margin-bottom"),window.setTimeout(()=>{l.style.removeProperty("height"),l.style.removeProperty("overflow"),l.style.removeProperty("transition-duration"),l.style.removeProperty("transition-property"),t(l)},a)},Aa=l=>{const a={},t=l,s=Et(l)?l.response:t==null?void 0:t.response;if(s&&s.data){const d=s.data;if(d.errors&&typeof d.errors=="object"){for(const c of Object.keys(d.errors)){const p=d.errors[c];Array.isArray(p)?a[c]=p:p!=null&&(a[c]=[String(p)])}return a}if(d.message)return a.error=[String(d.message)],a}return l instanceof Error&&l.message?a.error=[l.message]:t!=null&&t.message?a.error=[String(t.message)]:a.error=["Unknown error"],a},Ke=lt({__name:"FormInputCurrency",props:{modelValue:{},formInputSize:{},rounded:{type:Boolean},allowNegative:{type:Boolean,default:!0}},emits:["update:modelValue","change"],setup(l,{emit:a}){const t=l,s=a,d=is(),c=Ba("formInline",!1),p=Ba("inputGroup",!1),g=$(null),_=$(!1),v=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed dark:disabled:bg-darkmode-800/50 dark:disabled:border-transparent","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50 [&[readonly]]:dark:border-transparent","transition duration-200 ease-in-out w-full text-sm border-slate-200 shadow-sm rounded-md placeholder:text-slate-400/90 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50 dark:placeholder:text-slate-500/80",t.formInputSize=="sm"&&"text-xs py-1.5 px-2",t.formInputSize=="lg"&&"text-lg py-1.5 px-4",t.rounded&&"rounded-full",c&&"flex-1",p&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r z-10",typeof d.class=="string"&&d.class,"text-right"])),h=$("");ra(()=>t.modelValue,x=>{_.value||(h.value=Ht(x??""))},{immediate:!0});const b=x=>{const z=x.trim();if(z===""||z==="-")return 0;const P=z.startsWith("-")&&t.allowNegative,F=z.replace(/-/g,"").replace(/\s/g,""),N=F.match(/[.,]/g)??[];let M=F;if(N.length>0){const L=F.lastIndexOf("."),E=F.lastIndexOf(","),f=Math.max(L,E),T=f>=0?F[f]:"",H=N.length;H===1&&f>=0?M=F.length-f-1===3?F.replace(/[.,]/g,""):F.replace(T,"#DECIMAL#").replace(/[.,]/g,"").replace("#DECIMAL#","."):H>1&&(M=F.split(T).slice(1).every(ve=>ve.length===3)?F.replace(/[.,]/g,""):F.replace(T,"#DECIMAL#").replace(/[.,]/g,"").replace("#DECIMAL#","."))}const S=Number(M);return Number.isNaN(S)?0:P?S*-1:S},y=x=>{let P=x.target.value;t.allowNegative||(P=P.replace(/-/g,""),h.value=P),s("update:modelValue",b(P))},u=()=>{_.value=!0,t.modelValue!==void 0&&t.modelValue!==null&&(h.value=t.modelValue.toString().replace(".",","))},C=()=>{_.value=!1;const x=t.allowNegative?Number(t.modelValue??0):Math.max(Number(t.modelValue??0),0);x!==Number(t.modelValue??0)&&s("update:modelValue",x),h.value=Ht(x),s("change",x)};return(x,z)=>xn((k(),I("input",ds({ref_key:"inputRef",ref:g,class:v.value,type:"text"},e(ls).omit(e(d),"class"),{"onUpdate:modelValue":z[0]||(z[0]=P=>h.value=P),onInput:y,onFocus:u,onBlur:C}),null,16)),[[Wl,h.value]])}}),es=lt({__name:"FormInputDateTime",props:{modelValue:{},formInputSize:{},rounded:{type:Boolean}},emits:["update:modelValue","change"],setup(l,{emit:a}){const t=l,s=a,d=is(),c=Ba("formInline",!1),p=Ba("inputGroup",!1),g=$(null),_=$(!1),v=$(""),h=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed dark:disabled:bg-darkmode-800/50 dark:disabled:border-transparent","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50 [&[readonly]]:dark:border-transparent","transition duration-200 ease-in-out w-full text-sm border-slate-200 shadow-sm rounded-md placeholder:text-slate-400/90 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50 dark:placeholder:text-slate-500/80",t.formInputSize=="sm"&&"text-xs py-1.5 px-2",t.formInputSize=="lg"&&"text-lg py-1.5 px-4",t.rounded&&"rounded-full",c&&"flex-1",p&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r z-10",typeof d.class=="string"&&d.class]));ra(()=>t.modelValue,x=>{if(!_.value){if(!x){v.value="";return}v.value=na(x,"YYYY-MM-DDTHH:mm:ss")}},{immediate:!0});const b=x=>{const z=x.target;v.value=z.value},y=x=>{const P=x.target.value;if(!P){s("update:modelValue",null),s("change",null);return}const[F,N]=P.split("T");let M=N??"";M?M.split(":").length===2&&(M=`${M}:00`):M="00:00:00";const S=`${F} ${M}`;s("update:modelValue",S),s("change",S)},u=()=>{_.value=!0},C=()=>{_.value=!1};return(x,z)=>xn((k(),I("input",ds({ref_key:"inputRef",ref:g,class:h.value,type:"datetime-local",step:"1"},e(ls).omit(e(d),"class"),{"onUpdate:modelValue":z[0]||(z[0]=P=>v.value=P),onInput:b,onChange:y,onFocus:u,onBlur:C}),null,16)),[[Wl,v.value]])}}),Gpe={class:"flex min-w-0 items-center gap-2"},Wpe={class:"min-w-0 flex-1"},Zpe=["disabled"],zu="_AUTO_",Ua=lt({__name:"FormInputDateTimeAuto",props:{modelValue:{},formInputSize:{},rounded:{type:Boolean}},emits:["update:modelValue","change"],setup(l,{emit:a}){const t=l,s=a,d=is(),c=Ba("formInline",!1),p=Ba("inputGroup",!1),g=$(null),_=$(!1),v=$(""),h=ae(()=>t.modelValue===zu),b=ae(()=>ss(["disabled:bg-slate-100 disabled:cursor-not-allowed dark:disabled:bg-darkmode-800/50 dark:disabled:border-transparent","[&[readonly]]:bg-slate-100 [&[readonly]]:cursor-not-allowed [&[readonly]]:dark:bg-darkmode-800/50 [&[readonly]]:dark:border-transparent","transition duration-200 ease-in-out w-full min-w-0 text-sm border-slate-200 shadow-sm rounded-md placeholder:text-slate-400/90 focus:ring-4 focus:ring-primary focus:ring-opacity-20 focus:border-primary focus:border-opacity-40 dark:bg-darkmode-800 dark:border-transparent dark:focus:ring-slate-700 dark:focus:ring-opacity-50 dark:placeholder:text-slate-500/80",t.formInputSize=="sm"&&"text-xs py-1.5 px-2",t.formInputSize=="lg"&&"text-lg py-1.5 px-4",t.rounded&&"rounded-full",c&&"flex-1",p&&"rounded-none [&:not(:first-child)]:border-l-transparent first:rounded-l last:rounded-r z-10",typeof d.class=="string"&&d.class])),y=ae(()=>!!d.disabled||h.value);ra(()=>t.modelValue,S=>{if(!_.value){if(!S||S===zu){v.value="";return}v.value=na(S,"YYYY-MM-DDTHH:mm:ss")}},{immediate:!0});let u=null;const C=()=>{u!==null&&(window.clearInterval(u),u=null)},x=()=>{C(),u=window.setInterval(()=>{if(!h.value)return;const S=new Date().toString();v.value=na(S,"YYYY-MM-DDTHH:mm:ss")},1e3)};ra(h,S=>{if(S)x();else{C();const L=t.modelValue;!L||L===zu?v.value="":v.value=na(L,"YYYY-MM-DDTHH:mm:ss")}},{immediate:!0});const z=S=>{const L=S.target;v.value=L.value},P=S=>{const E=S.target.value;if(!E){s("update:modelValue",null),s("change",null);return}const[f,T]=E.split("T");let H=T??"";H?H.split(":").length===2&&(H=`${H}:00`):H="00:00:00";const O=`${f} ${H}`;s("update:modelValue",O),s("change",O)},F=()=>{h.value?(s("update:modelValue",null),s("change",null)):(s("update:modelValue",zu),s("change",zu))};RI(()=>{C()});const N=()=>{_.value=!0},M=()=>{_.value=!1};return(S,L)=>(k(),I("div",Gpe,[n("div",Wpe,[xn(n("input",ds({ref_key:"inputRef",ref:g,class:b.value,type:"datetime-local",step:"1"},e(ls).omit(e(d),"class"),{"onUpdate:modelValue":L[0]||(L[0]=E=>v.value=E),disabled:y.value,onInput:z,onChange:P,onFocus:N,onBlur:M}),null,16,Zpe),[[Wl,v.value]])]),n("button",{type:"button",class:"px-3 py-2.5 text-xs font-medium border border-slate-200 rounded-md bg-slate-100 text-slate-600 hover:bg-slate-200 whitespace-nowrap",onClick:F}," Auto ")]))}});class hB{constructor(){qt(this,"ziggyRoute");qt(this,"ziggyRouteStore",Da());qt(this,"errorHandlerService");this.ziggyRoute=this.ziggyRouteStore.getZiggy,this.errorHandlerService=new qa}async upload(a){const t={success:!1};try{const s=new FormData;s.append("image",a);const d=nt("api.post.expense.image.upload",void 0,!1,this.ziggyRoute);Ct.defaults.headers.common["Content-Type"]="multipart/form-data";const c=await Ct.post(d,s);return t.success=!0,t.data=c.data.data,t}catch(s){return s instanceof Error&&s.message.includes("Ziggy error")?this.errorHandlerService.generateZiggyUrlErrorServiceResponse(s.message):Et(s)?this.errorHandlerService.generateAxiosErrorServiceResponse(s):t}}}const Kpe={class:"grid grid-cols-12 gap-4"},Ype={class:"col-span-12 sm:col-span-4 lg:col-span-3"},Xpe={class:"flex flex-col gap-4"},Qpe={class:"text-slate-500 text-center"},Jpe={class:"font-medium text-primary"},e_e=n("div",{class:"text-slate-400 text-xs mt-1"}," JPG, PNG ",-1),t_e={class:"flex gap-2"},a_e={key:0,class:"flex justify-center p-2"},s_e={class:"col-span-12 sm:col-span-8 lg:col-span-9"},o_e={key:0,class:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-4"},n_e=["onClick"],l_e=["src"],r_e={class:"absolute inset-0 bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity flex flex-col justify-center items-center gap-2"},i_e={key:0,class:"absolute top-2 left-2 bg-primary text-white text-xs px-2 py-1 rounded shadow-sm"},d_e=["onClick"],c_e=["src"],u_e={class:"absolute inset-0 bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity flex flex-col justify-center items-center gap-2"},p_e={key:0,class:"absolute top-2 left-2 bg-primary text-white text-xs px-2 py-1 rounded shadow-sm"},__e={key:1,class:"h-full flex items-center justify-center text-slate-400 border-2 border-dashed rounded-md bg-slate-50 dark:bg-darkmode-600/20 min-h-[150px]"},m_e={class:"flex items-center justify-between w-full"},v_e=n("div",{class:"font-medium"}," Preview ",-1),h_e=["src"],f_e={class:"mr-auto text-base font-medium"},g_e={class:"relative w-full aspect-video bg-black rounded overflow-hidden"},rV=lt({__name:"FormImagesField",props:{entity:{},modelValue:{default:()=>[]},existingImages:{default:()=>[]},deleteImageIds:{default:()=>[]}},emits:["update:modelValue","update:existingImages","update:deleteImageIds"],setup(l,{emit:a}){const t=l,s=a,{t:d}=At(),c=new Upe,p=new hB,g=ae({get:()=>t.modelValue,set:K=>s("update:modelValue",K)}),_=ae({get:()=>t.existingImages??[],set:K=>s("update:existingImages",K)}),v=ae({get:()=>t.deleteImageIds??[],set:K=>s("update:deleteImageIds",K)}),h=$([]),b=$(!1),y=$(null),u=$(null),C=$(!1),x=$(!1),z=$(null),P=$(null),F=$(null),N=K=>{const Q=g.value.find(se=>se.hash===K.hash);return Q?Q.is_main:!1},M=async K=>t.entity==="expense"?p.upload(K):c.upload(K),S=async K=>{b.value=!0;try{const Q=await M(K);if(!Q.success||!Q.data)return;const se={id:Q.data.id,hash:Q.data.hash,url:Q.data.url,is_main:Q.data.is_main};h.value=[...h.value,se];const ue=[...g.value];ue.push({hash:se.hash,is_main:ue.length===0}),g.value=ue}finally{b.value=!1}},L=K=>{const Q=K.target,se=Q.files;se&&se.length>0&&S(se[0]),Q.value=""},E=K=>{var se;const Q=(se=K.dataTransfer)==null?void 0:se.files;Q&&Q.length>0&&S(Q[0])},f=()=>{var K;(K=y.value)==null||K.click()},T=K=>{K&&(u.value=K,C.value=!0)},H=()=>{C.value=!1,u.value=null},O=K=>{const Q=[..._.value],se=Q[K];if(!se)return;const ue=[...v.value];ue.includes(se.id)||ue.push(se.id),v.value=ue,Q.splice(K,1),_.value=Q;const ke=[...g.value],we=ke.findIndex(Ce=>Ce.hash===se.hash);we!==-1&&ke.splice(we,1),ke.length>0&&!ke.some(Ce=>Ce.is_main)&&(ke[0].is_main=!0),g.value=ke},W=K=>{const Q=[...h.value],se=Q[K];if(!se)return;Q.splice(K,1),h.value=Q;const ue=[...g.value],ke=ue.findIndex(we=>we.hash===se.hash);ke!==-1&&ue.splice(ke,1),ue.length>0&&!ue.some(we=>we.is_main)&&(ue[0].is_main=!0),g.value=ue},ie=K=>{g.value=g.value.map(Q=>({hash:Q.hash,is_main:Q.hash===K.hash})),_.value=_.value.map(Q=>({...Q,is_main:Q.hash===K.hash})),h.value=h.value.map(Q=>({...Q,is_main:Q.hash===K.hash}))},ve=async()=>{x.value=!0;try{F.value=await navigator.mediaDevices.getUserMedia({video:!0}),z.value&&(z.value.srcObject=F.value)}catch(K){console.error("Error accessing camera:",K)}},de=()=>{F.value&&(F.value.getTracks().forEach(K=>K.stop()),F.value=null),x.value=!1},re=()=>{if(!z.value||!P.value)return;const K=z.value,Q=P.value;Q.width=K.videoWidth,Q.height=K.videoHeight;const se=Q.getContext("2d");se&&(se.drawImage(K,0,0,Q.width,Q.height),Q.toBlob(ue=>{if(!ue)return;const ke=t.entity==="expense"?"expense":"product",we=new File([ue],`${ke}_${Date.now()}.jpg`,{type:"image/jpeg"});S(we),de()},"image/jpeg"))};return Fs(()=>{de()}),(K,Q)=>(k(),I(Pe,null,[n("div",Kpe,[n("div",Ype,[n("div",Xpe,[n("div",{class:"border-2 border-dashed border-slate-300 dark:border-darkmode-400 rounded-md p-6 flex flex-col justify-center items-center cursor-pointer hover:bg-slate-50 dark:hover:bg-darkmode-600/50 transition-colors",onDragover:Q[0]||(Q[0]=da(()=>{},["prevent"])),onDrop:da(E,["prevent"]),onClick:f},[o(e(ee),{icon:"UploadCloud",class:"w-10 h-10 text-slate-400 mb-2"}),n("div",Qpe,[n("span",Jpe,r(e(d)("components.file-upload.browse")),1),m(" "+r(e(d)("components.file-upload.or_drag_drop")),1)]),e_e,n("input",{ref_key:"fileInput",ref:y,type:"file",accept:"image/*",class:"hidden",onChange:L},null,544)],32),n("div",t_e,[o(e(J),{type:"button",variant:"outline-primary",class:"w-full",onClick:ve},{default:i(()=>[o(e(ee),{icon:"Camera",class:"w-4 h-4 mr-2"}),m(" "+r(e(d)("components.file-upload.camera")),1)]),_:1})]),b.value?(k(),I("div",a_e,[o(e(ee),{icon:"Loader2",class:"w-6 h-6 animate-spin text-primary"})])):He("",!0)])]),n("div",s_e,[_.value.length+h.value.length>0?(k(),I("div",o_e,[(k(!0),I(Pe,null,ht(_.value,(se,ue)=>(k(),I("div",{key:`existing-${se.id}`,class:"relative group border rounded-md overflow-hidden aspect-square bg-slate-100 dark:bg-darkmode-600 cursor-zoom-in",onClick:ke=>T(se.url)},[n("img",{src:se.url,class:"w-full h-full object-cover"},null,8,l_e),n("div",r_e,[o(e(J),{type:"button",variant:"danger",size:"sm",class:"w-8 h-8 rounded-full p-0",onClick:da(ke=>O(ue),["stop"])},{default:i(()=>[o(e(ee),{icon:"Trash2",class:"w-4 h-4"})]),_:2},1032,["onClick"]),o(e(J),{type:"button",variant:N(se)?"primary":"secondary",size:"sm",class:"text-xs px-2 py-1",onClick:da(ke=>ie(se),["stop"])},{default:i(()=>[m(r(N(se)?"Main":"Set Main"),1)]),_:2},1032,["variant","onClick"])]),N(se)?(k(),I("div",i_e," Main ")):He("",!0)],8,n_e))),128)),(k(!0),I(Pe,null,ht(h.value,(se,ue)=>(k(),I("div",{key:`new-${se.hash}`,class:"relative group border rounded-md overflow-hidden aspect-square bg-slate-100 dark:bg-darkmode-600 cursor-zoom-in",onClick:ke=>T(se.url)},[n("img",{src:se.url,class:"w-full h-full object-cover"},null,8,c_e),n("div",u_e,[o(e(J),{type:"button",variant:"danger",size:"sm",class:"w-8 h-8 rounded-full p-0",onClick:da(ke=>W(ue),["stop"])},{default:i(()=>[o(e(ee),{icon:"Trash2",class:"w-4 h-4"})]),_:2},1032,["onClick"]),o(e(J),{type:"button",variant:N(se)?"primary":"secondary",size:"sm",class:"text-xs px-2 py-1",onClick:da(ke=>ie(se),["stop"])},{default:i(()=>[m(r(N(se)?"Main":"Set Main"),1)]),_:2},1032,["variant","onClick"])]),N(se)?(k(),I("div",p_e," Main ")):He("",!0)],8,d_e))),128))])):(k(),I("div",__e,r(e(d)("components.data-list.data_not_found")),1))])]),o(e(Kt),{open:C.value,size:"lg",onClose:H},{default:i(()=>[o(e(Kt).Panel,{class:"flex flex-col"},{default:i(()=>[o(e(Kt).Title,null,{default:i(()=>[n("div",m_e,[v_e,o(e(J),{type:"button",variant:"outline-secondary",size:"sm",onClick:H},{default:i(()=>[o(e(ee),{icon:"X",class:"w-4 h-4"})]),_:1})])]),_:1}),o(e(Kt).Description,{class:"bg-slate-900 flex items-center justify-center"},{default:i(()=>[u.value?(k(),I("img",{key:0,src:u.value,class:"max-h-[80vh] max-w-full object-contain"},null,8,h_e)):He("",!0)]),_:1})]),_:1})]),_:1},8,["open"]),o(e(Kt),{open:x.value,onClose:de},{default:i(()=>[o(e(Kt).Panel,null,{default:i(()=>[o(e(Kt).Title,null,{default:i(()=>[n("h2",f_e,r(e(d)("components.file-upload.camera")),1)]),_:1}),o(e(Kt).Description,null,{default:i(()=>[n("div",g_e,[n("video",{ref_key:"videoRef",ref:z,autoplay:"",playsinline:"",class:"w-full h-full object-cover"},null,512),n("canvas",{ref_key:"canvasRef",ref:P,class:"hidden"},null,512)])]),_:1}),o(e(Kt).Footer,null,{default:i(()=>[o(e(J),{type:"button",variant:"outline-secondary",class:"w-24 mr-1",onClick:de},{default:i(()=>[m(r(e(d)("components.buttons.cancel")),1)]),_:1}),o(e(J),{type:"button",variant:"primary",class:"w-24",onClick:re},{default:i(()=>[m(r(e(d)("components.file-upload.capture")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])],64))}}),y_e={key:0,class:"mt-1 text-danger"},B=lt({__name:"FormErrorMessages",props:{messages:{default:""}},setup(l){const t=ho(l,"messages"),s=ae(()=>t.value.length!=0);return(d,c)=>s.value?(k(),I("span",y_e,r(t.value),1)):He("",!0)}});function tT(l,a){l.split(/\s+/).forEach(t=>{a(t)})}class b_e{constructor(){this._events=void 0,this._events={}}on(a,t){tT(a,s=>{const d=this._events[s]||[];d.push(t),this._events[s]=d})}off(a,t){var s=arguments.length;if(s===0){this._events={};return}tT(a,d=>{if(s===1){delete this._events[d];return}const c=this._events[d];c!==void 0&&(c.splice(c.indexOf(t),1),this._events[d]=c)})}trigger(a,...t){var s=this;tT(a,d=>{const c=s._events[d];c!==void 0&&c.forEach(p=>{p.apply(s,t)})})}}function w_e(l){return l.plugins={},class extends l{constructor(...a){super(...a),this.plugins={names:[],settings:{},requested:{},loaded:{}}}static define(a,t){l.plugins[a]={name:a,fn:t}}initializePlugins(a){var t,s;const d=this,c=[];if(Array.isArray(a))a.forEach(p=>{typeof p=="string"?c.push(p):(d.plugins.settings[p.name]=p.options,c.push(p.name))});else if(a)for(t in a)a.hasOwnProperty(t)&&(d.plugins.settings[t]=a[t],c.push(t));for(;s=c.shift();)d.require(s)}loadPlugin(a){var t=this,s=t.plugins,d=l.plugins[a];if(!l.plugins.hasOwnProperty(a))throw new Error('Unable to find "'+a+'" plugin');s.requested[a]=!0,s.loaded[a]=d.fn.apply(t,[t.plugins.settings[a]||{}]),s.names.push(a)}require(a){var t=this,s=t.plugins;if(!t.plugins.loaded.hasOwnProperty(a)){if(s.requested[a])throw new Error('Plugin has circular dependency ("'+a+'")');t.loadPlugin(a)}return s.loaded[a]}}}/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */const iV=l=>(l=l.filter(Boolean),l.length<2?l[0]||"":x_e(l)==1?"["+l.join("")+"]":"(?:"+l.join("|")+")"),fB=l=>{if(!k_e(l))return l.join("");let a="",t=0;const s=()=>{t>1&&(a+="{"+t+"}")};return l.forEach((d,c)=>{if(d===l[c-1]){t++;return}s(),a+=d,t=1}),s(),a},gB=l=>{let a=GP(l);return iV(a)},k_e=l=>new Set(l).size!==l.length,Ep=l=>(l+"").replace(/([\$\(\)\*\+\.\?\[\]\^\{\|\}\\])/gu,"\\$1"),x_e=l=>l.reduce((a,t)=>Math.max(a,$_e(t)),0),$_e=l=>GP(l).length,GP=l=>Array.from(l);/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */const yB=l=>{if(l.length===1)return[[l]];let a=[];const t=l.substring(1);return yB(t).forEach(function(d){let c=d.slice(0);c[0]=l.charAt(0)+c[0],a.push(c),c=d.slice(0),c.unshift(l.charAt(0)),a.push(c)}),a};/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */const C_e=[[0,65535]],S_e="[̀-ͯ·ʾʼ]";let hI,bB;const E_e=3,WP={},$N={"/":"⁄∕",0:"߀",a:"ⱥɐɑ",aa:"ꜳ",ae:"æǽǣ",ao:"ꜵ",au:"ꜷ",av:"ꜹꜻ",ay:"ꜽ",b:"ƀɓƃ",c:"ꜿƈȼↄ",d:"đɗɖᴅƌꮷԁɦ",e:"ɛǝᴇɇ",f:"ꝼƒ",g:"ǥɠꞡᵹꝿɢ",h:"ħⱨⱶɥ",i:"ɨı",j:"ɉȷ",k:"ƙⱪꝁꝃꝅꞣ",l:"łƚɫⱡꝉꝇꞁɭ",m:"ɱɯϻ",n:"ꞥƞɲꞑᴎлԉ",o:"øǿɔɵꝋꝍᴑ",oe:"œ",oi:"ƣ",oo:"ꝏ",ou:"ȣ",p:"ƥᵽꝑꝓꝕρ",q:"ꝗꝙɋ",r:"ɍɽꝛꞧꞃ",s:"ßȿꞩꞅʂ",t:"ŧƭʈⱦꞇ",th:"þ",tz:"ꜩ",u:"ʉ",v:"ʋꝟʌ",vy:"ꝡ",w:"ⱳ",y:"ƴɏỿ",z:"ƶȥɀⱬꝣ",hv:"ƕ"};for(let l in $N){let a=$N[l]||"";for(let t=0;t{hI===void 0&&(hI=T_e(l||C_e))},CN=(l,a="NFKD")=>l.normalize(a),fI=l=>GP(l).reduce((a,t)=>a+I_e(t),""),I_e=l=>(l=CN(l).toLowerCase().replace(A_e,a=>WP[a]||""),CN(l,"NFC"));function*V_e(l){for(const[a,t]of l)for(let s=a;s<=t;s++){let d=String.fromCharCode(s),c=fI(d);c!=d.toLowerCase()&&(c.length>E_e||c.length!=0&&(yield{folded:c,composed:d,code_point:s}))}}const M_e=l=>{const a={},t=(s,d)=>{const c=a[s]||new Set,p=new RegExp("^"+gB(c)+"$","iu");d.match(p)||(c.add(Ep(d)),a[s]=c)};for(let s of V_e(l))t(s.folded,s.folded),t(s.folded,s.composed);return a},T_e=l=>{const a=M_e(l),t={};let s=[];for(let c in a){let p=a[c];p&&(t[c]=gB(p)),c.length>1&&s.push(Ep(c))}s.sort((c,p)=>p.length-c.length);const d=iV(s);return bB=new RegExp("^"+d,"u"),t},D_e=(l,a=1)=>{let t=0;return l=l.map(s=>(hI[s]&&(t+=s.length),hI[s]||s)),t>=a?fB(l):""},P_e=(l,a=1)=>(a=Math.max(a,l.length-1),iV(yB(l).map(t=>D_e(t,a)))),SN=(l,a=!0)=>{let t=l.length>1?1:0;return iV(l.map(s=>{let d=[];const c=a?s.length():s.length()-1;for(let p=0;p{for(const t of a){if(t.start!=l.start||t.end!=l.end||t.substrs.join("")!==l.substrs.join(""))continue;let s=l.parts;const d=p=>{for(const g of s){if(g.start===p.start&&g.substr===p.substr)return!1;if(!(p.length==1||g.length==1)&&(p.startg.start||g.startp.start))return!0}return!1};if(!(t.parts.filter(d).length>0))return!0}return!1};class gI{constructor(){this.parts=[],this.substrs=[],this.start=0,this.end=0}add(a){a&&(this.parts.push(a),this.substrs.push(a.substr),this.start=Math.min(a.start,this.start),this.end=Math.max(a.end,this.end))}last(){return this.parts[this.parts.length-1]}length(){return this.parts.length}clone(a,t){let s=new gI,d=JSON.parse(JSON.stringify(this.parts)),c=d.pop();for(const _ of d)s.add(_);let p=t.substr.substring(0,a-c.start),g=p.length;return s.add({start:c.start,end:c.start+g,length:g,substr:p}),s}}const R_e=l=>{L_e(),l=fI(l);let a="",t=[new gI];for(let s=0;s0){_=_.sort((h,b)=>h.length()-b.length());for(let h of _)U_e(h,t)||t.push(h);continue}if(s>0&&v.size==1&&!v.has("3")){a+=SN(t,!1);let h=new gI;const b=t[0];b&&h.add(b.last()),t=[h]}}return a+=SN(t,!0),a};/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */const O_e=(l,a)=>{if(l)return l[a]},F_e=(l,a)=>{if(l){for(var t,s=a.split(".");(t=s.shift())&&(l=l[t]););return l}},aT=(l,a,t)=>{var s,d;return!l||(l=l+"",a.regex==null)||(d=l.search(a.regex),d===-1)?0:(s=a.string.length/l.length,d===0&&(s+=.5),s*t)},sT=(l,a)=>{var t=l[a];if(typeof t=="function")return t;t&&!Array.isArray(t)&&(l[a]=[t])},cn=(l,a)=>{if(Array.isArray(l))l.forEach(a);else for(var t in l)l.hasOwnProperty(t)&&a(l[t],t)},N_e=(l,a)=>typeof l=="number"&&typeof a=="number"?l>a?1:la?1:a>l?-1:0);/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */class j_e{constructor(a,t){this.items=void 0,this.settings=void 0,this.items=a,this.settings=t||{diacritics:!0}}tokenize(a,t,s){if(!a||!a.length)return[];const d=[],c=a.split(/\s+/);var p;return s&&(p=new RegExp("^("+Object.keys(s).map(Ep).join("|")+"):(.*)$")),c.forEach(g=>{let _,v=null,h=null;p&&(_=g.match(p))&&(v=_[1],g=_[2]),g.length>0&&(this.settings.diacritics?h=R_e(g)||null:h=Ep(g),h&&t&&(h="\\b"+h)),d.push({string:g,regex:h?new RegExp(h,"iu"):null,field:v})}),d}getScoreFunction(a,t){var s=this.prepareSearch(a,t);return this._getScoreFunction(s)}_getScoreFunction(a){const t=a.tokens,s=t.length;if(!s)return function(){return 0};const d=a.options.fields,c=a.weights,p=d.length,g=a.getAttrFn;if(!p)return function(){return 1};const _=function(){return p===1?function(v,h){const b=d[0].field;return aT(g(h,b),v,c[b]||1)}:function(v,h){var b=0;if(v.field){const y=g(h,v.field);!v.regex&&y?b+=1/p:b+=aT(y,v,1)}else cn(c,(y,u)=>{b+=aT(g(h,u),v,y)});return b/p}}();return s===1?function(v){return _(t[0],v)}:a.options.conjunction==="and"?function(v){var h,b=0;for(let y of t){if(h=_(y,v),h<=0)return 0;b+=h}return b/s}:function(v){var h=0;return cn(t,b=>{h+=_(b,v)}),h/s}}getSortFunction(a,t){var s=this.prepareSearch(a,t);return this._getSortFunction(s)}_getSortFunction(a){var t,s=[];const d=this,c=a.options,p=!a.query&&c.sort_empty?c.sort_empty:c.sort;if(typeof p=="function")return p.bind(this);const g=function(h,b){return h==="$score"?b.score:a.getAttrFn(d.items[b.id],h)};if(p)for(let v of p)(a.query||v.field!=="$score")&&s.push(v);if(a.query){t=!0;for(let v of s)if(v.field==="$score"){t=!1;break}t&&s.unshift({field:"$score",direction:"desc"})}else s=s.filter(v=>v.field!=="$score");return s.length?function(v,h){var b,y;for(let u of s)if(y=u.field,b=(u.direction==="desc"?-1:1)*N_e(g(y,v),g(y,h)),b)return b;return 0}:null}prepareSearch(a,t){const s={};var d=Object.assign({},t);if(sT(d,"sort"),sT(d,"sort_empty"),d.fields){sT(d,"fields");const c=[];d.fields.forEach(p=>{typeof p=="string"&&(p={field:p,weight:1}),c.push(p),s[p.field]="weight"in p?p.weight:1}),d.fields=c}return{options:d,query:a.toLowerCase().trim(),tokens:this.tokenize(a,d.respect_word_boundaries,s),total:0,items:[],weights:s,getAttrFn:d.nesting?F_e:O_e}}search(a,t){var s=this,d,c;c=this.prepareSearch(a,t),t=c.options,a=c.query;const p=t.score||s._getScoreFunction(c);a.length?cn(s.items,(_,v)=>{d=p(_),(t.filter===!1||d>0)&&c.items.push({score:d,id:v})}):cn(s.items,(_,v)=>{c.items.push({score:1,id:v})});const g=s._getSortFunction(c);return g&&c.items.sort(g),c.total=c.items.length,typeof t.limit=="number"&&(c.items=c.items.slice(0,t.limit)),c}}const Nc=(l,a)=>{if(Array.isArray(l))l.forEach(a);else for(var t in l)l.hasOwnProperty(t)&&a(l[t],t)},No=l=>{if(l.jquery)return l[0];if(l instanceof HTMLElement)return l;if(wB(l)){var a=document.createElement("template");return a.innerHTML=l.trim(),a.content.firstChild}return document.querySelector(l)},wB=l=>typeof l=="string"&&l.indexOf("<")>-1,H_e=l=>l.replace(/['"\\]/g,"\\$&"),oT=(l,a)=>{var t=document.createEvent("HTMLEvents");t.initEvent(a,!0,!1),l.dispatchEvent(t)},gm=(l,a)=>{Object.assign(l.style,a)},rn=(l,...a)=>{var t=kB(a);l=xB(l),l.map(s=>{t.map(d=>{s.classList.add(d)})})},mr=(l,...a)=>{var t=kB(a);l=xB(l),l.map(s=>{t.map(d=>{s.classList.remove(d)})})},kB=l=>{var a=[];return Nc(l,t=>{typeof t=="string"&&(t=t.trim().split(/[\11\12\14\15\40]/)),Array.isArray(t)&&(a=a.concat(t))}),a.filter(Boolean)},xB=l=>(Array.isArray(l)||(l=[l]),l),Y7=(l,a,t)=>{if(!(t&&!t.contains(l)))for(;l&&l.matches;){if(l.matches(a))return l;l=l.parentNode}},EN=(l,a=0)=>a>0?l[l.length-1]:l[0],q_e=l=>Object.keys(l).length===0,yI=(l,a)=>{if(!l)return-1;a=a||l.nodeName;for(var t=0;l=l.previousElementSibling;)l.matches(a)&&t++;return t},io=(l,a)=>{Nc(a,(t,s)=>{t==null?l.removeAttribute(s):l.setAttribute(s,""+t)})},vD=(l,a)=>{l.parentNode&&l.parentNode.replaceChild(a,l)},z_e=(l,a)=>{if(a===null)return;if(typeof a=="string"){if(!a.length)return;a=new RegExp(a,"i")}const t=c=>{var p=c.data.match(a);if(p&&c.data.length>0){var g=document.createElement("span");g.className="highlight";var _=c.splitText(p.index);_.splitText(p[0].length);var v=_.cloneNode(!0);return g.appendChild(v),vD(_,g),1}return 0},s=c=>{c.nodeType===1&&c.childNodes&&!/(script|style)/i.test(c.tagName)&&(c.className!=="highlight"||c.tagName!=="SPAN")&&Array.from(c.childNodes).forEach(p=>{d(p)})},d=c=>c.nodeType===3?t(c):(s(c),0);d(l)},B_e=l=>{var a=l.querySelectorAll("span.highlight");Array.prototype.forEach.call(a,function(t){var s=t.parentNode;s.replaceChild(t.firstChild,t),s.normalize()})},G_e=65,W_e=13,$B=27,hD=37,Z_e=38,CB=39,K_e=40,AN=8,Y_e=46,fD=9,X_e=typeof navigator>"u"?!1:/Mac/.test(navigator.userAgent),ym=X_e?"metaKey":"ctrlKey";var LN={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:null,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,shouldOpen:null,maxOptions:50,maxItems:null,hideSelected:null,duplicates:!1,addPrecedence:!1,selectOnTab:!1,preload:null,allowEmptyOption:!1,refreshThrottle:300,loadThrottle:300,loadingClass:"loading",dataAttr:null,optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"ts-wrapper",controlClass:"ts-control",dropdownClass:"ts-dropdown",dropdownContentClass:"ts-dropdown-content",itemClass:"item",optionClass:"option",dropdownParent:null,controlInput:'',copyClassesToDropdown:!1,placeholder:null,hidePlaceholder:null,shouldLoad:function(l){return l.length>0},render:{}};const Xn=l=>typeof l>"u"||l===null?null:X7(l),X7=l=>typeof l=="boolean"?l?"1":"0":l+"",Q7=l=>(l+"").replace(/&/g,"&").replace(//g,">").replace(/"/g,"""),Q_e=(l,a)=>a>0?setTimeout(l,a):(l.call(null),null),J_e=(l,a)=>{var t;return function(s,d){var c=this;t&&(c.loading=Math.max(c.loading-1,0),clearTimeout(t)),t=setTimeout(function(){t=null,c.loadedSearches[s]=!0,l.call(c,s,d)},a)}},IN=(l,a,t)=>{var s,d=l.trigger,c={};l.trigger=function(){var p=arguments[0];if(a.indexOf(p)!==-1)c[p]=arguments;else return d.apply(l,arguments)},t.apply(l,[]),l.trigger=d;for(s of a)s in c&&d.apply(l,c[s])},eme=l=>({start:l.selectionStart||0,length:(l.selectionEnd||0)-(l.selectionStart||0)}),Gs=(l,a=!1)=>{l&&(l.preventDefault(),a&&l.stopPropagation())},Zs=(l,a,t,s)=>{l.addEventListener(a,t,s)},Hi=(l,a)=>{if(!a||!a[l])return!1;var t=(a.altKey?1:0)+(a.ctrlKey?1:0)+(a.shiftKey?1:0)+(a.metaKey?1:0);return t===1},nT=(l,a)=>{const t=l.getAttribute("id");return t||(l.setAttribute("id",a),a)},VN=l=>l.replace(/[\\"']/g,"\\$&"),qi=(l,a)=>{a&&l.append(a)};function MN(l,a){var t=Object.assign({},LN,a),s=t.dataAttr,d=t.labelField,c=t.valueField,p=t.disabledField,g=t.optgroupField,_=t.optgroupLabelField,v=t.optgroupValueField,h=l.tagName.toLowerCase(),b=l.getAttribute("placeholder")||l.getAttribute("data-placeholder");if(!b&&!t.allowEmptyOption){let x=l.querySelector('option[value=""]');x&&(b=x.textContent)}var y={placeholder:b,options:[],optgroups:[],items:[],maxItems:null},u=()=>{var x,z=y.options,P={},F=1;let N=0;var M=E=>{var f=Object.assign({},E.dataset),T=s&&f[s];return typeof T=="string"&&T.length&&(f=Object.assign(f,JSON.parse(T))),f},S=(E,f)=>{var T=Xn(E.value);if(T!=null&&!(!T&&!t.allowEmptyOption)){if(P.hasOwnProperty(T)){if(f){var H=P[T][g];H?Array.isArray(H)?H.push(f):P[T][g]=[H,f]:P[T][g]=f}}else{var O=M(E);O[d]=O[d]||E.textContent,O[c]=O[c]||T,O[p]=O[p]||E.disabled,O[g]=O[g]||f,O.$option=E,O.$order=O.$order||++N,P[T]=O,z.push(O)}E.selected&&y.items.push(T)}},L=E=>{var f,T;T=M(E),T[_]=T[_]||E.getAttribute("label")||"",T[v]=T[v]||F++,T[p]=T[p]||E.disabled,T.$order=T.$order||++N,y.optgroups.push(T),f=T[v],Nc(E.children,H=>{S(H,f)})};y.maxItems=l.hasAttribute("multiple")?null:1,Nc(l.children,E=>{x=E.tagName.toLowerCase(),x==="optgroup"?L(E):x==="option"&&S(E)})},C=()=>{const x=l.getAttribute(s);if(x)y.options=JSON.parse(x),Nc(y.options,P=>{y.items.push(P[c])});else{var z=l.value.trim()||"";if(!t.allowEmptyOption&&!z.length)return;const P=z.split(t.delimiter);Nc(P,F=>{const N={};N[d]=F,N[c]=F,y.options.push(N)}),y.items=P}};return h==="select"?u():C(),Object.assign({},LN,y,a)}var TN=0;class Cn extends w_e(b_e){constructor(a,t){super(),this.control_input=void 0,this.wrapper=void 0,this.dropdown=void 0,this.control=void 0,this.dropdown_content=void 0,this.focus_node=void 0,this.order=0,this.settings=void 0,this.input=void 0,this.tabIndex=void 0,this.is_select_tag=void 0,this.rtl=void 0,this.inputId=void 0,this._destroy=void 0,this.sifter=void 0,this.isOpen=!1,this.isDisabled=!1,this.isReadOnly=!1,this.isRequired=void 0,this.isInvalid=!1,this.isValid=!0,this.isLocked=!1,this.isFocused=!1,this.isInputHidden=!1,this.isSetup=!1,this.ignoreFocus=!1,this.ignoreHover=!1,this.hasOptions=!1,this.currentResults=void 0,this.lastValue="",this.caretPos=0,this.loading=0,this.loadedSearches={},this.activeOption=null,this.activeItems=[],this.optgroups={},this.options={},this.userOptions={},this.items=[],this.refreshTimeout=null,TN++;var s,d=No(a);if(d.tomselect)throw new Error("Tom Select already initialized on this element");d.tomselect=this;var c=window.getComputedStyle&&window.getComputedStyle(d,null);s=c.getPropertyValue("direction");const p=MN(d,t);this.settings=p,this.input=d,this.tabIndex=d.tabIndex||0,this.is_select_tag=d.tagName.toLowerCase()==="select",this.rtl=/rtl/i.test(s),this.inputId=nT(d,"tomselect-"+TN),this.isRequired=d.required,this.sifter=new j_e(this.options,{diacritics:p.diacritics}),p.mode=p.mode||(p.maxItems===1?"single":"multi"),typeof p.hideSelected!="boolean"&&(p.hideSelected=p.mode==="multi"),typeof p.hidePlaceholder!="boolean"&&(p.hidePlaceholder=p.mode!=="multi");var g=p.createFilter;typeof g!="function"&&(typeof g=="string"&&(g=new RegExp(g)),g instanceof RegExp?p.createFilter=z=>g.test(z):p.createFilter=z=>this.settings.duplicates||!this.options[z]),this.initializePlugins(p.plugins),this.setupCallbacks(),this.setupTemplates();const _=No("
"),v=No("
"),h=this._render("dropdown"),b=No('
'),y=this.input.getAttribute("class")||"",u=p.mode;var C;if(rn(_,p.wrapperClass,y,u),rn(v,p.controlClass),qi(_,v),rn(h,p.dropdownClass,u),p.copyClassesToDropdown&&rn(h,y),rn(b,p.dropdownContentClass),qi(h,b),No(p.dropdownParent||_).appendChild(h),wB(p.controlInput)){C=No(p.controlInput);var x=["autocorrect","autocapitalize","autocomplete","spellcheck"];cn(x,z=>{d.getAttribute(z)&&io(C,{[z]:d.getAttribute(z)})}),C.tabIndex=-1,v.appendChild(C),this.focus_node=C}else p.controlInput?(C=No(p.controlInput),this.focus_node=C):(C=No(""),this.focus_node=v);this.wrapper=_,this.dropdown=h,this.dropdown_content=b,this.control=v,this.control_input=C,this.setup()}setup(){const a=this,t=a.settings,s=a.control_input,d=a.dropdown,c=a.dropdown_content,p=a.wrapper,g=a.control,_=a.input,v=a.focus_node,h={passive:!0},b=a.inputId+"-ts-dropdown";io(c,{id:b}),io(v,{role:"combobox","aria-haspopup":"listbox","aria-expanded":"false","aria-controls":b});const y=nT(v,a.inputId+"-ts-control"),u="label[for='"+H_e(a.inputId)+"']",C=document.querySelector(u),x=a.focus.bind(a);if(C){Zs(C,"click",x),io(C,{for:y});const F=nT(C,a.inputId+"-ts-label");io(v,{"aria-labelledby":F}),io(c,{"aria-labelledby":F})}if(p.style.width=_.style.width,a.plugins.names.length){const F="plugin-"+a.plugins.names.join(" plugin-");rn([p,d],F)}(t.maxItems===null||t.maxItems>1)&&a.is_select_tag&&io(_,{multiple:"multiple"}),t.placeholder&&io(s,{placeholder:t.placeholder}),!t.splitOn&&t.delimiter&&(t.splitOn=new RegExp("\\s*"+Ep(t.delimiter)+"+\\s*")),t.load&&t.loadThrottle&&(t.load=J_e(t.load,t.loadThrottle)),Zs(d,"mousemove",()=>{a.ignoreHover=!1}),Zs(d,"mouseenter",F=>{var N=Y7(F.target,"[data-selectable]",d);N&&a.onOptionHover(F,N)},{capture:!0}),Zs(d,"click",F=>{const N=Y7(F.target,"[data-selectable]");N&&(a.onOptionSelect(F,N),Gs(F,!0))}),Zs(g,"click",F=>{var N=Y7(F.target,"[data-ts-item]",g);if(N&&a.onItemSelect(F,N)){Gs(F,!0);return}s.value==""&&(a.onClick(),Gs(F,!0))}),Zs(v,"keydown",F=>a.onKeyDown(F)),Zs(s,"keypress",F=>a.onKeyPress(F)),Zs(s,"input",F=>a.onInput(F)),Zs(v,"blur",F=>a.onBlur(F)),Zs(v,"focus",F=>a.onFocus(F)),Zs(s,"paste",F=>a.onPaste(F));const z=F=>{const N=F.composedPath()[0];if(!p.contains(N)&&!d.contains(N)){a.isFocused&&a.blur(),a.inputState();return}N==s&&a.isOpen?F.stopPropagation():Gs(F,!0)},P=()=>{a.isOpen&&a.positionDropdown()};Zs(document,"mousedown",z),Zs(window,"scroll",P,h),Zs(window,"resize",P,h),this._destroy=()=>{document.removeEventListener("mousedown",z),window.removeEventListener("scroll",P),window.removeEventListener("resize",P),C&&C.removeEventListener("click",x)},this.revertSettings={innerHTML:_.innerHTML,tabIndex:_.tabIndex},_.tabIndex=-1,_.insertAdjacentElement("afterend",a.wrapper),a.sync(!1),t.items=[],delete t.optgroups,delete t.options,Zs(_,"invalid",()=>{a.isValid&&(a.isValid=!1,a.isInvalid=!0,a.refreshState())}),a.updateOriginalInput(),a.refreshItems(),a.close(!1),a.inputState(),a.isSetup=!0,_.disabled?a.disable():_.readOnly?a.setReadOnly(!0):a.enable(),a.on("change",this.onChange),rn(_,"tomselected","ts-hidden-accessible"),a.trigger("initialize"),t.preload===!0&&a.preload()}setupOptions(a=[],t=[]){this.addOptions(a),cn(t,s=>{this.registerOptionGroup(s)})}setupTemplates(){var a=this,t=a.settings.labelField,s=a.settings.optgroupLabelField,d={optgroup:c=>{let p=document.createElement("div");return p.className="optgroup",p.appendChild(c.options),p},optgroup_header:(c,p)=>'
'+p(c[s])+"
",option:(c,p)=>"
"+p(c[t])+"
",item:(c,p)=>"
"+p(c[t])+"
",option_create:(c,p)=>'
Add '+p(c.input)+"
",no_results:()=>'
No results found
',loading:()=>'
',not_loading:()=>{},dropdown:()=>"
"};a.settings.render=Object.assign({},d,a.settings.render)}setupCallbacks(){var a,t,s={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",item_select:"onItemSelect",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur"};for(a in s)t=this.settings[s[a]],t&&this.on(a,t)}sync(a=!0){const t=this,s=a?MN(t.input,{delimiter:t.settings.delimiter}):t.settings;t.setupOptions(s.options,s.optgroups),t.setValue(s.items||[],!0),t.lastQuery=null}onClick(){var a=this;if(a.activeItems.length>0){a.clearActiveItems(),a.focus();return}a.isFocused&&a.isOpen?a.blur():a.focus()}onMouseDown(){}onChange(){oT(this.input,"input"),oT(this.input,"change")}onPaste(a){var t=this;if(t.isInputHidden||t.isLocked){Gs(a);return}t.settings.splitOn&&setTimeout(()=>{var s=t.inputValue();if(s.match(t.settings.splitOn)){var d=s.trim().split(t.settings.splitOn);cn(d,c=>{Xn(c)&&(this.options[c]?t.addItem(c):t.createItem(c))})}},0)}onKeyPress(a){var t=this;if(t.isLocked){Gs(a);return}var s=String.fromCharCode(a.keyCode||a.which);if(t.settings.create&&t.settings.mode==="multi"&&s===t.settings.delimiter){t.createItem(),Gs(a);return}}onKeyDown(a){var t=this;if(t.ignoreHover=!0,t.isLocked){a.keyCode!==fD&&Gs(a);return}switch(a.keyCode){case G_e:if(Hi(ym,a)&&t.control_input.value==""){Gs(a),t.selectAll();return}break;case $B:t.isOpen&&(Gs(a,!0),t.close()),t.clearActiveItems();return;case K_e:if(!t.isOpen&&t.hasOptions)t.open();else if(t.activeOption){let s=t.getAdjacent(t.activeOption,1);s&&t.setActiveOption(s)}Gs(a);return;case Z_e:if(t.activeOption){let s=t.getAdjacent(t.activeOption,-1);s&&t.setActiveOption(s)}Gs(a);return;case W_e:t.canSelect(t.activeOption)?(t.onOptionSelect(a,t.activeOption),Gs(a)):(t.settings.create&&t.createItem()||document.activeElement==t.control_input&&t.isOpen)&&Gs(a);return;case hD:t.advanceSelection(-1,a);return;case CB:t.advanceSelection(1,a);return;case fD:t.settings.selectOnTab&&(t.canSelect(t.activeOption)&&(t.onOptionSelect(a,t.activeOption),Gs(a)),t.settings.create&&t.createItem()&&Gs(a));return;case AN:case Y_e:t.deleteSelection(a);return}t.isInputHidden&&!Hi(ym,a)&&Gs(a)}onInput(a){if(this.isLocked)return;const t=this.inputValue();if(this.lastValue!==t){if(this.lastValue=t,t==""){this._onInput();return}this.refreshTimeout&&clearTimeout(this.refreshTimeout),this.refreshTimeout=Q_e(()=>{this.refreshTimeout=null,this._onInput()},this.settings.refreshThrottle)}}_onInput(){const a=this.lastValue;this.settings.shouldLoad.call(this,a)&&this.load(a),this.refreshOptions(),this.trigger("type",a)}onOptionHover(a,t){this.ignoreHover||this.setActiveOption(t,!1)}onFocus(a){var t=this,s=t.isFocused;if(t.isDisabled||t.isReadOnly){t.blur(),Gs(a);return}t.ignoreFocus||(t.isFocused=!0,t.settings.preload==="focus"&&t.preload(),s||t.trigger("focus"),t.activeItems.length||(t.inputState(),t.refreshOptions(!!t.settings.openOnFocus)),t.refreshState())}onBlur(a){if(document.hasFocus()!==!1){var t=this;if(t.isFocused){t.isFocused=!1,t.ignoreFocus=!1;var s=()=>{t.close(),t.setActiveItem(),t.setCaret(t.items.length),t.trigger("blur")};t.settings.create&&t.settings.createOnBlur?t.createItem(null,s):s()}}}onOptionSelect(a,t){var s,d=this;t.parentElement&&t.parentElement.matches("[data-disabled]")||(t.classList.contains("create")?d.createItem(null,()=>{d.settings.closeAfterSelect&&d.close()}):(s=t.dataset.value,typeof s<"u"&&(d.lastQuery=null,d.addItem(s),d.settings.closeAfterSelect&&d.close(),!d.settings.hideSelected&&a.type&&/click/.test(a.type)&&d.setActiveOption(t))))}canSelect(a){return!!(this.isOpen&&a&&this.dropdown_content.contains(a))}onItemSelect(a,t){var s=this;return!s.isLocked&&s.settings.mode==="multi"?(Gs(a),s.setActiveItem(t,a),!0):!1}canLoad(a){return!(!this.settings.load||this.loadedSearches.hasOwnProperty(a))}load(a){const t=this;if(!t.canLoad(a))return;rn(t.wrapper,t.settings.loadingClass),t.loading++;const s=t.loadCallback.bind(t);t.settings.load.call(t,a,s)}loadCallback(a,t){const s=this;s.loading=Math.max(s.loading-1,0),s.lastQuery=null,s.clearActiveOption(),s.setupOptions(a,t),s.refreshOptions(s.isFocused&&!s.isInputHidden),s.loading||mr(s.wrapper,s.settings.loadingClass),s.trigger("load",a,t)}preload(){var a=this.wrapper.classList;a.contains("preloaded")||(a.add("preloaded"),this.load(""))}setTextboxValue(a=""){var t=this.control_input,s=t.value!==a;s&&(t.value=a,oT(t,"update"),this.lastValue=a)}getValue(){return this.is_select_tag&&this.input.hasAttribute("multiple")?this.items:this.items.join(this.settings.delimiter)}setValue(a,t){var s=t?[]:["change"];IN(this,s,()=>{this.clear(t),this.addItems(a,t)})}setMaxItems(a){a===0&&(a=null),this.settings.maxItems=a,this.refreshState()}setActiveItem(a,t){var s=this,d,c,p,g,_,v;if(s.settings.mode!=="single"){if(!a){s.clearActiveItems(),s.isFocused&&s.inputState();return}if(d=t&&t.type.toLowerCase(),d==="click"&&Hi("shiftKey",t)&&s.activeItems.length){for(v=s.getLastActive(),p=Array.prototype.indexOf.call(s.control.children,v),g=Array.prototype.indexOf.call(s.control.children,a),p>g&&(_=p,p=g,g=_),c=p;c<=g;c++)a=s.control.children[c],s.activeItems.indexOf(a)===-1&&s.setActiveItemClass(a);Gs(t)}else d==="click"&&Hi(ym,t)||d==="keydown"&&Hi("shiftKey",t)?a.classList.contains("active")?s.removeActiveItem(a):s.setActiveItemClass(a):(s.clearActiveItems(),s.setActiveItemClass(a));s.inputState(),s.isFocused||s.focus()}}setActiveItemClass(a){const t=this,s=t.control.querySelector(".last-active");s&&mr(s,"last-active"),rn(a,"active last-active"),t.trigger("item_select",a),t.activeItems.indexOf(a)==-1&&t.activeItems.push(a)}removeActiveItem(a){var t=this.activeItems.indexOf(a);this.activeItems.splice(t,1),mr(a,"active")}clearActiveItems(){mr(this.activeItems,"active"),this.activeItems=[]}setActiveOption(a,t=!0){a!==this.activeOption&&(this.clearActiveOption(),a&&(this.activeOption=a,io(this.focus_node,{"aria-activedescendant":a.getAttribute("id")}),io(a,{"aria-selected":"true"}),rn(a,"active"),t&&this.scrollToOption(a)))}scrollToOption(a,t){if(!a)return;const s=this.dropdown_content,d=s.clientHeight,c=s.scrollTop||0,p=a.offsetHeight,g=a.getBoundingClientRect().top-s.getBoundingClientRect().top+c;g+p>d+c?this.scroll(g-d+p,t):g{a.setActiveItemClass(s)}))}inputState(){var a=this;a.control.contains(a.control_input)&&(io(a.control_input,{placeholder:a.settings.placeholder}),a.activeItems.length>0||!a.isFocused&&a.settings.hidePlaceholder&&a.items.length>0?(a.setTextboxValue(),a.isInputHidden=!0):(a.settings.hidePlaceholder&&a.items.length>0&&io(a.control_input,{placeholder:""}),a.isInputHidden=!1),a.wrapper.classList.toggle("input-hidden",a.isInputHidden))}inputValue(){return this.control_input.value.trim()}focus(){var a=this;a.isDisabled||a.isReadOnly||(a.ignoreFocus=!0,a.control_input.offsetWidth?a.control_input.focus():a.focus_node.focus(),setTimeout(()=>{a.ignoreFocus=!1,a.onFocus()},0))}blur(){this.focus_node.blur(),this.onBlur()}getScoreFunction(a){return this.sifter.getScoreFunction(a,this.getSearchOptions())}getSearchOptions(){var a=this.settings,t=a.sortField;return typeof a.sortField=="string"&&(t=[{field:a.sortField}]),{fields:a.searchField,conjunction:a.searchConjunction,sort:t,nesting:a.nesting}}search(a){var t,s,d=this,c=this.getSearchOptions();if(d.settings.score&&(s=d.settings.score.call(d,a),typeof s!="function"))throw new Error('Tom Select "score" setting must be a function that returns a function');return a!==d.lastQuery?(d.lastQuery=a,t=d.sifter.search(a,Object.assign(c,{score:s})),d.currentResults=t):t=Object.assign({},d.currentResults),d.settings.hideSelected&&(t.items=t.items.filter(p=>{let g=Xn(p.id);return!(g&&d.items.indexOf(g)!==-1)})),t}refreshOptions(a=!0){var t,s,d,c,p,g,_,v,h,b;const y={},u=[];var C=this,x=C.inputValue();const z=x===C.lastQuery||x==""&&C.lastQuery==null;var P=C.search(x),F=null,N=C.settings.shouldOpen||!1,M=C.dropdown_content;z&&(F=C.activeOption,F&&(h=F.closest("[data-group]"))),c=P.items.length,typeof C.settings.maxOptions=="number"&&(c=Math.min(c,C.settings.maxOptions)),c>0&&(N=!0);const S=(E,f)=>{let T=y[E];if(T!==void 0){let O=u[T];if(O!==void 0)return[T,O.fragment]}let H=document.createDocumentFragment();return T=u.length,u.push({fragment:H,order:f,optgroup:E}),[T,H]};for(t=0;t0&&(O=O.cloneNode(!0),io(O,{id:T.$id+"-clone-"+s,"aria-selected":null}),O.classList.add("ts-cloned"),mr(O,"active"),C.activeOption&&C.activeOption.dataset.value==f&&h&&h.dataset.group===p.toString()&&(F=O)),de.appendChild(O),p!=""&&(y[p]=ve)}}C.settings.lockOptgroupOrder&&u.sort((E,f)=>E.order-f.order),_=document.createDocumentFragment(),cn(u,E=>{let f=E.fragment,T=E.optgroup;if(!f||!f.children.length)return;let H=C.optgroups[T];if(H!==void 0){let O=document.createDocumentFragment(),W=C.render("optgroup_header",H);qi(O,W),qi(O,f);let ie=C.render("optgroup",{group:H,options:O});qi(_,ie)}else qi(_,f)}),M.innerHTML="",qi(M,_),C.settings.highlight&&(B_e(M),P.query.length&&P.tokens.length&&cn(P.tokens,E=>{z_e(M,E.regex)}));var L=E=>{let f=C.render(E,{input:x});return f&&(N=!0,M.insertBefore(f,M.firstChild)),f};if(C.loading?L("loading"):C.settings.shouldLoad.call(C,x)?P.items.length===0&&L("no_results"):L("not_loading"),v=C.canCreate(x),v&&(b=L("option_create")),C.hasOptions=P.items.length>0||v,N){if(P.items.length>0){if(!F&&C.settings.mode==="single"&&C.items[0]!=null&&(F=C.getOption(C.items[0])),!M.contains(F)){let E=0;b&&!C.settings.addPrecedence&&(E=1),F=C.selectable()[E]}}else b&&(F=b);a&&!C.isOpen&&(C.open(),C.scrollToOption(F,"auto")),C.setActiveOption(F)}else C.clearActiveOption(),a&&C.isOpen&&C.close(!1)}selectable(){return this.dropdown_content.querySelectorAll("[data-selectable]")}addOption(a,t=!1){const s=this;if(Array.isArray(a))return s.addOptions(a,t),!1;const d=Xn(a[s.settings.valueField]);return d===null||s.options.hasOwnProperty(d)?!1:(a.$order=a.$order||++s.order,a.$id=s.inputId+"-opt-"+a.$order,s.options[d]=a,s.lastQuery=null,t&&(s.userOptions[d]=t,s.trigger("option_add",d,a)),d)}addOptions(a,t=!1){cn(a,s=>{this.addOption(s,t)})}registerOption(a){return this.addOption(a)}registerOptionGroup(a){var t=Xn(a[this.settings.optgroupValueField]);return t===null?!1:(a.$order=a.$order||++this.order,this.optgroups[t]=a,t)}addOptionGroup(a,t){var s;t[this.settings.optgroupValueField]=a,(s=this.registerOptionGroup(t))&&this.trigger("optgroup_add",s,t)}removeOptionGroup(a){this.optgroups.hasOwnProperty(a)&&(delete this.optgroups[a],this.clearCache(),this.trigger("optgroup_remove",a))}clearOptionGroups(){this.optgroups={},this.clearCache(),this.trigger("optgroup_clear")}updateOption(a,t){const s=this;var d,c;const p=Xn(a),g=Xn(t[s.settings.valueField]);if(p===null)return;const _=s.options[p];if(_==null)return;if(typeof g!="string")throw new Error("Value must be set in option data");const v=s.getOption(p),h=s.getItem(p);if(t.$order=t.$order||_.$order,delete s.options[p],s.uncacheValue(g),s.options[g]=t,v){if(s.dropdown_content.contains(v)){const b=s._render("option",t);vD(v,b),s.activeOption===v&&s.setActiveOption(b)}v.remove()}h&&(c=s.items.indexOf(p),c!==-1&&s.items.splice(c,1,g),d=s._render("item",t),h.classList.contains("active")&&rn(d,"active"),vD(h,d)),s.lastQuery=null}removeOption(a,t){const s=this;a=X7(a),s.uncacheValue(a),delete s.userOptions[a],delete s.options[a],s.lastQuery=null,s.trigger("option_remove",a),s.removeItem(a,t)}clearOptions(a){const t=(a||this.clearFilter).bind(this);this.loadedSearches={},this.userOptions={},this.clearCache();const s={};cn(this.options,(d,c)=>{t(d,c)&&(s[c]=d)}),this.options=this.sifter.items=s,this.lastQuery=null,this.trigger("option_clear")}clearFilter(a,t){return this.items.indexOf(t)>=0}getOption(a,t=!1){const s=Xn(a);if(s===null)return null;const d=this.options[s];if(d!=null){if(d.$div)return d.$div;if(t)return this._render("option",d)}return null}getAdjacent(a,t,s="option"){var d=this,c;if(!a)return null;s=="item"?c=d.controlChildren():c=d.dropdown_content.querySelectorAll("[data-selectable]");for(let p=0;p0?c[p+1]:c[p-1];return null}getItem(a){if(typeof a=="object")return a;var t=Xn(a);return t!==null?this.control.querySelector(`[data-value="${VN(t)}"]`):null}addItems(a,t){var s=this,d=Array.isArray(a)?a:[a];d=d.filter(p=>s.items.indexOf(p)===-1);const c=d[d.length-1];d.forEach(p=>{s.isPending=p!==c,s.addItem(p,t)})}addItem(a,t){var s=t?[]:["change","dropdown_close"];IN(this,s,()=>{var d,c;const p=this,g=p.settings.mode,_=Xn(a);if(!(_&&p.items.indexOf(_)!==-1&&(g==="single"&&p.close(),g==="single"||!p.settings.duplicates))&&!(_===null||!p.options.hasOwnProperty(_))&&(g==="single"&&p.clear(t),!(g==="multi"&&p.isFull()))){if(d=p._render("item",p.options[_]),p.control.contains(d)&&(d=d.cloneNode(!0)),c=p.isFull(),p.items.splice(p.caretPos,0,_),p.insertAtCaret(d),p.isSetup){if(!p.isPending&&p.settings.hideSelected){let v=p.getOption(_),h=p.getAdjacent(v,1);h&&p.setActiveOption(h)}!p.isPending&&!p.settings.closeAfterSelect&&p.refreshOptions(p.isFocused&&g!=="single"),p.settings.closeAfterSelect!=!1&&p.isFull()?p.close():p.isPending||p.positionDropdown(),p.trigger("item_add",_,d),p.isPending||p.updateOriginalInput({silent:t})}(!p.isPending||!c&&p.isFull())&&(p.inputState(),p.refreshState())}})}removeItem(a=null,t){const s=this;if(a=s.getItem(a),!a)return;var d,c;const p=a.dataset.value;d=yI(a),a.remove(),a.classList.contains("active")&&(c=s.activeItems.indexOf(a),s.activeItems.splice(c,1),mr(a,"active")),s.items.splice(d,1),s.lastQuery=null,!s.settings.persist&&s.userOptions.hasOwnProperty(p)&&s.removeOption(p,t),d{}){arguments.length===3&&(t=arguments[2]),typeof t!="function"&&(t=()=>{});var s=this,d=s.caretPos,c;if(a=a||s.inputValue(),!s.canCreate(a))return t(),!1;s.lock();var p=!1,g=_=>{if(s.unlock(),!_||typeof _!="object")return t();var v=Xn(_[s.settings.valueField]);if(typeof v!="string")return t();s.setTextboxValue(),s.addOption(_,!0),s.setCaret(d),s.addItem(v),t(_),p=!0};return typeof s.settings.create=="function"?c=s.settings.create.call(this,a,g):c={[s.settings.labelField]:a,[s.settings.valueField]:a},p||g(c),!0}refreshItems(){var a=this;a.lastQuery=null,a.isSetup&&a.addItems(a.items),a.updateOriginalInput(),a.refreshState()}refreshState(){const a=this;a.refreshValidityState();const t=a.isFull(),s=a.isLocked;a.wrapper.classList.toggle("rtl",a.rtl);const d=a.wrapper.classList;d.toggle("focus",a.isFocused),d.toggle("disabled",a.isDisabled),d.toggle("readonly",a.isReadOnly),d.toggle("required",a.isRequired),d.toggle("invalid",!a.isValid),d.toggle("locked",s),d.toggle("full",t),d.toggle("input-active",a.isFocused&&!a.isInputHidden),d.toggle("dropdown-active",a.isOpen),d.toggle("has-options",q_e(a.options)),d.toggle("has-items",a.items.length>0)}refreshValidityState(){var a=this;a.input.validity&&(a.isValid=a.input.validity.valid,a.isInvalid=!a.isValid)}isFull(){return this.settings.maxItems!==null&&this.items.length>=this.settings.maxItems}updateOriginalInput(a={}){const t=this;var s,d;const c=t.input.querySelector('option[value=""]');if(t.is_select_tag){let v=function(h,b,y){return h||(h=No('")),h!=c&&t.input.append(h),g.push(h),(h!=c||_>0)&&(h.selected=!0),h};var p=v;const g=[],_=t.input.querySelectorAll("option:checked").length;t.input.querySelectorAll("option:checked").forEach(h=>{h.selected=!1}),t.items.length==0&&t.settings.mode=="single"?v(c,"",""):t.items.forEach(h=>{if(s=t.options[h],d=s[t.settings.labelField]||"",g.includes(s.$option)){const b=t.input.querySelector(`option[value="${VN(h)}"]:not(:checked)`);v(b,h,d)}else s.$option=v(s.$option,h,d)})}else t.input.value=t.getValue();t.isSetup&&(a.silent||t.trigger("change",t.getValue()))}open(){var a=this;a.isLocked||a.isOpen||a.settings.mode==="multi"&&a.isFull()||(a.isOpen=!0,io(a.focus_node,{"aria-expanded":"true"}),a.refreshState(),gm(a.dropdown,{visibility:"hidden",display:"block"}),a.positionDropdown(),gm(a.dropdown,{visibility:"visible",display:"block"}),a.focus(),a.trigger("dropdown_open",a.dropdown))}close(a=!0){var t=this,s=t.isOpen;a&&(t.setTextboxValue(),t.settings.mode==="single"&&t.items.length&&t.inputState()),t.isOpen=!1,io(t.focus_node,{"aria-expanded":"false"}),gm(t.dropdown,{display:"none"}),t.settings.hideSelected&&t.clearActiveOption(),t.refreshState(),s&&t.trigger("dropdown_close",t.dropdown)}positionDropdown(){if(this.settings.dropdownParent==="body"){var a=this.control,t=a.getBoundingClientRect(),s=a.offsetHeight+t.top+window.scrollY,d=t.left+window.scrollX;gm(this.dropdown,{width:t.width+"px",top:s+"px",left:d+"px"})}}clear(a){var t=this;if(t.items.length){var s=t.controlChildren();cn(s,d=>{t.removeItem(d,!0)}),t.inputState(),a||t.updateOriginalInput(),t.trigger("clear")}}insertAtCaret(a){const t=this,s=t.caretPos,d=t.control;d.insertBefore(a,d.children[s]||null),t.setCaret(s+1)}deleteSelection(a){var t,s,d,c,p=this;t=a&&a.keyCode===AN?-1:1,s=eme(p.control_input);const g=[];if(p.activeItems.length)c=EN(p.activeItems,t),d=yI(c),t>0&&d++,cn(p.activeItems,_=>g.push(_));else if((p.isFocused||p.settings.mode==="single")&&p.items.length){const _=p.controlChildren();let v;t<0&&s.start===0&&s.length===0?v=_[p.caretPos-1]:t>0&&s.start===p.inputValue().length&&(v=_[p.caretPos]),v!==void 0&&g.push(v)}if(!p.shouldDelete(g,a))return!1;for(Gs(a,!0),typeof d<"u"&&p.setCaret(d);g.length;)p.removeItem(g.pop());return p.inputState(),p.positionDropdown(),p.refreshOptions(!1),!0}shouldDelete(a,t){const s=a.map(d=>d.dataset.value);return!(!s.length||typeof this.settings.onDelete=="function"&&this.settings.onDelete(s,t)===!1)}advanceSelection(a,t){var s,d,c=this;c.rtl&&(a*=-1),!c.inputValue().length&&(Hi(ym,t)||Hi("shiftKey",t)?(s=c.getLastActive(a),s?s.classList.contains("active")?d=c.getAdjacent(s,a,"item"):d=s:a>0?d=c.control_input.nextElementSibling:d=c.control_input.previousElementSibling,d&&(d.classList.contains("active")&&c.removeActiveItem(s),c.setActiveItemClass(d))):c.moveCaret(a))}moveCaret(a){}getLastActive(a){let t=this.control.querySelector(".last-active");if(t)return t;var s=this.control.querySelectorAll(".active");if(s)return EN(s,a)}setCaret(a){this.caretPos=this.items.length}controlChildren(){return Array.from(this.control.querySelectorAll("[data-ts-item]"))}lock(){this.setLocked(!0)}unlock(){this.setLocked(!1)}setLocked(a=this.isReadOnly||this.isDisabled){this.isLocked=a,this.refreshState()}disable(){this.setDisabled(!0),this.close()}enable(){this.setDisabled(!1)}setDisabled(a){this.focus_node.tabIndex=a?-1:this.tabIndex,this.isDisabled=a,this.input.disabled=a,this.control_input.disabled=a,this.setLocked()}setReadOnly(a){this.isReadOnly=a,this.input.readOnly=a,this.control_input.readOnly=a,this.setLocked()}destroy(){var a=this,t=a.revertSettings;a.trigger("destroy"),a.off(),a.wrapper.remove(),a.dropdown.remove(),a.input.innerHTML=t.innerHTML,a.input.tabIndex=t.tabIndex,mr(a.input,"tomselected","ts-hidden-accessible"),a._destroy(),delete a.input.tomselect}render(a,t){var s,d;const c=this;if(typeof this.settings.render[a]!="function"||(d=c.settings.render[a].call(this,t,Q7),!d))return null;if(d=No(d),a==="option"||a==="option_create"?t[c.settings.disabledField]?io(d,{"aria-disabled":"true"}):io(d,{"data-selectable":""}):a==="optgroup"&&(s=t.group[c.settings.optgroupValueField],io(d,{"data-group":s}),t.group[c.settings.disabledField]&&io(d,{"data-disabled":""})),a==="option"||a==="item"){const p=X7(t[c.settings.valueField]);io(d,{"data-value":p}),a==="item"?(rn(d,c.settings.itemClass),io(d,{"data-ts-item":""})):(rn(d,c.settings.optionClass),io(d,{role:"option",id:t.$id}),t.$div=d,c.options[p]=t)}return d}_render(a,t){const s=this.render(a,t);if(s==null)throw"HTMLElement expected";return s}clearCache(){cn(this.options,a=>{a.$div&&(a.$div.remove(),delete a.$div)})}uncacheValue(a){const t=this.getOption(a);t&&t.remove()}canCreate(a){return this.settings.create&&a.length>0&&this.settings.createFilter.call(this,a)}hook(a,t,s){var d=this,c=d[t];d[t]=function(){var p,g;return a==="after"&&(p=c.apply(d,arguments)),g=s.apply(d,arguments),a==="instead"?g:(a==="before"&&(p=c.apply(d,arguments)),p)}}}function tme(){Zs(this.input,"change",()=>{this.sync()})}function ame(l){var a=this,t=a.onOptionSelect;a.settings.hideSelected=!1;const s=Object.assign({className:"tomselect-checkbox",checkedClassNames:void 0,uncheckedClassNames:void 0},l);var d=function(g,_){_?(g.checked=!0,s.uncheckedClassNames&&g.classList.remove(...s.uncheckedClassNames),s.checkedClassNames&&g.classList.add(...s.checkedClassNames)):(g.checked=!1,s.checkedClassNames&&g.classList.remove(...s.checkedClassNames),s.uncheckedClassNames&&g.classList.add(...s.uncheckedClassNames))},c=function(g){setTimeout(()=>{var _=g.querySelector("input."+s.className);_ instanceof HTMLInputElement&&d(_,g.classList.contains("selected"))},1)};a.hook("after","setupTemplates",()=>{var p=a.settings.render.option;a.settings.render.option=(g,_)=>{var v=No(p.call(a,g,_)),h=document.createElement("input");s.className&&h.classList.add(s.className),h.addEventListener("click",function(y){Gs(y)}),h.type="checkbox";const b=Xn(g[a.settings.valueField]);return d(h,!!(b&&a.items.indexOf(b)>-1)),v.prepend(h),v}}),a.on("item_remove",p=>{var g=a.getOption(p);g&&(g.classList.remove("selected"),c(g))}),a.on("item_add",p=>{var g=a.getOption(p);g&&c(g)}),a.hook("instead","onOptionSelect",(p,g)=>{if(g.classList.contains("selected")){g.classList.remove("selected"),a.removeItem(g.dataset.value),a.refreshOptions(),Gs(p,!0);return}t.call(a,p,g),c(g)})}function sme(l){const a=this,t=Object.assign({className:"clear-button",title:"Clear All",html:s=>`
`},l);a.on("initialize",()=>{var s=No(t.html(t));s.addEventListener("click",d=>{a.isLocked||(a.clear(),a.settings.mode==="single"&&a.settings.allowEmptyOption&&a.addItem(""),d.preventDefault(),d.stopPropagation())}),a.control.appendChild(s)})}const ome=(l,a)=>{var t;(t=l.parentNode)==null||t.insertBefore(a,l.nextSibling)},nme=(l,a)=>{var t;(t=l.parentNode)==null||t.insertBefore(a,l)},lme=(l,a)=>{do{var t;if(a=(t=a)==null?void 0:t.previousElementSibling,l==a)return!0}while(a&&a.previousElementSibling);return!1};function rme(){var l=this;if(l.settings.mode!=="multi")return;var a=l.lock,t=l.unlock;let s=!0,d;l.hook("after","setupTemplates",()=>{var c=l.settings.render.item;l.settings.render.item=(p,g)=>{const _=No(c.call(l,p,g));io(_,{draggable:"true"});const v=x=>{s||Gs(x),x.stopPropagation()},h=x=>{d=_,setTimeout(()=>{_.classList.add("ts-dragging")},0)},b=x=>{x.preventDefault(),_.classList.add("ts-drag-over"),u(_,d)},y=()=>{_.classList.remove("ts-drag-over")},u=(x,z)=>{z!==void 0&&(lme(z,_)?ome(x,z):nme(x,z))},C=()=>{var x;document.querySelectorAll(".ts-drag-over").forEach(P=>P.classList.remove("ts-drag-over")),(x=d)==null||x.classList.remove("ts-dragging"),d=void 0;var z=[];l.control.querySelectorAll("[data-value]").forEach(P=>{if(P.dataset.value){let F=P.dataset.value;F&&z.push(F)}}),l.setValue(z)};return Zs(_,"mousedown",v),Zs(_,"dragstart",h),Zs(_,"dragenter",b),Zs(_,"dragover",b),Zs(_,"dragleave",y),Zs(_,"dragend",C),_}}),l.hook("instead","lock",()=>(s=!1,a.call(l))),l.hook("instead","unlock",()=>(s=!0,t.call(l)))}function ime(l){const a=this,t=Object.assign({title:"Untitled",headerClass:"dropdown-header",titleRowClass:"dropdown-header-title",labelClass:"dropdown-header-label",closeClass:"dropdown-header-close",html:s=>'
'+s.title+'×
'},l);a.on("initialize",()=>{var s=No(t.html(t)),d=s.querySelector("."+t.closeClass);d&&d.addEventListener("click",c=>{Gs(c,!0),a.close()}),a.dropdown.insertBefore(s,a.dropdown.firstChild)})}function dme(){var l=this;l.hook("instead","setCaret",a=>{l.settings.mode==="single"||!l.control.contains(l.control_input)?a=l.items.length:(a=Math.max(0,Math.min(l.items.length,a)),a!=l.caretPos&&!l.isPending&&l.controlChildren().forEach((t,s)=>{s{if(!l.isFocused)return;const t=l.getLastActive(a);if(t){const s=yI(t);l.setCaret(a>0?s+1:s),l.setActiveItem(),mr(t,"last-active")}else l.setCaret(l.caretPos+a)})}function cme(){const l=this;l.settings.shouldOpen=!0,l.hook("before","setup",()=>{l.focus_node=l.control,rn(l.control_input,"dropdown-input");const a=No('