diff --git a/.env.example b/.env.example index c979b4e52..3db40f368 100644 --- a/.env.example +++ b/.env.example @@ -23,7 +23,7 @@ REDIS_PASSWORD=null REDIS_PORT=6379 CACHE_STORE=file -QUEUE_CONNECTION=redis +QUEUE_CONNECTION=sync SESSION_DRIVER=file HASHIDS_SALT= @@ -36,7 +36,7 @@ MAIL_USERNAME= MAIL_PASSWORD= MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=no-reply@example.com -MAIL_FROM_NAME="Panel Administrator" +MAIL_FROM_NAME="Pelican Admin" # Set this to your domain to prevent it defaulting to 'localhost', causing mail servers such as Gmail to reject your mail # MAIL_EHLO_DOMAIN=panel.example.com SESSION_ENCRYPT=false diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index cd237a2c2..9be4f1175 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1,2 @@ +github: pelican-dev custom: [https://buy.stripe.com/14kdU99SI4UT7ni9AB, https://buy.stripe.com/14kaHXc0Q9b9372eUU] diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4aed1d674..be1b59369 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,9 +1,6 @@ name: Build on: - push: - branches: - - '**' pull_request: branches: - '**' diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 95458fcd2..81f80c4e9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,7 +1,7 @@ name: Tests on: - push: + pull_request: branches: - '**' diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml new file mode 100644 index 000000000..4efdecca4 --- /dev/null +++ b/.github/workflows/cla.yaml @@ -0,0 +1,30 @@ +name: "CLA Assistant" +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened,closed,synchronize] + +permissions: + actions: write + contents: write + pull-requests: write + statuses: write + +jobs: + CLAAssistant: + runs-on: ubuntu-latest + steps: + - name: "CLA Assistant" + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: contributor-assistant/github-action@v2.3.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + with: + path-to-signatures: 'version1/cla.json' + path-to-document: 'https://github.com/pelican-dev/panel/blob/3.x/contributor_license_agreement.md' + branch: 'main' + allowlist: dependabot[bot] + remote-organization-name: pelican-dev + remote-repository-name: cla-signatures diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index ab4515283..3dd538aad 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -1,9 +1,6 @@ name: Lint on: - push: - branches: - - '**' pull_request: branches: - '**' diff --git a/app/Console/Commands/Environment/AppSettingsCommand.php b/app/Console/Commands/Environment/AppSettingsCommand.php index 343130168..c1f857f4e 100644 --- a/app/Console/Commands/Environment/AppSettingsCommand.php +++ b/app/Console/Commands/Environment/AppSettingsCommand.php @@ -11,23 +11,23 @@ class AppSettingsCommand extends Command use EnvironmentWriterTrait; public const CACHE_DRIVERS = [ - 'redis' => 'Redis (recommended)', + 'redis' => 'Redis', 'memcached' => 'Memcached', - 'file' => 'Filesystem', + 'file' => 'Filesystem (recommended)', ]; public const SESSION_DRIVERS = [ - 'redis' => 'Redis (recommended)', + 'redis' => 'Redis', 'memcached' => 'Memcached', 'database' => 'MySQL Database', - 'file' => 'Filesystem', + 'file' => 'Filesystem (recommended)', 'cookie' => 'Cookie', ]; public const QUEUE_DRIVERS = [ - 'redis' => 'Redis (recommended)', + 'redis' => 'Redis', 'database' => 'MySQL Database', - 'sync' => 'Sync', + 'sync' => 'Sync (recommended)', ]; protected $description = 'Configure basic environment settings for the Panel.'; @@ -91,21 +91,21 @@ class AppSettingsCommand extends Command config('app.timezone') ); - $selected = config('cache.default', 'redis'); + $selected = config('cache.default', 'file'); $this->variables['CACHE_STORE'] = $this->option('cache') ?? $this->choice( 'Cache Driver', self::CACHE_DRIVERS, array_key_exists($selected, self::CACHE_DRIVERS) ? $selected : null ); - $selected = config('session.driver', 'redis'); + $selected = config('session.driver', 'file'); $this->variables['SESSION_DRIVER'] = $this->option('session') ?? $this->choice( 'Session Driver', self::SESSION_DRIVERS, array_key_exists($selected, self::SESSION_DRIVERS) ? $selected : null ); - $selected = config('queue.default', 'redis'); + $selected = config('queue.default', 'sync'); $this->variables['QUEUE_CONNECTION'] = $this->option('queue') ?? $this->choice( 'Queue Driver', self::QUEUE_DRIVERS, diff --git a/app/Console/Commands/UpgradeCommand.php b/app/Console/Commands/UpgradeCommand.php index 45c127767..e04d1a50c 100644 --- a/app/Console/Commands/UpgradeCommand.php +++ b/app/Console/Commands/UpgradeCommand.php @@ -51,7 +51,7 @@ class UpgradeCommand extends Command } if (is_null($this->option('user'))) { - $userDetails = posix_getpwuid(fileowner('public')); + $userDetails = function_exists('posix_getpwuid') ? posix_getpwuid(fileowner('public')) : []; $user = $userDetails['name'] ?? 'www-data'; if (!$this->confirm("Your webserver user has been detected as [{$user}]: is this correct?", true)) { @@ -67,7 +67,7 @@ class UpgradeCommand extends Command } if (is_null($this->option('group'))) { - $groupDetails = posix_getgrgid(filegroup('public')); + $groupDetails = function_exists('posix_getgrgid') ? posix_getgrgid(filegroup('public')) : []; $group = $groupDetails['name'] ?? 'www-data'; if (!$this->confirm("Your webserver group has been detected as [{$group}]: is this correct?", true)) { diff --git a/app/Enums/ContainerStatus.php b/app/Enums/ContainerStatus.php new file mode 100644 index 000000000..9b930dd7a --- /dev/null +++ b/app/Enums/ContainerStatus.php @@ -0,0 +1,43 @@ + 'tabler-heart-plus', + self::Running => 'tabler-heartbeat', + self::Restarting => 'tabler-heart-bolt', + self::Exited => 'tabler-heart-exclamation', + self::Paused => 'tabler-heart-pause', + self::Dead => 'tabler-heart-x', + self::Removing => 'tabler-heart-down', + self::Missing => 'tabler-heart-question', + }; + } + + public function color(): string + { + return match ($this) { + self::Created => 'primary', + self::Running => 'success', + self::Restarting => 'info', + self::Exited => 'danger', + self::Paused => 'warning', + self::Dead => 'danger', + self::Removing => 'warning', + self::Missing => 'danger', + }; + } +} diff --git a/app/Enums/ServerState.php b/app/Enums/ServerState.php new file mode 100644 index 000000000..9b28606eb --- /dev/null +++ b/app/Enums/ServerState.php @@ -0,0 +1,37 @@ + 'tabler-heart', + self::Installing => 'tabler-heart-bolt', + self::InstallFailed => 'tabler-heart-x', + self::ReinstallFailed => 'tabler-heart-x', + self::Suspended => 'tabler-heart-cancel', + self::RestoringBackup => 'tabler-heart-up', + }; + } + + public function color(): string + { + return match ($this) { + self::Normal => 'primary', + self::Installing => 'info', + self::InstallFailed => 'danger', + self::ReinstallFailed => 'danger', + self::Suspended => 'danger', + self::RestoringBackup => 'info', + }; + } +} diff --git a/app/Exceptions/Http/Server/ServerStateConflictException.php b/app/Exceptions/Http/Server/ServerStateConflictException.php index b4951d8f2..1e20082a3 100644 --- a/app/Exceptions/Http/Server/ServerStateConflictException.php +++ b/app/Exceptions/Http/Server/ServerStateConflictException.php @@ -2,6 +2,7 @@ namespace App\Exceptions\Http\Server; +use App\Enums\ServerState; use App\Models\Server; use Symfony\Component\HttpKernel\Exception\ConflictHttpException; @@ -20,7 +21,7 @@ class ServerStateConflictException extends ConflictHttpException $message = 'The node of this server is currently under maintenance and the functionality requested is unavailable.'; } elseif (!$server->isInstalled()) { $message = 'This server has not yet completed its installation process, please try again later.'; - } elseif ($server->status === Server::STATUS_RESTORING_BACKUP) { + } elseif ($server->status === ServerState::RestoringBackup) { $message = 'This server is currently restoring from a backup, please try again later.'; } elseif (!is_null($server->transfer)) { $message = 'This server is currently being transferred to a new machine, please try again later.'; diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php index 87c741908..b263a6b08 100644 --- a/app/Filament/Pages/Dashboard.php +++ b/app/Filament/Pages/Dashboard.php @@ -7,6 +7,7 @@ use App\Models\Egg; use App\Models\Node; use App\Models\Server; use App\Models\User; +use Filament\Actions\CreateAction; use Filament\Pages\Page; class Dashboard extends Page @@ -32,6 +33,50 @@ class Dashboard extends Page 'nodesCount' => Node::query()->count(), 'serversCount' => Server::query()->count(), 'usersCount' => User::query()->count(), + + 'devActions' => [ + CreateAction::make() + ->label('Create Issue') + ->icon('tabler-brand-github') + ->url('https://github.com/pelican-dev/panel/issues/new/choose', true) + ->color('warning'), + CreateAction::make() + ->label('Discuss Features') + ->icon('tabler-brand-github') + ->url('https://github.com/pelican-dev/panel/discussions', true) + ->color('primary'), + ], + 'nodeActions' => [ + CreateAction::make() + ->label('Create first Node in Pelican') + ->icon('tabler-server-2') + ->url(route('filament.admin.resources.nodes.create')) + ->color('primary'), + ], + 'supportActions' => [ + CreateAction::make() + ->label('Help Translate') + ->icon('tabler-language') + ->url('https://crowdin.com/project/pelican-dev', true) + ->color('info'), + CreateAction::make() + ->label('Donate Directly') + ->icon('tabler-cash') + ->url('https://pelican.dev/donate', true) + ->color('success'), + ], + 'helpActions' => [ + CreateAction::make() + ->label('Read Documentation') + ->icon('tabler-speedboat') + ->url('https://pelican.dev/docs', true) + ->color('info'), + CreateAction::make() + ->label('Get Help in Discord') + ->icon('tabler-brand-discord') + ->url('https://discord.gg/pelican-panel', true) + ->color('primary'), + ], ]; } } diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index f8f192d02..15a5962c6 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -137,6 +137,7 @@ class EggResource extends Resource { return $table ->defaultPaginationPageOption(25) + ->checkIfRecordIsSelectableUsing(fn (Egg $egg) => $egg->servers_count <= 0) ->columns([ Tables\Columns\TextColumn::make('id') ->label('Id') @@ -144,7 +145,7 @@ class EggResource extends Resource ->searchable(), Tables\Columns\TextColumn::make('name') ->icon('tabler-egg') - ->description(fn ($record): string => $record->description) + ->description(fn ($record): ?string => $record->description) ->wrap() ->searchable(), Tables\Columns\TextColumn::make('author') diff --git a/app/Filament/Resources/EggResource/Pages/ListEggs.php b/app/Filament/Resources/EggResource/Pages/ListEggs.php index 534b48389..00be09020 100644 --- a/app/Filament/Resources/EggResource/Pages/ListEggs.php +++ b/app/Filament/Resources/EggResource/Pages/ListEggs.php @@ -21,11 +21,12 @@ class ListEggs extends ListRecords Actions\CreateAction::make(), Actions\Action::make('import') - ->label('Import Egg') + ->label('Import') ->form([ Forms\Components\FileUpload::make('egg') ->acceptedFileTypes(['application/json']) - ->storeFiles(false), + ->storeFiles(false) + ->multiple(), ]) ->action(function (array $data): void { /** @var TemporaryUploadedFile $eggFile */ @@ -34,25 +35,25 @@ class ListEggs extends ListRecords /** @var EggImporterService $eggImportService */ $eggImportService = resolve(EggImporterService::class); - try { - $newEgg = $eggImportService->handle($eggFile); - } catch (Exception $exception) { - Notification::make() - ->title('Egg Import Failed') - ->danger() - ->send(); + foreach ($eggFile as $file) { + try { + $eggImportService->handle($file); + } catch (Exception $exception) { + Notification::make() + ->title('Import Failed') + ->danger() + ->send(); - report($exception); + report($exception); - return; + return; + } } Notification::make() - ->title("Egg Import Success: $newEgg->name") + ->title('Import Success') ->success() ->send(); - - redirect()->route('filament.admin.resources.eggs.edit', [$newEgg]); }), ]; } diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index e506ca9ab..ff0b6eaef 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\NodeResource\Pages; use App\Filament\Resources\NodeResource; +use App\Models\Allocation; use App\Models\Node; use Filament\Actions; use Filament\Forms; @@ -50,27 +51,115 @@ class EditNode extends EditRecord ]), Tabs\Tab::make('Allocations') ->icon('tabler-plug-connected') - ->columns(4) + ->columns([ + 'default' => 1, + 'sm' => 2, + 'md' => 4, + ]) ->schema([ + Forms\Components\Section::make('Create Allocation') + ->columnSpan(4) + ->columns([ + 'default' => 1, + 'sm' => 2, + 'md' => 4, + 'lg' => 5, + ]) + //->inlineLabel() + ->headerActions([ + Forms\Components\Actions\Action::make('submit') + ->color('success') + ->action(function () { + // ... + }), + ]) + ->schema([ + Forms\Components\TextInput::make('ip') + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 2, + 'lg' => 2, + ]) + ->label('IP Address') + ->placeholder('x.x.x.x') + ->helperText('IP address to assign ports to'), + Forms\Components\TagsInput::make('port') + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 1, + 'lg' => 1, + ]) + ->placeholder('25565') + ->helperText('Individual ports or port ranges here separated by spaces') + ->splitKeys(['Tab', ' ']), + Forms\Components\TextInput::make('ip_alias') + ->columnSpan([ + 'default' => 1, + 'sm' => 2, + 'md' => 1, + 'lg' => 2, + ]) + ->label('Alias') + ->placeholder('minecraft.pelican.dev') + ->helperText('Display name to help you remember.'), + ]), Forms\Components\Repeater::make('allocations') ->orderColumn('server_id') - ->columnSpan(1) - ->columns(4) + ->columnSpan(4) + ->columns([ + 'default' => 1, + 'sm' => 3, + 'md' => 4, + 'lg' => 9, + ]) ->relationship() ->addActionLabel('Create New Allocation') ->addAction(fn ($action) => $action->color('info')) ->schema([ Forms\Components\TextInput::make('ip') - ->label('IP Address'), - Forms\Components\TextInput::make('ip_alias') - ->label('Alias'), + ->label('IP Address') + ->placeholder('x.x.x.x') + ->columnSpan([ + 'default' => 1, + 'sm' => 2, + 'md' => 3, + 'lg' => 2, + ]), Forms\Components\TextInput::make('port') + ->placeholder('25565') + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 1, + 'lg' => 1, + ]) ->minValue(0) ->maxValue(65535) ->numeric(), - Forms\Components\Select::make('server_id')->relationship('server', 'name'), + Forms\Components\TextInput::make('ip_alias') + ->placeholder('mincraft.pelican.dev') + ->columnSpan([ + 'default' => 1, + 'sm' => 2, + 'md' => 2, + 'lg' => 3, + ]) + ->label('Alias'), + Forms\Components\TextInput::make('server') + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 2, + 'lg' => 3, + ]) + ->formatStateUsing(fn (Allocation $allocation) => $allocation->server?->name) + ->activeUrl(true) + ->placeholder('Not assigned'), ]), ]), + ]), ]); } diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index c765b5a08..12a13a9b7 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -2,6 +2,8 @@ namespace App\Filament\Resources; +use App\Enums\ContainerStatus; +use App\Enums\ServerState; use App\Filament\Resources\ServerResource\Pages; use App\Models\Allocation; use App\Models\Egg; @@ -52,21 +54,15 @@ class ServerResource extends Resource return $details['state'] ?? 'unknown'; }) - ->options([ - 'running' => 'Running', - 'starting' => 'Starting', - 'stopping' => 'Stopping', - 'offline' => 'Offline', - 'unknown' => 'Unknown', - ]) - - ->colors([ - 'running' => 'success', - 'offline' => 'danger', - 'starting' => 'primary', - 'stopping' => 'warning', - 'unknown' => 'primary', - ]) + ->options(collect(ContainerStatus::cases())->mapWithKeys( + fn (ContainerStatus $status) => [$status->value => str($status->value)->ucwords()] + )) + ->colors(collect(ContainerStatus::cases())->mapWithKeys( + fn (ContainerStatus $status) => [$status->value => $status->color()] + )) + ->icons(collect(ContainerStatus::cases())->mapWithKeys( + fn (ContainerStatus $status) => [$status->value => $status->icon()] + )) ->grouped() ->columnSpanFull() ->inline(), @@ -76,24 +72,16 @@ class ServerResource extends Resource ->helperText('') ->hiddenOn('create') ->disableOptionWhen(fn ($state, $value) => $state !== $value) - ->formatStateUsing(fn ($state) => $state ?? 'none') - ->options([ - 'none' => 'None', - Server::STATUS_INSTALLING => str(Server::STATUS_INSTALLING)->title()->replace('_', ' '), - Server::STATUS_INSTALL_FAILED => str(Server::STATUS_INSTALL_FAILED)->title()->replace('_', ' '), - Server::STATUS_REINSTALL_FAILED => str(Server::STATUS_REINSTALL_FAILED)->title()->replace('_', ' '), - Server::STATUS_SUSPENDED => str(Server::STATUS_SUSPENDED)->title()->replace('_', ' '), - Server::STATUS_RESTORING_BACKUP => str(Server::STATUS_RESTORING_BACKUP)->title()->replace('_', ' '), - ]) - - ->colors([ - 'none' => 'primary', - Server::STATUS_INSTALLING => 'primary', - Server::STATUS_INSTALL_FAILED => 'danger', - Server::STATUS_REINSTALL_FAILED => 'danger', - Server::STATUS_SUSPENDED => 'danger', - Server::STATUS_RESTORING_BACKUP => 'primary', - ]) + ->formatStateUsing(fn ($state) => $state ?? ServerState::Normal) + ->options(collect(ServerState::cases())->mapWithKeys( + fn (ServerState $state) => [$state->value => str($state->value)->replace('_', ' ')->ucwords()] + )) + ->colors(collect(ServerState::cases())->mapWithKeys( + fn (ServerState $state) => [$state->value => $state->color()] + )) + ->icons(collect(ServerState::cases())->mapWithKeys( + fn (ServerState $state) => [$state->value => $state->icon()] + )) ->grouped() ->columnSpanFull() ->inline(), @@ -184,22 +172,11 @@ class ServerResource extends Resource ) ->createOptionForm(fn (Forms\Get $get) => [ Forms\Components\TextInput::make('allocation_ip') - ->ipv4() - ->datalist(function () use ($get) { - $node = Node::find($get('node_id')); - if (is_ip($node->fqdn)) { - return [$node->fqdn]; - } - - $validRecords = gethostbynamel($node->fqdn); - if (!$validRecords) { - return []; - } - - return $validRecords ?: []; - }) + ->datalist(Node::find($get('node_id'))?->ipAddresses() ?? []) ->label('IP Address') + ->ipv4() ->helperText("Usually your machine's public IP unless you are port forwarding.") + // ->selectablePlaceholder(false) ->required(), Forms\Components\TextInput::make('allocation_alias') ->label('Alias') @@ -217,6 +194,54 @@ class ServerResource extends Resource They usually consist of the port forwarded ones. ') ->label('Ports') + ->live() + ->afterStateUpdated(function ($state, Forms\Set $set) { + $ports = collect(); + $update = false; + foreach ($state as $portEntry) { + if (!str_contains($portEntry, '-')) { + if (is_numeric($portEntry)) { + $ports->push((int) $portEntry); + + continue; + } + + // Do not add non numerical ports + $update = true; + + continue; + } + + $update = true; + [$start, $end] = explode('-', $portEntry); + if (!is_numeric($start) || !is_numeric($end)) { + continue; + } + + $start = max((int) $start, 0); + $end = min((int) $end, 2 ** 16 - 1); + for ($i = $start; $i <= $end; $i++) { + $ports->push($i); + } + } + + $uniquePorts = $ports->unique()->values(); + if ($ports->count() > $uniquePorts->count()) { + $update = true; + $ports = $uniquePorts; + } + + $sortedPorts = $ports->sort()->values(); + if ($sortedPorts->all() !== $ports->all()) { + $update = true; + $ports = $sortedPorts; + } + + if ($update) { + $set('allocation_ports', $ports->all()); + } + }) + ->splitKeys(['Tab', ' ', ',']) ->required(), ]) ->createOptionUsing(function (array $data, Forms\Get $get): int { @@ -229,6 +254,7 @@ class ServerResource extends Resource Forms\Components\Repeater::make('allocation_additional') ->label('Additional Allocations') ->columnSpan(2) + ->addActionLabel('Add Allocation') ->disabled(fn (Forms\Get $get) => $get('allocation_id') === null) // ->addable() TODO disable when all allocations are taken // ->addable() TODO disable until first additional allocation is selected @@ -332,6 +358,15 @@ class ServerResource extends Resource ->live() ->label('Custom Image?') ->default(false) + ->formatStateUsing(function ($state, Forms\Get $get) { + if ($state !== null) { + return $state; + } + + $images = Egg::find($get('egg_id'))->docker_images ?? []; + + return !in_array($get('image'), $images); + }) ->options([ false => 'No', true => 'Yes', @@ -563,6 +598,39 @@ class ServerResource extends Resource return $table ->searchable(false) ->columns([ + Tables\Columns\TextColumn::make('status') + ->default('unknown') + ->badge() + ->default(function (Server $server) { + if ($server->status !== null) { + return $server->status; + } + + $statuses = collect($server->retrieveStatus()) + ->mapWithKeys(function ($status) { + return [$status['configuration']['uuid'] => $status['state']]; + })->all(); + + return $statuses[$server->uuid] ?? 'node_fail'; + }) + ->icon(fn ($state) => match ($state) { + 'node_fail' => 'tabler-server-off', + 'running' => 'tabler-heartbeat', + 'removing' => 'tabler-heart-x', + 'offline' => 'tabler-heart-off', + 'paused' => 'tabler-heart-pause', + 'installing' => 'tabler-heart-bolt', + 'suspended' => 'tabler-heart-cancel', + default => 'tabler-heart-question', + }) + ->color(fn ($state): string => match ($state) { + 'running' => 'success', + 'installing', 'restarting' => 'primary', + 'paused', 'removing' => 'warning', + 'node_fail', 'install_failed', 'suspended' => 'danger', + default => 'gray', + }), + Tables\Columns\TextColumn::make('uuid') ->hidden() ->label('UUID') @@ -584,9 +652,11 @@ class ServerResource extends Resource ->label('Owner') ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) ->sortable(), - Tables\Columns\SelectColumn::make('allocation.id') + Tables\Columns\SelectColumn::make('allocation_id') ->label('Primary Allocation') - ->options(fn ($state, Server $server) => [$server->allocation->id => $server->allocation->address]) + ->options(fn ($state, Server $server) => $server->allocations->mapWithKeys( + fn ($allocation) => [$allocation->id => $allocation->address]) + ) ->selectablePlaceholder(false) ->sortable(), Tables\Columns\TextColumn::make('image')->hidden(), diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php index bcf0a72c6..af95ddf20 100644 --- a/app/Filament/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -4,7 +4,6 @@ namespace App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource; use App\Services\Servers\ServerCreationService; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; use Illuminate\Database\Eloquent\Model; @@ -25,8 +24,8 @@ class CreateServer extends CreateRecord return $server; } -// protected function getRedirectUrl(): string -// { -// return $this->getResource()::getUrl('edit'); -// } + // protected function getRedirectUrl(): string + // { + // return $this->getResource()::getUrl('edit'); + // } } diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index b896d69b7..a7007f2d5 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -2,16 +2,27 @@ namespace App\Filament\Resources\UserResource\Pages; +use App\Facades\Activity; use App\Models\ActivityLog; +use App\Models\ApiKey; use App\Models\User; +use App\Services\Users\TwoFactorSetupService; +use chillerlan\QRCode\Common\EccLevel; +use chillerlan\QRCode\Common\Version; +use chillerlan\QRCode\QRCode; +use chillerlan\QRCode\QROptions; +use Filament\Forms\Components\Actions\Action; +use Filament\Forms\Components\Grid; use Filament\Forms\Components\Placeholder; use Filament\Forms\Components\Repeater; +use Filament\Forms\Components\Section; use Filament\Forms\Components\Select; use Filament\Forms\Components\Tabs; use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\Tabs\Tab; use Filament\Forms\Components\TextInput; use Filament\Forms\Get; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Hash; use Illuminate\Support\HtmlString; use Illuminate\Validation\Rules\Password; @@ -24,84 +35,192 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile 'form' => $this->form( $this->makeForm() ->schema([ - Tabs::make()->schema([ - Tab::make('Account') - ->icon('tabler-user') - ->schema([ - TextInput::make('username') - ->disabled() - ->readOnly() - ->maxLength(191) - ->unique(ignoreRecord: true) - ->autofocus(), + Tabs::make()->persistTabInQueryString() + ->schema([ + Tab::make('Account') + ->icon('tabler-user') + ->schema([ + TextInput::make('username') + ->disabled() + ->readOnly() + ->maxLength(191) + ->unique(ignoreRecord: true) + ->autofocus(), - TextInput::make('email') - ->email() - ->required() - ->maxLength(191) - ->unique(ignoreRecord: true), + TextInput::make('email') + ->prefixIcon('tabler-mail') + ->email() + ->required() + ->maxLength(191) + ->unique(ignoreRecord: true), - TextInput::make('password') - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->rule(Password::default()) - ->autocomplete('new-password') - ->dehydrated(fn ($state): bool => filled($state)) - ->dehydrateStateUsing(fn ($state): string => Hash::make($state)) - ->live(debounce: 500) - ->same('passwordConfirmation'), + TextInput::make('password') + ->password() + ->prefixIcon('tabler-password') + ->revealable(filament()->arePasswordsRevealable()) + ->rule(Password::default()) + ->autocomplete('new-password') + ->dehydrated(fn ($state): bool => filled($state)) + ->dehydrateStateUsing(fn ($state): string => Hash::make($state)) + ->live(debounce: 500) + ->same('passwordConfirmation'), - TextInput::make('passwordConfirmation') - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->required() - ->visible(fn (Get $get): bool => filled($get('password'))) - ->dehydrated(false), + TextInput::make('passwordConfirmation') + ->password() + ->prefixIcon('tabler-password-fingerprint') + ->revealable(filament()->arePasswordsRevealable()) + ->required() + ->visible(fn (Get $get): bool => filled($get('password'))) + ->dehydrated(false), - Select::make('language') - ->required() - ->default('en') - ->options(fn (User $user) => $user->getAvailableLanguages()), - ]), + Select::make('language') + ->required() + ->prefixIcon('tabler-flag') + ->live() + ->default('en') + ->helperText(fn (User $user, $state) => new HtmlString($user->isLanguageTranslated($state) ? '' : " + Your language ($state) has not been translated yet! + But never fear, you can help fix that by + contributing directly here. + ") + ) + ->options(fn (User $user) => $user->getAvailableLanguages()), + ]), - Tab::make('2FA') - ->icon('tabler-shield-lock') - ->schema([ - Placeholder::make('Coming soon!'), - ]), + Tab::make('2FA') + ->icon('tabler-shield-lock') + ->schema(function () { - Tab::make('API Keys') - ->icon('tabler-key') - ->schema([ - Placeholder::make('Coming soon!'), - TagsInput::make('allowed_ips') - ->placeholder('Example: 127.0.0.1 or 192.168.1.1') - ->label('Whitelisted IPv4 Addresses') - ->helperText('Press enter to add a new IP address or leave blank to allow any IP address') - ->columnSpanFull() - ->hidden() - ->default(null), - ]), - - Tab::make('SSH Keys') - ->icon('tabler-lock-code') - ->schema([ - Placeholder::make('Coming soon!'), - ]), + if ($this->getUser()->use_totp) { + return [ + Placeholder::make('2FA already enabled!'), + ]; + } + $setupService = app(TwoFactorSetupService::class); - Tab::make('Activity') - ->icon('tabler-history') - ->schema([ - Repeater::make('activity') - ->deletable(false) - ->addable(false) - ->relationship() + ['image_url_data' => $url] = $setupService->handle($this->getUser()); - ->schema([ - Placeholder::make('activity!')->label('')->content(fn (ActivityLog $log) => new HtmlString($log->htmlable())), + $options = new QROptions([ + 'svgLogo' => public_path('pelican.svg'), + 'addLogoSpace' => true, + 'logoSpaceWidth' => 13, + 'logoSpaceHeight' => 13, + ]); + + // https://github.com/chillerlan/php-qrcode/blob/main/examples/svgWithLogo.php + + // SVG logo options (see extended class) + $options->svgLogo = public_path('pelican.svg'); // logo from: https://github.com/simple-icons/simple-icons + $options->svgLogoScale = 0.05; + // $options->svgLogoCssClass = 'dark'; + + // QROptions + $options->version = Version::AUTO; + // $options->outputInterface = QRSvgWithLogo::class; + $options->outputBase64 = false; + $options->eccLevel = EccLevel::H; // ECC level H is necessary when using logos + $options->addQuietzone = true; + // $options->drawLightModules = true; + $options->connectPaths = true; + $options->drawCircularModules = true; + // $options->circleRadius = 0.45; + + $options->svgDefs = ' + + + + + '; + + $image = (new QRCode($options))->render($url); + + return [ + Placeholder::make('qr') + ->label('Scan QR Code') + ->content(fn () => new HtmlString(" +
$image
+ ")) + ->default('asdfasdf'), + ]; + }), + + Tab::make('API Keys') + ->icon('tabler-key') + ->schema([ + Grid::make('asdf')->columns(5)->schema([ + Section::make('Create API Key')->columnSpan(3)->schema([ + TextInput::make('description'), + TagsInput::make('allowed_ips') + ->splitKeys([',', ' ', 'Tab']) + ->placeholder('Example: 127.0.0.1 or 192.168.1.1') + ->label('Whitelisted IP\'s') + ->helperText('Press enter to add a new IP address or leave blank to allow any IP address') + ->columnSpanFull(), + ])->headerActions([ + Action::make('Create') + ->successRedirectUrl('/panel/profile?tab=-api-keys-tab') + ->action(function (Get $get, Action $action) { + $token = auth()->user()->createToken( + $get('description'), + $get('allowed_ips'), + ); + + Activity::event('user:api-key.create') + ->subject($token->accessToken) + ->property('identifier', $token->accessToken->identifier) + ->log(); + + $action->success(); + }), + ]), + Section::make('API Keys')->columnSpan(2)->schema([ + Repeater::make('keys') + ->relationship('apiKeys') + ->addable(false) + ->itemLabel(fn ($state) => $state['identifier']) + ->deleteAction(function (Action $action) { + $action->requiresConfirmation()->action(function (array $arguments, Repeater $component) { + $items = $component->getState(); + $key = $items[$arguments['item']]; + ApiKey::find($key['id'] ?? null)?->delete(); + + unset($items[$arguments['item']]); + + $component->state($items); + + $component->callAfterStateUpdated(); + }); + }) + ->schema(fn () => [ + Placeholder::make('adf')->label(fn (ApiKey $key) => $key->memo), + ]), + ]), ]), - ]), - ]), + ]), + + Tab::make('SSH Keys') + ->icon('tabler-lock-code') + ->schema([ + Placeholder::make('Coming soon!'), + ]), + + Tab::make('Activity') + ->icon('tabler-history') + ->schema([ + Repeater::make('activity') + ->deletable(false) + ->addable(false) + ->relationship(null, function (Builder $query) { + $query->orderBy('timestamp', 'desc'); + }) + ->schema([ + Placeholder::make('activity!')->label('')->content(fn (ActivityLog $log) => new HtmlString($log->htmlable())), + ]), + ]), + ]), ]) ->operation('edit') ->model($this->getUser()) diff --git a/app/Http/Controllers/Admin/Servers/ServerViewController.php b/app/Http/Controllers/Admin/Servers/ServerViewController.php index 5763ee238..594022a97 100644 --- a/app/Http/Controllers/Admin/Servers/ServerViewController.php +++ b/app/Http/Controllers/Admin/Servers/ServerViewController.php @@ -2,12 +2,12 @@ namespace App\Http\Controllers\Admin\Servers; +use App\Enums\ServerState; use App\Models\DatabaseHost; use App\Models\Egg; use App\Models\Mount; use App\Models\Node; use Illuminate\View\View; -use Illuminate\Http\Request; use App\Models\Server; use App\Exceptions\DisplayException; use App\Http\Controllers\Controller; @@ -22,14 +22,14 @@ class ServerViewController extends Controller * ServerViewController constructor. */ public function __construct( - private EnvironmentService $environmentService, + private readonly EnvironmentService $environmentService, ) { } /** * Returns the index view for a server. */ - public function index(Request $request, Server $server): View + public function index(Server $server): View { return view('admin.servers.view.index', compact('server')); } @@ -37,7 +37,7 @@ class ServerViewController extends Controller /** * Returns the server details page. */ - public function details(Request $request, Server $server): View + public function details(Server $server): View { return view('admin.servers.view.details', compact('server')); } @@ -45,7 +45,7 @@ class ServerViewController extends Controller /** * Returns a view of server build settings. */ - public function build(Request $request, Server $server): View + public function build(Server $server): View { $allocations = $server->node->allocations->toBase(); @@ -59,7 +59,7 @@ class ServerViewController extends Controller /** * Returns the server startup management page. */ - public function startup(Request $request, Server $server): View + public function startup(Server $server): View { $variables = $this->environmentService->handle($server); $eggs = Egg::all()->keyBy('id'); @@ -76,7 +76,7 @@ class ServerViewController extends Controller /** * Returns all the databases that exist for the server. */ - public function database(Request $request, Server $server): View + public function database(Server $server): View { return view('admin.servers.view.database', [ 'hosts' => DatabaseHost::all(), @@ -87,7 +87,7 @@ class ServerViewController extends Controller /** * Returns all the mounts that exist for the server. */ - public function mounts(Request $request, Server $server): View + public function mounts(Server $server): View { $server->load('mounts'); @@ -108,9 +108,9 @@ class ServerViewController extends Controller * * @throws \App\Exceptions\DisplayException */ - public function manage(Request $request, Server $server): View + public function manage(Server $server): View { - if ($server->status === Server::STATUS_INSTALL_FAILED) { + if ($server->status === ServerState::InstallFailed) { throw new DisplayException('This server is in a failed install state and cannot be recovered. Please delete and re-create the server.'); } @@ -135,7 +135,7 @@ class ServerViewController extends Controller /** * Returns the server deletion page. */ - public function delete(Request $request, Server $server): View + public function delete(Server $server): View { return view('admin.servers.view.delete', compact('server')); } diff --git a/app/Http/Controllers/Admin/ServersController.php b/app/Http/Controllers/Admin/ServersController.php index 5d5250df7..9aa0af24e 100644 --- a/app/Http/Controllers/Admin/ServersController.php +++ b/app/Http/Controllers/Admin/ServersController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin; +use App\Enums\ServerState; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Http\Response; @@ -71,11 +72,11 @@ class ServersController extends Controller */ public function toggleInstall(Server $server): RedirectResponse { - if ($server->status === Server::STATUS_INSTALL_FAILED) { + if ($server->status === ServerState::InstallFailed) { throw new DisplayException(trans('admin/server.exceptions.marked_as_failed')); } - $server->status = $server->isInstalled() ? Server::STATUS_INSTALLING : null; + $server->status = $server->isInstalled() ? ServerState::Installing : null; $server->save(); $this->alert->success(trans('admin/server.alerts.install_toggled'))->flash(); diff --git a/app/Http/Controllers/Api/Client/Servers/BackupController.php b/app/Http/Controllers/Api/Client/Servers/BackupController.php index f59b087aa..ab1e441e2 100644 --- a/app/Http/Controllers/Api/Client/Servers/BackupController.php +++ b/app/Http/Controllers/Api/Client/Servers/BackupController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api\Client\Servers; +use App\Enums\ServerState; use Illuminate\Http\Request; use App\Models\Backup; use App\Models\Server; @@ -212,7 +213,7 @@ class BackupController extends ClientApiController // Update the status right away for the server so that we know not to allow certain // actions against it via the Panel API. - $server->update(['status' => Server::STATUS_RESTORING_BACKUP]); + $server->update(['status' => ServerState::RestoringBackup]); $this->daemonRepository->setServer($server)->restore($backup, $url ?? null, $request->input('truncate')); }); diff --git a/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php b/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php index cc3439580..824453045 100644 --- a/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php +++ b/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api\Remote\Servers; +use App\Enums\ServerState; use App\Models\Backup; use Illuminate\Http\Request; use App\Models\Server; @@ -81,7 +82,7 @@ class ServerDetailsController extends Controller ->latest('timestamp'), ]) ->where('node_id', $node->id) - ->where('status', Server::STATUS_RESTORING_BACKUP) + ->where('status', ServerState::RestoringBackup) ->get(); $this->connection->transaction(function () use ($node, $servers) { @@ -108,7 +109,7 @@ class ServerDetailsController extends Controller // Update any server marked as installing or restoring as being in a normal state // at this point in the process. Server::query()->where('node_id', $node->id) - ->whereIn('status', [Server::STATUS_INSTALLING, Server::STATUS_RESTORING_BACKUP]) + ->whereIn('status', [ServerState::Installing, ServerState::RestoringBackup]) ->update(['status' => null]); }); diff --git a/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php b/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php index 98a8f37d8..49eaf2c51 100644 --- a/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php +++ b/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api\Remote\Servers; +use App\Enums\ServerState; use Illuminate\Http\Response; use App\Models\Server; use Illuminate\Http\JsonResponse; @@ -36,16 +37,16 @@ class ServerInstallController extends Controller // Make sure the type of failure is accurate if (!$request->boolean('successful')) { - $status = Server::STATUS_INSTALL_FAILED; + $status = ServerState::InstallFailed; if ($request->boolean('reinstall')) { - $status = Server::STATUS_REINSTALL_FAILED; + $status = ServerState::ReinstallFailed; } } // Keep the server suspended if it's already suspended - if ($server->status === Server::STATUS_SUSPENDED) { - $status = Server::STATUS_SUSPENDED; + if ($server->status === ServerState::Suspended) { + $status = ServerState::Suspended; } $previouslyInstalledAt = $server->installed_at; diff --git a/app/Http/Middleware/VerifyReCaptcha.php b/app/Http/Middleware/VerifyReCaptcha.php index 762a9646d..bfe09ce98 100644 --- a/app/Http/Middleware/VerifyReCaptcha.php +++ b/app/Http/Middleware/VerifyReCaptcha.php @@ -19,6 +19,10 @@ class VerifyReCaptcha return $next($request); } + if (app()->isLocal()) { + return $next($request); + } + if ($request->filled('g-recaptcha-response')) { $client = new Client(); $res = $client->post(config('recaptcha.domain'), [ diff --git a/app/Models/Egg.php b/app/Models/Egg.php index 559482839..95ad31cb5 100644 --- a/app/Models/Egg.php +++ b/app/Models/Egg.php @@ -139,6 +139,7 @@ class Egg extends Model 'features' => 'array', 'docker_images' => 'array', 'file_denylist' => 'array', + 'tags' => 'array', ]; } diff --git a/app/Models/Node.php b/app/Models/Node.php index e3dc97b41..c93fd8f89 100644 --- a/app/Models/Node.php +++ b/app/Models/Node.php @@ -5,6 +5,7 @@ namespace App\Models; use App\Exceptions\Service\HasActiveServersException; use App\Repositories\Daemon\DaemonConfigurationRepository; use Exception; +use Illuminate\Support\Facades\Http; use Illuminate\Support\Str; use Symfony\Component\Yaml\Yaml; use Illuminate\Notifications\Notifiable; @@ -288,4 +289,36 @@ class Node extends Model } }); } + + public function serverStatuses(): array + { + return cache()->remember("nodes.$this->id.servers", now()->addMinute(), function () { + try { + return Http::daemon($this)->connectTimeout(1)->timeout(1)->get('/api/servers')->json(); + } catch (Exception) { + return []; + } + }); + } + + public function ipAddresses(): array + { + return cache()->remember("nodes.$this->id.ips", now()->addHour(), function () { + $ips = collect(); + if (is_ip($this->fqdn)) { + $ips = $ips->push($this->fqdn); + } elseif ($dnsRecords = gethostbynamel($this->fqdn)) { + $ips = $ips->concat($dnsRecords); + } + + try { + $addresses = Http::daemon($this)->connectTimeout(1)->timeout(1)->get('/api/system/ips')->json(); + $ips = $ips->concat(fluent($addresses)->get('ip_addresses')); + } catch (Exception) { + // pass + } + + return $ips->all(); + }); + } } diff --git a/app/Models/Server.php b/app/Models/Server.php index b450973b4..11db6854c 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Enums\ServerState; use App\Exceptions\Http\Connection\DaemonConnectionException; use GuzzleHttp\Exception\GuzzleException; use Illuminate\Notifications\Notifiable; @@ -112,12 +113,6 @@ class Server extends Model */ public const RESOURCE_NAME = 'server'; - public const STATUS_INSTALLING = 'installing'; - public const STATUS_INSTALL_FAILED = 'install_failed'; - public const STATUS_REINSTALL_FAILED = 'reinstall_failed'; - public const STATUS_SUSPENDED = 'suspended'; - public const STATUS_RESTORING_BACKUP = 'restoring_backup'; - /** * The table associated with the model. */ @@ -128,7 +123,7 @@ class Server extends Model * on server instances unless the user specifies otherwise in the request. */ protected $attributes = [ - 'status' => self::STATUS_INSTALLING, + 'status' => ServerState::Installing, 'oom_disabled' => true, 'installed_at' => null, ]; @@ -171,6 +166,7 @@ class Server extends Model { return [ 'node_id' => 'integer', + 'status' => ServerState::class, 'skip_scripts' => 'boolean', 'owner_id' => 'integer', 'memory' => 'integer', @@ -203,12 +199,12 @@ class Server extends Model public function isInstalled(): bool { - return $this->status !== self::STATUS_INSTALLING && $this->status !== self::STATUS_INSTALL_FAILED; + return $this->status !== ServerState::Installing && $this->status !== ServerState::InstallFailed; } public function isSuspended(): bool { - return $this->status === self::STATUS_SUSPENDED; + return $this->status === ServerState::Suspended; } /** @@ -359,7 +355,7 @@ class Server extends Model $this->isSuspended() || $this->node->isUnderMaintenance() || !$this->isInstalled() || - $this->status === self::STATUS_RESTORING_BACKUP || + $this->status === ServerState::RestoringBackup || !is_null($this->transfer) ) { throw new ServerStateConflictException($this); @@ -376,7 +372,7 @@ class Server extends Model { if ( !$this->isInstalled() || - $this->status === self::STATUS_RESTORING_BACKUP || + $this->status === ServerState::RestoringBackup || !is_null($this->transfer) ) { throw new ServerStateConflictException($this); @@ -398,4 +394,9 @@ class Server extends Model throw new DaemonConnectionException($exception); } } + + public function retrieveStatus() + { + return $this->node->serverStatuses(); + } } diff --git a/app/Models/User.php b/app/Models/User.php index 33905ae55..b50dba9f0 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -177,7 +177,7 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac protected static function booted(): void { static::creating(function (self $user) { - $user->uuid = Str::uuid(); + $user->uuid = Str::uuid()->toString(); return true; }); diff --git a/app/Repositories/Daemon/DaemonFileRepository.php b/app/Repositories/Daemon/DaemonFileRepository.php index ad1903a68..7667f482e 100644 --- a/app/Repositories/Daemon/DaemonFileRepository.php +++ b/app/Repositories/Daemon/DaemonFileRepository.php @@ -28,9 +28,7 @@ class DaemonFileRepository extends DaemonRepository try { $response = $this->getHttpClient()->get( sprintf('/api/servers/%s/files/contents', $this->server->uuid), - [ - 'query' => ['file' => $path], - ] + ['file' => $path] ); } catch (ClientException|TransferException $exception) { throw new DaemonConnectionException($exception); @@ -55,13 +53,10 @@ class DaemonFileRepository extends DaemonRepository Assert::isInstanceOf($this->server, Server::class); try { - return $this->getHttpClient()->post( - sprintf('/api/servers/%s/files/write', $this->server->uuid), - [ - 'query' => ['file' => $path], - 'body' => $content, - ] - ); + return $this->getHttpClient() + ->withQueryParameters(['file' => $path]) + ->withBody($content) + ->post(sprintf('/api/servers/%s/files/write', $this->server->uuid)); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); } @@ -79,9 +74,7 @@ class DaemonFileRepository extends DaemonRepository try { $response = $this->getHttpClient()->get( sprintf('/api/servers/%s/files/list-directory', $this->server->uuid), - [ - 'query' => ['directory' => $path], - ] + ['directory' => $path] ); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); @@ -125,10 +118,8 @@ class DaemonFileRepository extends DaemonRepository return $this->getHttpClient()->put( sprintf('/api/servers/%s/files/rename', $this->server->uuid), [ - 'json' => [ - 'root' => $root ?? '/', - 'files' => $files, - ], + 'root' => $root ?? '/', + 'files' => $files, ] ); } catch (TransferException $exception) { @@ -275,9 +266,7 @@ class DaemonFileRepository extends DaemonRepository try { return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/pull', $this->server->uuid), - [ - array_filter($attributes, fn ($value) => !is_null($value)), - ] + array_filter($attributes, fn ($value) => !is_null($value)) ); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); diff --git a/app/Repositories/Daemon/DaemonServerRepository.php b/app/Repositories/Daemon/DaemonServerRepository.php index 19a0d2ec2..4d36901a8 100644 --- a/app/Repositories/Daemon/DaemonServerRepository.php +++ b/app/Repositories/Daemon/DaemonServerRepository.php @@ -2,6 +2,8 @@ namespace App\Repositories\Daemon; +use App\Enums\ContainerStatus; +use Exception; use Webmozart\Assert\Assert; use App\Models\Server; use GuzzleHttp\Exception\GuzzleException; @@ -25,6 +27,8 @@ class DaemonServerRepository extends DaemonRepository ); } catch (TransferException $exception) { throw new DaemonConnectionException($exception, false); + } catch (Exception) { + return ['state' => ContainerStatus::Missing->value]; } return $response->json(); @@ -147,7 +151,7 @@ class DaemonServerRepository extends DaemonRepository try { $this->getHttpClient() ->post(sprintf('/api/servers/%s/ws/deny', $this->server->uuid), [ - 'json' => ['jtis' => $jtis], + 'jtis' => $jtis, ]); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); diff --git a/app/Services/Servers/ReinstallServerService.php b/app/Services/Servers/ReinstallServerService.php index 475decef4..301de9711 100644 --- a/app/Services/Servers/ReinstallServerService.php +++ b/app/Services/Servers/ReinstallServerService.php @@ -2,6 +2,7 @@ namespace App\Services\Servers; +use App\Enums\ServerState; use App\Models\Server; use Illuminate\Database\ConnectionInterface; use App\Repositories\Daemon\DaemonServerRepository; @@ -25,7 +26,7 @@ class ReinstallServerService public function handle(Server $server): Server { return $this->connection->transaction(function () use ($server) { - $server->fill(['status' => Server::STATUS_INSTALLING])->save(); + $server->fill(['status' => ServerState::Installing])->save(); $this->daemonServerRepository->setServer($server)->reinstall(); diff --git a/app/Services/Servers/ServerCreationService.php b/app/Services/Servers/ServerCreationService.php index d544d7d9d..7ba8b73e9 100644 --- a/app/Services/Servers/ServerCreationService.php +++ b/app/Services/Servers/ServerCreationService.php @@ -2,6 +2,7 @@ namespace App\Services\Servers; +use App\Enums\ServerState; use App\Models\ServerVariable; use Ramsey\Uuid\Uuid; use Illuminate\Support\Arr; @@ -132,7 +133,7 @@ class ServerCreationService 'node_id' => Arr::get($data, 'node_id'), 'name' => Arr::get($data, 'name'), 'description' => Arr::get($data, 'description') ?? '', - 'status' => Server::STATUS_INSTALLING, + 'status' => ServerState::Installing, 'skip_scripts' => Arr::get($data, 'skip_scripts') ?? isset($data['skip_scripts']), 'owner_id' => Arr::get($data, 'owner_id'), 'memory' => Arr::get($data, 'memory'), diff --git a/app/Services/Servers/SuspensionService.php b/app/Services/Servers/SuspensionService.php index 196a0a680..5e317fc1b 100644 --- a/app/Services/Servers/SuspensionService.php +++ b/app/Services/Servers/SuspensionService.php @@ -2,6 +2,7 @@ namespace App\Services\Servers; +use App\Enums\ServerState; use Webmozart\Assert\Assert; use App\Models\Server; use App\Repositories\Daemon\DaemonServerRepository; @@ -44,7 +45,7 @@ class SuspensionService // Update the server's suspension status. $server->update([ - 'status' => $isSuspending ? Server::STATUS_SUSPENDED : null, + 'status' => $isSuspending ? ServerState::Suspended : null, ]); try { @@ -53,7 +54,7 @@ class SuspensionService } catch (\Exception $exception) { // Rollback the server's suspension status if daemon fails to sync the server. $server->update([ - 'status' => $isSuspending ? null : Server::STATUS_SUSPENDED, + 'status' => $isSuspending ? null : ServerState::Suspended, ]); throw $exception; } diff --git a/app/Traits/Helpers/AvailableLanguages.php b/app/Traits/Helpers/AvailableLanguages.php index cab5a76ba..c4bf74966 100644 --- a/app/Traits/Helpers/AvailableLanguages.php +++ b/app/Traits/Helpers/AvailableLanguages.php @@ -9,6 +9,22 @@ trait AvailableLanguages { private ?Filesystem $filesystem = null; + public const TRANSLATED = [ + 'ar', + 'cz', + 'da', + 'de', + 'dk', + 'en', + 'es', + 'fi', + 'ja', + 'nl', + 'pl', + 'ru', + 'tr', + ]; + /** * Return all the available languages on the Panel based on those * that are present in the language folder. @@ -18,12 +34,17 @@ trait AvailableLanguages return collect($this->getFilesystemInstance()->directories(base_path('lang')))->mapWithKeys(function ($path) { $code = basename($path); - $value = Locale::getDisplayName($code, app()->currentLocale()); + $value = Locale::getDisplayName($code, $code); return [$code => title_case($value)]; })->toArray(); } + public function isLanguageTranslated(string $countryCode = 'en'): bool + { + return in_array($countryCode, self::TRANSLATED, true); + } + /** * Return an instance of the filesystem for getting a folder listing. */ diff --git a/composer.json b/composer.json index e26afd6c8..6ba5fb658 100644 --- a/composer.json +++ b/composer.json @@ -8,10 +8,10 @@ "ext-mbstring": "*", "ext-pdo": "*", "ext-pdo_mysql": "*", - "ext-posix": "*", "ext-zip": "*", "abdelhamiderrahmouni/filament-monaco-editor": "^0.2.0", "aws/aws-sdk-php": "~3.288.1", + "chillerlan/php-qrcode": "^5.0", "doctrine/dbal": "~3.6.0", "filament/filament": "^3.2", "guzzlehttp/guzzle": "^7.5", diff --git a/composer.lock b/composer.lock index d19dc7e2c..2c13d13dc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "456a20415d738b53ce5f39676f71cd51", + "content-hash": "d56ab7da7dfcd2fe28a500ccac69fca5", "packages": [ { "name": "abdelhamiderrahmouni/filament-monaco-editor", @@ -579,6 +579,165 @@ ], "time": "2023-10-01T12:35:29+00:00" }, + { + "name": "chillerlan/php-qrcode", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/chillerlan/php-qrcode.git", + "reference": "da5bdb82c8755f54de112b271b402aaa8df53269" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/da5bdb82c8755f54de112b271b402aaa8df53269", + "reference": "da5bdb82c8755f54de112b271b402aaa8df53269", + "shasum": "" + }, + "require": { + "chillerlan/php-settings-container": "^2.1.4 || ^3.1", + "ext-mbstring": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "chillerlan/php-authenticator": "^4.1 || ^5.1", + "phan/phan": "^5.4", + "phpmd/phpmd": "^2.15", + "phpunit/phpunit": "^9.6", + "setasign/fpdf": "^1.8.2", + "squizlabs/php_codesniffer": "^3.8" + }, + "suggest": { + "chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.", + "setasign/fpdf": "Required to use the QR FPDF output.", + "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code" + }, + "type": "library", + "autoload": { + "psr-4": { + "chillerlan\\QRCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT", + "Apache-2.0" + ], + "authors": [ + { + "name": "Kazuhiko Arase", + "homepage": "https://github.com/kazuhikoarase/qrcode-generator" + }, + { + "name": "ZXing Authors", + "homepage": "https://github.com/zxing/zxing" + }, + { + "name": "Ashot Khanamiryan", + "homepage": "https://github.com/khanamiryan/php-qrcode-detector-decoder" + }, + { + "name": "Smiley", + "email": "smiley@chillerlan.net", + "homepage": "https://github.com/codemasher" + }, + { + "name": "Contributors", + "homepage": "https://github.com/chillerlan/php-qrcode/graphs/contributors" + } + ], + "description": "A QR code generator and reader with a user friendly API. PHP 7.4+", + "homepage": "https://github.com/chillerlan/php-qrcode", + "keywords": [ + "phpqrcode", + "qr", + "qr code", + "qr-reader", + "qrcode", + "qrcode-generator", + "qrcode-reader" + ], + "support": { + "docs": "https://php-qrcode.readthedocs.io", + "issues": "https://github.com/chillerlan/php-qrcode/issues", + "source": "https://github.com/chillerlan/php-qrcode" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4", + "type": "custom" + }, + { + "url": "https://ko-fi.com/codemasher", + "type": "ko_fi" + } + ], + "time": "2024-02-27T14:37:26+00:00" + }, + { + "name": "chillerlan/php-settings-container", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/chillerlan/php-settings-container.git", + "reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/8f93648fac8e6bacac8e00a8d325eba4950295e6", + "reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^8.1" + }, + "require-dev": { + "phan/phan": "^5.4", + "phpmd/phpmd": "^2.15", + "phpunit/phpunit": "^10.5", + "squizlabs/php_codesniffer": "^3.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "chillerlan\\Settings\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Smiley", + "email": "smiley@chillerlan.net", + "homepage": "https://github.com/codemasher" + } + ], + "description": "A container class for immutable settings objects. Not a DI container.", + "homepage": "https://github.com/chillerlan/php-settings-container", + "keywords": [ + "Settings", + "configuration", + "container", + "helper" + ], + "support": { + "issues": "https://github.com/chillerlan/php-settings-container/issues", + "source": "https://github.com/chillerlan/php-settings-container" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4", + "type": "custom" + }, + { + "url": "https://ko-fi.com/codemasher", + "type": "ko_fi" + } + ], + "time": "2024-03-02T20:07:15+00:00" + }, { "name": "danharrin/date-format-converter", "version": "v0.3.0", @@ -1401,16 +1560,16 @@ }, { "name": "filament/actions", - "version": "v3.2.60", + "version": "v3.2.70", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "8523fabf8d48301d80023d3955bc2d21e52b1e2f" + "reference": "02ddfa646d1f11579dd92f9055bf6c58b70e6e01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/8523fabf8d48301d80023d3955bc2d21e52b1e2f", - "reference": "8523fabf8d48301d80023d3955bc2d21e52b1e2f", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/02ddfa646d1f11579dd92f9055bf6c58b70e6e01", + "reference": "02ddfa646d1f11579dd92f9055bf6c58b70e6e01", "shasum": "" }, "require": { @@ -1450,20 +1609,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-03-21T22:43:16+00:00" + "time": "2024-04-18T11:26:11+00:00" }, { "name": "filament/filament", - "version": "v3.2.60", + "version": "v3.2.70", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "08673dba066dcb54cf9019596ffea3d79997496c" + "reference": "4b8ddda726dffd962ca6b142559d3ae2b2b74cdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/08673dba066dcb54cf9019596ffea3d79997496c", - "reference": "08673dba066dcb54cf9019596ffea3d79997496c", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/4b8ddda726dffd962ca6b142559d3ae2b2b74cdb", + "reference": "4b8ddda726dffd962ca6b142559d3ae2b2b74cdb", "shasum": "" }, "require": { @@ -1515,20 +1674,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-03-23T20:58:51+00:00" + "time": "2024-04-18T11:26:17+00:00" }, { "name": "filament/forms", - "version": "v3.2.60", + "version": "v3.2.70", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "c864c8ac34e1372964d2d4e9595d10ddaabf88c8" + "reference": "b49dde3268095dced856188c71c18df593ee6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/c864c8ac34e1372964d2d4e9595d10ddaabf88c8", - "reference": "c864c8ac34e1372964d2d4e9595d10ddaabf88c8", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/b49dde3268095dced856188c71c18df593ee6b96", + "reference": "b49dde3268095dced856188c71c18df593ee6b96", "shasum": "" }, "require": { @@ -1571,20 +1730,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-03-23T23:27:26+00:00" + "time": "2024-04-18T11:26:15+00:00" }, { "name": "filament/infolists", - "version": "v3.2.60", + "version": "v3.2.70", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "64d1ed73e05eebb688e343348e126a038169c7d0" + "reference": "d205fbeacc7faf4430abb05c49334a64fb4d84ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/64d1ed73e05eebb688e343348e126a038169c7d0", - "reference": "64d1ed73e05eebb688e343348e126a038169c7d0", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/d205fbeacc7faf4430abb05c49334a64fb4d84ae", + "reference": "d205fbeacc7faf4430abb05c49334a64fb4d84ae", "shasum": "" }, "require": { @@ -1622,20 +1781,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-03-23T23:27:28+00:00" + "time": "2024-04-18T11:26:13+00:00" }, { "name": "filament/notifications", - "version": "v3.2.60", + "version": "v3.2.70", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "f9a790ee2d5103ea87c88e6d545ea6ceb770cbe5" + "reference": "dcc47b498c2a5a89296c2f46da651a8aa5e0bf55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/f9a790ee2d5103ea87c88e6d545ea6ceb770cbe5", - "reference": "f9a790ee2d5103ea87c88e6d545ea6ceb770cbe5", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/dcc47b498c2a5a89296c2f46da651a8aa5e0bf55", + "reference": "dcc47b498c2a5a89296c2f46da651a8aa5e0bf55", "shasum": "" }, "require": { @@ -1674,20 +1833,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-03-19T00:28:12+00:00" + "time": "2024-04-18T11:26:15+00:00" }, { "name": "filament/support", - "version": "v3.2.60", + "version": "v3.2.70", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "05c0c56bdb66226dc8d239ac91bc973a0dd33edb" + "reference": "e6bd0dee0dda9f70b6f278747a5780c676edf21b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/05c0c56bdb66226dc8d239ac91bc973a0dd33edb", - "reference": "05c0c56bdb66226dc8d239ac91bc973a0dd33edb", + "url": "https://api.github.com/repos/filamentphp/support/zipball/e6bd0dee0dda9f70b6f278747a5780c676edf21b", + "reference": "e6bd0dee0dda9f70b6f278747a5780c676edf21b", "shasum": "" }, "require": { @@ -1703,6 +1862,7 @@ "spatie/color": "^1.5", "spatie/invade": "^1.0|^2.0", "spatie/laravel-package-tools": "^1.9", + "symfony/console": "^6.0|^7.0", "symfony/html-sanitizer": "^6.1|^7.0" }, "type": "library", @@ -1731,20 +1891,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-03-23T20:59:06+00:00" + "time": "2024-04-18T11:26:31+00:00" }, { "name": "filament/tables", - "version": "v3.2.60", + "version": "v3.2.70", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "b58dbfd4b3f4da6708e67a4ca0512bc914faa991" + "reference": "e45917f8be86338c385b86d3e5a42ac12f9699a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/b58dbfd4b3f4da6708e67a4ca0512bc914faa991", - "reference": "b58dbfd4b3f4da6708e67a4ca0512bc914faa991", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/e45917f8be86338c385b86d3e5a42ac12f9699a5", + "reference": "e45917f8be86338c385b86d3e5a42ac12f9699a5", "shasum": "" }, "require": { @@ -1784,20 +1944,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-03-23T20:59:09+00:00" + "time": "2024-04-18T11:26:35+00:00" }, { "name": "filament/widgets", - "version": "v3.2.60", + "version": "v3.2.70", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "38a011b9a556a2786028eb80aa135e171569d2af" + "reference": "bbc450b18cf37c8afa0b81f6e7f9ec6927c67382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/38a011b9a556a2786028eb80aa135e171569d2af", - "reference": "38a011b9a556a2786028eb80aa135e171569d2af", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/bbc450b18cf37c8afa0b81f6e7f9ec6927c67382", + "reference": "bbc450b18cf37c8afa0b81f6e7f9ec6927c67382", "shasum": "" }, "require": { @@ -1828,7 +1988,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-03-14T10:54:33+00:00" + "time": "2024-04-05T21:55:38+00:00" }, { "name": "fruitcake/php-cors", @@ -2445,16 +2605,16 @@ }, { "name": "kirschbaum-development/eloquent-power-joins", - "version": "3.5.2", + "version": "3.5.6", "source": { "type": "git", "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git", - "reference": "2fae3aca9eefd4591603a7e53406ab9f56b69fad" + "reference": "6de51d9ec43af34e77bd1d9908173de1416a0aed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/2fae3aca9eefd4591603a7e53406ab9f56b69fad", - "reference": "2fae3aca9eefd4591603a7e53406ab9f56b69fad", + "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/6de51d9ec43af34e77bd1d9908173de1416a0aed", + "reference": "6de51d9ec43af34e77bd1d9908173de1416a0aed", "shasum": "" }, "require": { @@ -2501,9 +2661,9 @@ ], "support": { "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues", - "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.5.2" + "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.5.6" }, - "time": "2024-03-20T10:23:27+00:00" + "time": "2024-04-09T00:35:30+00:00" }, { "name": "laracasts/utilities", @@ -2568,16 +2728,16 @@ }, { "name": "laravel/framework", - "version": "v11.0.8", + "version": "v11.4.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "0379a7ccb77e2029c43ce508fa76e251a0d68fce" + "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/0379a7ccb77e2029c43ce508fa76e251a0d68fce", - "reference": "0379a7ccb77e2029c43ce508fa76e251a0d68fce", + "url": "https://api.github.com/repos/laravel/framework/zipball/c1dc67c28811dc5be524a30b18f29ce62126716a", + "reference": "c1dc67c28811dc5be524a30b18f29ce62126716a", "shasum": "" }, "require": { @@ -2596,7 +2756,7 @@ "fruitcake/php-cors": "^1.3", "guzzlehttp/guzzle": "^7.8", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.15", + "laravel/prompts": "^0.1.18", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", @@ -2769,7 +2929,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-03-21T14:15:49+00:00" + "time": "2024-04-16T14:38:51+00:00" }, { "name": "laravel/helpers", @@ -2830,16 +2990,16 @@ }, { "name": "laravel/prompts", - "version": "v0.1.16", + "version": "v0.1.19", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781" + "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/ca6872ab6aec3ab61db3a61f83a6caf764ec7781", - "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781", + "url": "https://api.github.com/repos/laravel/prompts/zipball/0ab75ac3434d9f610c5691758a6146a3d1940c18", + "reference": "0ab75ac3434d9f610c5691758a6146a3d1940c18", "shasum": "" }, "require": { @@ -2881,22 +3041,22 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.16" + "source": "https://github.com/laravel/prompts/tree/v0.1.19" }, - "time": "2024-02-21T19:25:27+00:00" + "time": "2024-04-16T14:20:35+00:00" }, { "name": "laravel/sanctum", - "version": "v4.0.0", + "version": "v4.0.2", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "9e6e561308cace166de9ceae4ced820309fa8e13" + "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/9e6e561308cace166de9ceae4ced820309fa8e13", - "reference": "9e6e561308cace166de9ceae4ced820309fa8e13", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/9cfc0ce80cabad5334efff73ec856339e8ec1ac1", + "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1", "shasum": "" }, "require": { @@ -2905,7 +3065,8 @@ "illuminate/contracts": "^11.0", "illuminate/database": "^11.0", "illuminate/support": "^11.0", - "php": "^8.2" + "php": "^8.2", + "symfony/console": "^7.0" }, "require-dev": { "mockery/mockery": "^1.6", @@ -2946,7 +3107,7 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2024-03-12T14:07:05+00:00" + "time": "2024-04-10T19:39:58+00:00" }, { "name": "laravel/serializable-closure", @@ -3076,16 +3237,16 @@ }, { "name": "laravel/ui", - "version": "v4.5.0", + "version": "v4.5.1", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "da3811f409297d13feccd5858ce748e7474b3d11" + "reference": "a3562953123946996a503159199d6742d5534e61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/da3811f409297d13feccd5858ce748e7474b3d11", - "reference": "da3811f409297d13feccd5858ce748e7474b3d11", + "url": "https://api.github.com/repos/laravel/ui/zipball/a3562953123946996a503159199d6742d5534e61", + "reference": "a3562953123946996a503159199d6742d5534e61", "shasum": "" }, "require": { @@ -3093,7 +3254,8 @@ "illuminate/filesystem": "^9.21|^10.0|^11.0", "illuminate/support": "^9.21|^10.0|^11.0", "illuminate/validation": "^9.21|^10.0|^11.0", - "php": "^8.0" + "php": "^8.0", + "symfony/console": "^6.0|^7.0" }, "require-dev": { "orchestra/testbench": "^7.35|^8.15|^9.0", @@ -3132,9 +3294,9 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v4.5.0" + "source": "https://github.com/laravel/ui/tree/v4.5.1" }, - "time": "2024-03-04T13:58:27+00:00" + "time": "2024-03-21T18:12:29+00:00" }, { "name": "lcobucci/clock", @@ -3553,16 +3715,16 @@ }, { "name": "league/flysystem", - "version": "3.25.1", + "version": "3.27.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "abbd664eb4381102c559d358420989f835208f18" + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/abbd664eb4381102c559d358420989f835208f18", - "reference": "abbd664eb4381102c559d358420989f835208f18", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f", + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f", "shasum": "" }, "require": { @@ -3627,7 +3789,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.25.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.27.0" }, "funding": [ { @@ -3639,7 +3801,7 @@ "type": "github" } ], - "time": "2024-03-16T12:53:19+00:00" + "time": "2024-04-07T19:17:50+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -4135,16 +4297,16 @@ }, { "name": "livewire/livewire", - "version": "v3.4.9", + "version": "v3.4.10", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0" + "reference": "6f90e2d7f8e80a97a7406c22a0fbc61ca1256ed9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0", - "reference": "c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0", + "url": "https://api.github.com/repos/livewire/livewire/zipball/6f90e2d7f8e80a97a7406c22a0fbc61ca1256ed9", + "reference": "6f90e2d7f8e80a97a7406c22a0fbc61ca1256ed9", "shasum": "" }, "require": { @@ -4154,6 +4316,7 @@ "illuminate/validation": "^10.0|^11.0", "league/mime-type-detection": "^1.9", "php": "^8.1", + "symfony/console": "^6.0|^7.0", "symfony/http-kernel": "^6.2|^7.0" }, "require-dev": { @@ -4161,8 +4324,8 @@ "laravel/framework": "^10.0|^11.0", "laravel/prompts": "^0.1.6", "mockery/mockery": "^1.3.1", - "orchestra/testbench": "8.20.0|^9.0", - "orchestra/testbench-dusk": "8.20.0|^9.0", + "orchestra/testbench": "^8.21.0|^9.0", + "orchestra/testbench-dusk": "^8.24|^9.1", "phpunit/phpunit": "^10.4", "psy/psysh": "^0.11.22|^0.12" }, @@ -4198,7 +4361,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.4.9" + "source": "https://github.com/livewire/livewire/tree/v3.4.10" }, "funding": [ { @@ -4206,20 +4369,20 @@ "type": "github" } ], - "time": "2024-03-14T14:03:32+00:00" + "time": "2024-04-02T14:22:50+00:00" }, { "name": "masterminds/html5", - "version": "2.8.1", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", - "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", "shasum": "" }, "require": { @@ -4227,7 +4390,7 @@ "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" }, "type": "library", "extra": { @@ -4271,22 +4434,22 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" + "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" }, - "time": "2023-05-10T11:58:31+00:00" + "time": "2024-03-31T07:05:07+00:00" }, { "name": "monolog/monolog", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", "shasum": "" }, "require": { @@ -4309,7 +4472,7 @@ "phpstan/phpstan": "^1.9", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.1", + "phpunit/phpunit": "^10.5.17", "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", "symfony/mailer": "^5.4 || ^6", @@ -4362,7 +4525,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.5.0" + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" }, "funding": [ { @@ -4374,7 +4537,7 @@ "type": "tidelift" } ], - "time": "2023-10-27T15:32:31+00:00" + "time": "2024-04-12T21:02:21+00:00" }, { "name": "mtdowling/jmespath.php", @@ -4444,16 +4607,16 @@ }, { "name": "nesbot/carbon", - "version": "3.1.1", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "34ccf6f6b49c915421c7886c88c0cb77f3ebbfd2" + "reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/34ccf6f6b49c915421c7886c88c0cb77f3ebbfd2", - "reference": "34ccf6f6b49c915421c7886c88c0cb77f3ebbfd2", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/82c28278c1c8f7b82dcdab25692237f052ffc8d8", + "reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8", "shasum": "" }, "require": { @@ -4471,14 +4634,14 @@ "require-dev": { "doctrine/dbal": "^3.6.3 || ^4.0", "doctrine/orm": "^2.15.2 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.18.0", - "kylekatarnls/multi-tester": "^2.2.0", - "ondrejmirtes/better-reflection": "^6.11.0.0", - "phpmd/phpmd": "^2.13.0", - "phpstan/extension-installer": "^1.3.0", - "phpstan/phpstan": "^1.10.20", - "phpunit/phpunit": "^10.2.2", - "squizlabs/php_codesniffer": "^3.7.2" + "friendsofphp/php-cs-fixer": "^3.52.1", + "kylekatarnls/multi-tester": "^2.5.3", + "ondrejmirtes/better-reflection": "^6.25.0.4", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.10.65", + "phpunit/phpunit": "^10.5.15", + "squizlabs/php_codesniffer": "^3.9.0" }, "bin": [ "bin/carbon" @@ -4546,7 +4709,7 @@ "type": "tidelift" } ], - "time": "2024-03-13T12:42:37+00:00" + "time": "2024-04-05T09:58:10+00:00" }, { "name": "nette/schema", @@ -5879,16 +6042,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.2", + "version": "v0.12.3", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "9185c66c2165bbf4d71de78a69dccf4974f9538d" + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9185c66c2165bbf4d71de78a69dccf4974f9538d", - "reference": "9185c66c2165bbf4d71de78a69dccf4974f9538d", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", "shasum": "" }, "require": { @@ -5952,9 +6115,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.2" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.3" }, - "time": "2024-03-17T01:53:00+00:00" + "time": "2024-04-02T15:57:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -6845,16 +7008,16 @@ }, { "name": "symfony/console", - "version": "v7.0.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f" + "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6b099f3306f7c9c2d2786ed736d0026b2903205f", - "reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f", + "url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", "shasum": "" }, "require": { @@ -6918,7 +7081,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.4" + "source": "https://github.com/symfony/console/tree/v7.0.6" }, "funding": [ { @@ -6934,7 +7097,7 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:20+00:00" + "time": "2024-04-01T11:04:53+00:00" }, { "name": "symfony/css-selector", @@ -7070,16 +7233,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.0.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "677b24759decff69e65b1e9d1471d90f95ced880" + "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/677b24759decff69e65b1e9d1471d90f95ced880", - "reference": "677b24759decff69e65b1e9d1471d90f95ced880", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/46a4cc138f799886d4bd70477c55c699d3e9dfc8", + "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8", "shasum": "" }, "require": { @@ -7125,7 +7288,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.0.4" + "source": "https://github.com/symfony/error-handler/tree/v7.0.6" }, "funding": [ { @@ -7141,7 +7304,7 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:20+00:00" + "time": "2024-03-19T11:57:22+00:00" }, { "name": "symfony/event-dispatcher", @@ -7225,16 +7388,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "4e64b49bf370ade88e567de29465762e316e4224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", + "reference": "4e64b49bf370ade88e567de29465762e316e4224", "shasum": "" }, "require": { @@ -7281,7 +7444,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" }, "funding": [ { @@ -7297,7 +7460,7 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/finder", @@ -7434,16 +7597,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.0.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "439fdfdd344943254b1ef6278613e79040548045" + "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/439fdfdd344943254b1ef6278613e79040548045", - "reference": "439fdfdd344943254b1ef6278613e79040548045", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8789625dcf36e5fbf753014678a1e090f1bc759c", + "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c", "shasum": "" }, "require": { @@ -7491,7 +7654,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.0.4" + "source": "https://github.com/symfony/http-foundation/tree/v7.0.6" }, "funding": [ { @@ -7507,20 +7670,20 @@ "type": "tidelift" } ], - "time": "2024-02-08T19:22:56+00:00" + "time": "2024-03-19T11:46:48+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.0.5", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72" + "reference": "34c872391046d59af804af62d4573b829cfe4824" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72", - "reference": "37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/34c872391046d59af804af62d4573b829cfe4824", + "reference": "34c872391046d59af804af62d4573b829cfe4824", "shasum": "" }, "require": { @@ -7603,7 +7766,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.0.5" + "source": "https://github.com/symfony/http-kernel/tree/v7.0.6" }, "funding": [ { @@ -7619,20 +7782,20 @@ "type": "tidelift" } ], - "time": "2024-03-04T21:05:24+00:00" + "time": "2024-04-03T06:12:25+00:00" }, { "name": "symfony/mailer", - "version": "v7.0.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "72e16d87bf50a3ce195b9470c06bb9d7b816ea85" + "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/72e16d87bf50a3ce195b9470c06bb9d7b816ea85", - "reference": "72e16d87bf50a3ce195b9470c06bb9d7b816ea85", + "url": "https://api.github.com/repos/symfony/mailer/zipball/eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", + "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", "shasum": "" }, "require": { @@ -7683,7 +7846,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.0.4" + "source": "https://github.com/symfony/mailer/tree/v7.0.6" }, "funding": [ { @@ -7699,7 +7862,7 @@ "type": "tidelift" } ], - "time": "2024-02-03T21:34:19+00:00" + "time": "2024-03-28T09:20:36+00:00" }, { "name": "symfony/mailgun-mailer", @@ -7772,16 +7935,16 @@ }, { "name": "symfony/mime", - "version": "v7.0.3", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716" + "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716", - "reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716", + "url": "https://api.github.com/repos/symfony/mime/zipball/99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", + "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", "shasum": "" }, "require": { @@ -7801,6 +7964,7 @@ "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0" @@ -7835,7 +7999,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.0.3" + "source": "https://github.com/symfony/mime/tree/v7.0.6" }, "funding": [ { @@ -7851,7 +8015,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T08:34:29+00:00" + "time": "2024-03-21T19:37:36+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8697,16 +8861,16 @@ }, { "name": "symfony/routing", - "version": "v7.0.5", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19" + "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19", - "reference": "ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19", + "url": "https://api.github.com/repos/symfony/routing/zipball/cded64e5bbf9f31786f1055fcc76718fdd77519c", + "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c", "shasum": "" }, "require": { @@ -8758,7 +8922,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.0.5" + "source": "https://github.com/symfony/routing/tree/v7.0.6" }, "funding": [ { @@ -8774,20 +8938,20 @@ "type": "tidelift" } ], - "time": "2024-02-27T12:34:35+00:00" + "time": "2024-03-28T21:02:11+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", "shasum": "" }, "require": { @@ -8840,7 +9004,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" }, "funding": [ { @@ -8856,7 +9020,7 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2023-12-19T21:51:00+00:00" }, { "name": "symfony/string", @@ -9040,16 +9204,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "06450585bf65e978026bda220cdebca3f867fde7" + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", - "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", "shasum": "" }, "require": { @@ -9098,7 +9262,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.2" }, "funding": [ { @@ -9114,7 +9278,7 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/uid", @@ -9192,16 +9356,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.0.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "e03ad7c1535e623edbb94c22cc42353e488c6670" + "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e03ad7c1535e623edbb94c22cc42353e488c6670", - "reference": "e03ad7c1535e623edbb94c22cc42353e488c6670", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", + "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", "shasum": "" }, "require": { @@ -9255,7 +9419,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.0.4" + "source": "https://github.com/symfony/var-dumper/tree/v7.0.6" }, "funding": [ { @@ -9271,7 +9435,7 @@ "type": "tidelift" } ], - "time": "2024-02-15T11:33:06+00:00" + "time": "2024-03-19T11:57:22+00:00" }, { "name": "symfony/yaml", @@ -9557,16 +9721,16 @@ }, { "name": "webbingbrasil/filament-copyactions", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/webbingbrasil/filament-copyactions.git", - "reference": "363215d222de4127d81ea295c8a2163cd5c5a3f8" + "reference": "6a7bd63c1ce69632147f3ecf2c193f3465d8de43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webbingbrasil/filament-copyactions/zipball/363215d222de4127d81ea295c8a2163cd5c5a3f8", - "reference": "363215d222de4127d81ea295c8a2163cd5c5a3f8", + "url": "https://api.github.com/repos/webbingbrasil/filament-copyactions/zipball/6a7bd63c1ce69632147f3ecf2c193f3465d8de43", + "reference": "6a7bd63c1ce69632147f3ecf2c193f3465d8de43", "shasum": "" }, "require": { @@ -9605,9 +9769,9 @@ ], "support": { "issues": "https://github.com/webbingbrasil/filament-copyactions/issues", - "source": "https://github.com/webbingbrasil/filament-copyactions/tree/3.0.0" + "source": "https://github.com/webbingbrasil/filament-copyactions/tree/3.0.1" }, - "time": "2024-01-17T18:17:00+00:00" + "time": "2024-04-03T12:14:21+00:00" }, { "name": "webmozart/assert", @@ -10214,16 +10378,16 @@ }, { "name": "larastan/larastan", - "version": "v2.9.2", + "version": "v2.9.5", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "a79b46b96060504b400890674b83f66aa7f5db6d" + "reference": "101f1a4470f87326f4d3995411d28679d8800abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/a79b46b96060504b400890674b83f66aa7f5db6d", - "reference": "a79b46b96060504b400890674b83f66aa7f5db6d", + "url": "https://api.github.com/repos/larastan/larastan/zipball/101f1a4470f87326f4d3995411d28679d8800abe", + "reference": "101f1a4470f87326f4d3995411d28679d8800abe", "shasum": "" }, "require": { @@ -10236,15 +10400,15 @@ "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", "php": "^8.0.2", - "phpmyadmin/sql-parser": "^5.8.2", - "phpstan/phpstan": "^1.10.50" + "phpmyadmin/sql-parser": "^5.9.0", + "phpstan/phpstan": "^1.10.66" }, "require-dev": { "doctrine/coding-standard": "^12.0", - "nikic/php-parser": "^4.17.1", - "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.0", - "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.0", - "phpunit/phpunit": "^9.6.13 || ^10.5" + "nikic/php-parser": "^4.19.1", + "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.2", + "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.3", + "phpunit/phpunit": "^9.6.13 || ^10.5.16" }, "suggest": { "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" @@ -10292,7 +10456,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.9.2" + "source": "https://github.com/larastan/larastan/tree/v2.9.5" }, "funding": [ { @@ -10312,20 +10476,20 @@ "type": "patreon" } ], - "time": "2024-02-27T03:16:03+00:00" + "time": "2024-04-16T19:13:34+00:00" }, { "name": "laravel/pint", - "version": "v1.14.0", + "version": "v1.15.1", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e" + "reference": "5f288b5e79938cc72f5c298d384e639de87507c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e", - "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e", + "url": "https://api.github.com/repos/laravel/pint/zipball/5f288b5e79938cc72f5c298d384e639de87507c6", + "reference": "5f288b5e79938cc72f5c298d384e639de87507c6", "shasum": "" }, "require": { @@ -10336,13 +10500,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.49.0", - "illuminate/view": "^10.43.0", - "larastan/larastan": "^2.8.1", + "friendsofphp/php-cs-fixer": "^3.52.1", + "illuminate/view": "^10.48.4", + "larastan/larastan": "^2.9.2", "laravel-zero/framework": "^10.3.0", - "mockery/mockery": "^1.6.7", + "mockery/mockery": "^1.6.11", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.33.6" + "pestphp/pest": "^2.34.5" }, "bin": [ "builds/pint" @@ -10378,20 +10542,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-02-20T17:38:05+00:00" + "time": "2024-04-02T14:28:47+00:00" }, { "name": "laravel/sail", - "version": "v1.29.0", + "version": "v1.29.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "e40cc7ffb5186c45698dbd47e9477e0e429396d0" + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/e40cc7ffb5186c45698dbd47e9477e0e429396d0", - "reference": "e40cc7ffb5186c45698dbd47e9477e0e429396d0", + "url": "https://api.github.com/repos/laravel/sail/zipball/8be4a31150eab3b46af11a2e7b2c4632eefaad7e", + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e", "shasum": "" }, "require": { @@ -10399,6 +10563,7 @@ "illuminate/contracts": "^9.52.16|^10.0|^11.0", "illuminate/support": "^9.52.16|^10.0|^11.0", "php": "^8.0", + "symfony/console": "^6.0|^7.0", "symfony/yaml": "^6.0|^7.0" }, "require-dev": { @@ -10440,7 +10605,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2024-03-08T16:32:33+00:00" + "time": "2024-03-20T20:09:31+00:00" }, { "name": "mockery/mockery", @@ -11000,16 +11165,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.26.0", + "version": "1.28.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "231e3186624c03d7e7c890ec662b81e6b0405227" + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227", - "reference": "231e3186624c03d7e7c890ec662b81e6b0405227", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", "shasum": "" }, "require": { @@ -11041,22 +11206,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" }, - "time": "2024-02-23T16:05:55+00:00" + "time": "2024-04-03T18:51:33+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.63", + "version": "1.10.67", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "ad12836d9ca227301f5fb9960979574ed8628339" + "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ad12836d9ca227301f5fb9960979574ed8628339", - "reference": "ad12836d9ca227301f5fb9960979574ed8628339", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/16ddbe776f10da6a95ebd25de7c1dbed397dc493", + "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493", "shasum": "" }, "require": { @@ -11099,13 +11264,9 @@ { "url": "https://github.com/phpstan", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2024-03-18T16:53:53+00:00" + "time": "2024-04-16T07:22:02+00:00" }, { "name": "phpunit/php-code-coverage", @@ -11430,16 +11591,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.13", + "version": "10.5.19", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7" + "reference": "c726f0de022368f6ed103e452a765d3304a996a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/20a63fc1c6db29b15da3bd02d4b6cf59900088a7", - "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c726f0de022368f6ed103e452a765d3304a996a4", + "reference": "c726f0de022368f6ed103e452a765d3304a996a4", "shasum": "" }, "require": { @@ -11511,7 +11672,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.13" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.19" }, "funding": [ { @@ -11527,7 +11688,7 @@ "type": "tidelift" } ], - "time": "2024-03-12T15:37:41+00:00" + "time": "2024-04-17T14:06:18+00:00" }, { "name": "sebastian/cli-parser", @@ -11901,16 +12062,16 @@ }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { @@ -11925,7 +12086,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -11953,7 +12114,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -11961,7 +12122,7 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", @@ -12578,16 +12739,16 @@ }, { "name": "spatie/ignition", - "version": "1.12.0", + "version": "1.13.2", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d" + "reference": "952798e239d9969e4e694b124c2cc222798dbb28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/5b6f801c605a593106b623e45ca41496a6e7d56d", - "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d", + "url": "https://api.github.com/repos/spatie/ignition/zipball/952798e239d9969e4e694b124c2cc222798dbb28", + "reference": "952798e239d9969e4e694b124c2cc222798dbb28", "shasum": "" }, "require": { @@ -12657,20 +12818,20 @@ "type": "github" } ], - "time": "2024-01-03T15:49:39+00:00" + "time": "2024-04-16T08:49:17+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.4.2", + "version": "2.5.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e" + "reference": "c93fcadcc4629775c839ac9a90916f07a660266f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/351504f4570e32908839fc5a2dc53bf77d02f85e", - "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/c93fcadcc4629775c839ac9a90916f07a660266f", + "reference": "c93fcadcc4629775c839ac9a90916f07a660266f", "shasum": "" }, "require": { @@ -12680,7 +12841,7 @@ "illuminate/support": "^10.0|^11.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.9", + "spatie/ignition": "^1.13.2", "symfony/console": "^6.2.3|^7.0", "symfony/var-dumper": "^6.2.3|^7.0" }, @@ -12749,7 +12910,7 @@ "type": "github" } ], - "time": "2024-02-09T16:08:40+00:00" + "time": "2024-04-16T08:57:16+00:00" }, { "name": "theseer/tokenizer", @@ -12814,9 +12975,8 @@ "ext-mbstring": "*", "ext-pdo": "*", "ext-pdo_mysql": "*", - "ext-posix": "*", "ext-zip": "*" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/config/panel.php b/config/panel.php index b605675bb..a51028047 100644 --- a/config/panel.php +++ b/config/panel.php @@ -92,7 +92,7 @@ return [ 'cdn' => [ 'cache_time' => 60, - 'url' => 'https://cdn.example.com/releases/latest.json', + 'url' => 'https://cdn.pelican.dev/releases/latest.json', ], /* diff --git a/contributor_license_agreement.md b/contributor_license_agreement.md new file mode 100644 index 000000000..8594ea679 --- /dev/null +++ b/contributor_license_agreement.md @@ -0,0 +1,96 @@ +Thank you for your interest in Pelican ("Pelican Developers"). To clarify the intellectual property license +granted with Contributions from any person or entity, the Pelican Developers +must have on file a signed Contributor License Agreement ("CLA") +from each Contributor, indicating agreement with the license +terms below. This agreement is for your protection as a Contributor +as well as the protection of the Pelican Developers and its users. It does not +change your rights to use your own Contributions for any other purpose. + +You accept and agree to the following terms and conditions for Your +Contributions (present and future) that you submit to the Pelican Developers. In +return, the Pelican Developers shall not use Your Contributions in a way that +is contrary to the public benefit or inconsistent with its nonprofit +status and bylaws in effect at the time of the Contribution. Except +for the license granted herein to the Pelican Developers and recipients of +software distributed by the Pelican Developers, You reserve all right, title, +and interest in and to Your Contributions. +1. Definitions. + "You" (or "Your") shall mean the copyright owner or legal entity + authorized by the copyright owner that is making this Agreement + with the Pelican Developers. For legal entities, the entity making a + Contribution and all other entities that control, are controlled + by, or are under common control with that entity are considered to + be a single Contributor. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "Contribution" shall mean any original work of authorship, + including any modifications or additions to an existing work, that + is intentionally submitted by You to the Pelican Developers for inclusion + in, or documentation of, any of the products owned or managed by + the Pelican Developers (the "Work"). For the purposes of this definition, + "submitted" means any form of electronic, verbal, or written + communication sent to the Pelican Developers or its representatives, + including but not limited to communication on electronic mailing + lists, source code control systems, and issue tracking systems that + are managed by, or on behalf of, the Pelican Developers for the purpose of + discussing and improving the Work, but excluding communication that + is conspicuously marked or otherwise designated in writing by You + as "Not a Contribution." +2. Grant of Copyright License. Subject to the terms and conditions of + this Agreement, You hereby grant to the Pelican Developers and to + recipients of software distributed by the Pelican Developers a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare derivative works of, + publicly display, publicly perform, sublicense, and distribute Your + Contributions and such derivative works. +3. Grant of Patent License. Subject to the terms and conditions of + this Agreement, You hereby grant to the Pelican Developers and to + recipients of software distributed by the Pelican Developers a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have + made, use, offer to sell, sell, import, and otherwise transfer the + Work, where such license applies only to those patent claims + licensable by You that are necessarily infringed by Your + Contribution(s) alone or by combination of Your Contribution(s) + with the Work to which such Contribution(s) was submitted. If any + entity institutes patent litigation against You or any other entity + (including a cross-claim or counterclaim in a lawsuit) alleging + that your Contribution, or the Work to which you have contributed, + constitutes direct or contributory patent infringement, then any + patent licenses granted to that entity under this Agreement for + that Contribution or Work shall terminate as of the date such + litigation is filed. +4. You represent that you are legally entitled to grant the above + license. If your employer(s) has rights to intellectual property + that you create that includes your Contributions, you represent + that you have received permission to make Contributions on behalf + of that employer, that your employer has waived such rights for + your Contributions to the Pelican Developers, or that your employer has + executed a separate Corporate CLA with the Pelican Developers. +5. You represent that each of Your Contributions is Your original + creation (see section 7 for submissions on behalf of others). You + represent that Your Contribution submissions include complete + details of any third-party license or other restriction (including, + but not limited to, related patents and trademarks) of which you + are personally aware and which are associated with any part of Your + Contributions. +6. You are not expected to provide support for Your Contributions, + except to the extent You desire to provide support. You may provide + support for free, for a fee, or not at all. Unless required by + applicable law or agreed to in writing, You provide Your + Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + OF ANY KIND, either express or implied, including, without + limitation, any warranties or conditions of TITLE, NON- + INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. +7. Should You wish to submit work that is not Your original creation, + You may submit it to the Pelican Developers separately from any + Contribution, identifying the complete details of its source and of + any license or other restriction (including, but not limited to, + related patents, trademarks, and license agreements) of which you + are personally aware, and conspicuously marking the work as + "Submitted on behalf of a third-party: [named here]". +8. You agree to notify the Pelican Developers of any facts or circumstances of + which you become aware that would make these representations + inaccurate in any respect. diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 000000000..6f49cab9d --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,11 @@ +files: + - source: /lang/en/*.php + translation: /lang/%two_letters_code%/%original_file_name% + - source: /lang/en/admin + translation: /lang/%two_letters_code%/admin/%original_file_name% + - source: /lang/en/command + translation: /lang/%two_letters_code%/command/%original_file_name% + - source: /lang/en/dashboard + translation: /lang/%two_letters_code%/dashboard/%original_file_name% + - source: /lang/en/server + translation: /lang/%two_letters_code%/server/%original_file_name% diff --git a/database/migrations/2024_03_12_154408_remove_nests_table.php b/database/migrations/2024_03_12_154408_remove_nests_table.php index b363de80d..2d665d3e3 100644 --- a/database/migrations/2024_03_12_154408_remove_nests_table.php +++ b/database/migrations/2024_03_12_154408_remove_nests_table.php @@ -3,12 +3,30 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { + Schema::table('eggs', function (Blueprint $table) { + $table->text('tags'); + }); + + DB::table('eggs')->update(['tags' => '[]']); + + $eggsWithNests = DB::table('eggs') + ->select(['eggs.id', 'nests.name']) + ->join('nests', 'nests.id', '=', 'eggs.nest_id') + ->get(); + + foreach ($eggsWithNests as $egg) { + DB::table('eggs') + ->where('id', $egg->id) + ->update(['tags' => "[\"$egg->name\"]"]); + } + Schema::table('eggs', function (Blueprint $table) { $table->dropForeign('service_options_nest_id_foreign'); $table->dropColumn('nest_id'); @@ -26,6 +44,7 @@ return new class extends Migration }); } + // Not really reversible, but... public function down(): void { Schema::table('api_keys', function (Blueprint $table) { @@ -42,6 +61,7 @@ return new class extends Migration }); Schema::table('eggs', function (Blueprint $table) { + $table->dropColumn('tags'); $table->mediumInteger('nest_id')->unsigned(); $table->foreign(['nest_id'], 'service_options_nest_id_foreign'); }); diff --git a/database/migrations/2024_03_14_055537_remove_locations_table.php b/database/migrations/2024_03_14_055537_remove_locations_table.php index a6e74e8bb..7c72d7617 100644 --- a/database/migrations/2024_03_14_055537_remove_locations_table.php +++ b/database/migrations/2024_03_14_055537_remove_locations_table.php @@ -2,17 +2,33 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; return new class extends Migration { - /** - * Run the migrations. - */ public function up(): void { + Schema::table('nodes', function (Blueprint $table) { + $table->text('tags'); + }); + + DB::table('nodes')->update(['tags' => '[]']); + + $nodesWithLocations = DB::table('nodes') + ->select(['nodes.id', 'locations.short']) + ->join('locations', 'locations.id', '=', 'nodes.location_id') + ->get(); + + foreach ($nodesWithLocations as $node) { + DB::table('nodes') + ->where('id', $node->id) + ->update(['tags' => "[\"$node->short\"]"]); + } + Schema::table('nodes', function (Blueprint $table) { $table->dropForeign('nodes_location_id_foreign'); + $table->dropColumn('location_id'); }); Schema::drop('locations'); @@ -22,9 +38,7 @@ return new class extends Migration }); } - /** - * Reverse the migrations. - */ + // Not really reversible, but... public function down(): void { Schema::create('locations', function (Blueprint $table) { @@ -34,6 +48,11 @@ return new class extends Migration $table->timestamps(); }); + Schema::table('nodes', function (Blueprint $table) { + $table->unsignedInteger('location_id')->default(0); + $table->foreign('location_id')->references('id')->on('locations'); + }); + Schema::table('api_keys', function (Blueprint $table) { $table->unsignedTinyInteger('r_locations')->default(0); }); diff --git a/lang/af/activity.php b/lang/af/activity.php new file mode 100644 index 000000000..98d9f6f7e --- /dev/null +++ b/lang/af/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Kon nie aanmeld nie', + 'success' => 'Aangemeld', + 'password-reset' => 'Wagwoord herstel', + 'reset-password' => 'Versoek wagwoordterugstelling', + 'checkpoint' => 'Twee-faktor-stawing versoek', + 'recovery-token' => 'Gebruik twee-faktor-hersteltoken', + 'token' => 'Twee-faktor uitdaging opgelos', + 'ip-blocked' => 'Geblokkeerde versoek van ongelyste IP-adres vir :identifier', + 'sftp' => [ + 'fail' => 'Kon nie SFTP aanmeld nie', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'E-pos verander van :oud na :nuut', + 'password-changed' => 'Verander wagwoord', + ], + 'api-key' => [ + 'create' => 'Skep nuwe API-sleutel:identifiseerder', + 'delete' => 'Geskrap API-sleutel:identifiseerder', + ], + 'ssh-key' => [ + 'create' => 'SSH-sleutel :vingerafdruk by rekening gevoeg', + 'delete' => 'SSH-sleutel :vingerafdruk van rekening verwyder', + ], + 'two-factor' => [ + 'create' => 'Geaktiveerde twee-faktor-autagtiging', + 'delete' => 'Gedeaktiveerde twee-faktor-aut', + ], + ], + 'server' => [ + 'reinstall' => 'Herinstalleer bediener', + 'console' => [ + 'command' => '":opdrag" op die bediener uitgevoer', + ], + 'power' => [ + 'start' => 'Het die bediener begin', + 'stop' => 'Het die bediener gestop', + 'restart' => 'Het die bediener herbegin', + 'kill' => 'Het die bedienerproses doodgemaak', + ], + 'backup' => [ + 'download' => 'Het die :name rugsteun afgelaai', + 'delete' => 'Het die :name rugsteun uitgevee', + 'restore' => 'Het die :name-rugsteun herstel (geskrap lêers: :truncate)', + 'restore-complete' => 'Voltooide herstel van die :name rugsteun', + 'restore-failed' => 'Kon nie die herstel van die :name rugsteun voltooi nie', + 'start' => 'Het \'n nuwe rugsteun :name begin', + 'complete' => 'Het die :name-rugsteun as voltooi gemerk', + 'fail' => 'Het die :name-rugsteun as voltooi gemerk', + 'lock' => 'Het die :name rugsteun uitgevee', + 'unlock' => 'Het die :name rugsteun afgelaai', + ], + 'database' => [ + 'create' => 'Create new database file', + 'rotate-password' => 'Wagwoord geroteer vir databasis :naam', + 'delete' => 'Geskrap databasis :naam', + ], + 'file' => [ + 'compress_one' => 'Saamgeperste :directory:lêer', + 'compress_other' => 'Saamgeperste :count lêers in :directory', + 'read' => 'Het die inhoud van :file bekyk', + 'copy' => 'Het \'n kopie van :file geskep', + 'create-directory' => 'Geskep gids :gids:naam', + 'decompress' => 'Gedekomprimeerde :lêers in :directory', + 'delete_one' => 'Geskrap :gids:lêers.0', + 'delete_other' => 'Saamgeperste :count lêers in :directory', + 'download' => 'Afgelaai: lêer', + 'pull' => 'Het \'n afstandlêer afgelaai vanaf :url na :directory', + 'rename_one' => 'Hernoem :gids:lêers.0.van na :gids:lêers.0.na', + 'rename_other' => 'Hernoem :count lêers in :directory', + 'write' => 'Het nuwe inhoud na :file geskryf', + 'upload' => 'Het \'n lêeroplaai begin', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/af/admin/eggs.php b/lang/af/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/af/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/af/admin/node.php b/lang/af/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/af/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/af/admin/server.php b/lang/af/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/af/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/af/admin/user.php b/lang/af/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/af/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/af/auth.php b/lang/af/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/af/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/af/command/messages.php b/lang/af/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/af/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/af/dashboard/account.php b/lang/af/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/af/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/af/dashboard/index.php b/lang/af/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/af/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/af/exceptions.php b/lang/af/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/af/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/af/pagination.php b/lang/af/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/af/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/af/passwords.php b/lang/af/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/af/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/af/server/users.php b/lang/af/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/af/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/af/strings.php b/lang/af/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/af/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/af/validation.php b/lang/af/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/af/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/ar/activity.php b/lang/ar/activity.php new file mode 100644 index 000000000..5ab03716b --- /dev/null +++ b/lang/ar/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'فشل تسجيل الدخول', + 'success' => 'تم تسجيل الدخول', + 'password-reset' => 'تم إعادة تعيين كلمة المرور', + 'reset-password' => 'طلب إعادة تعيين كلمة المرور', + 'checkpoint' => 'طلب التحقق ذو العاملين', + 'recovery-token' => 'استخدم رمز الاسترداد ذو العاملين', + 'token' => 'تم حل تحدي ذو العاملين', + 'ip-blocked' => 'تم حظر الطلب من عنوان IP غير مدرج لـ :identifier', + 'sftp' => [ + 'fail' => 'فشل تسجيل الدخول عبر SFTP', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'تغيير البريد الإلكتروني من :old إلى :new', + 'password-changed' => 'تم تغيير كلمة المرور', + ], + 'api-key' => [ + 'create' => 'تم إنشاء مفتاح API جديد :identifier', + 'delete' => 'تم حذف مفتاح API :identifier', + ], + 'ssh-key' => [ + 'create' => 'تم إضافة مفتاح SSH :fingerprint إلى الحساب', + 'delete' => 'تم إزالة مفتاح SSH :fingerprint من الحساب', + ], + 'two-factor' => [ + 'create' => 'تم تفعيل التحقق ذو العاملين', + 'delete' => 'تم تعطيل التحقق ذو العاملين', + ], + ], + 'server' => [ + 'reinstall' => 'تم إعادة تثبيت الخادم', + 'console' => [ + 'command' => 'تنفيذ الأمر ":command" على الخادم', + ], + 'power' => [ + 'start' => 'تم تشغيل الخادم', + 'stop' => 'تم إيقاف الخادم', + 'restart' => 'تم إعادة تشغيل الخادم', + 'kill' => 'تم إنهاء عملية الخادم', + ], + 'backup' => [ + 'download' => 'تم تنزيل النسخة الاحتياطية :name', + 'delete' => 'تم حذف النسخة الاحتياطية :name', + 'restore' => 'تم استعادة النسخة الاحتياطية :name (تم حذف الملفات: :truncate)', + 'restore-complete' => 'تم إكمال استعادة النسخة الاحتياطية :name', + 'restore-failed' => 'فشل في إكمال استعادة النسخة الاحتياطية :name', + 'start' => 'تم بدء نسخة احتياطية جديدة :name', + 'complete' => 'تم وضع علامة على النسخة الاحتياطية :name كمكتملة', + 'fail' => 'تم وضع علامة على النسخة الاحتياطية :name كفاشلة', + 'lock' => 'تم قفل النسخة الاحتياطية :name', + 'unlock' => 'تم فتح قفل النسخة الاحتياطية :name', + ], + 'database' => [ + 'create' => 'تم إنشاء قاعدة بيانات جديدة :name', + 'rotate-password' => 'تم تغيير كلمة المرور لقاعدة البيانات :name', + 'delete' => 'تم حذف قاعدة البيانات :name', + ], + 'file' => [ + 'compress_one' => 'تم ضغط :directory:file', + 'compress_other' => 'تم ضغط :count ملف في :directory', + 'read' => 'تم عرض محتويات :file', + 'copy' => 'تم إنشاء نسخة من :file', + 'create-directory' => 'تم إنشاء الدليل :directory:name', + 'decompress' => 'تم فك ضغط :files في :directory', + 'delete_one' => 'تم حذف :directory:files.0', + 'delete_other' => 'تم حذف :count ملف في :directory', + 'download' => 'تم تنزيل :file', + 'pull' => 'تم تنزيل ملف من بعد من :url إلى :directory', + 'rename_one' => 'تم تغيير اسم :directory:files.0.from إلى :directory:files.0.to', + 'rename_other' => 'تم تغيير اسم :count ملف في :directory', + 'write' => 'تم كتابة محتوى جديد في :file', + 'upload' => 'بدء تحميل ملف', + 'uploaded' => 'تم رفع :directory:file', + ], + 'sftp' => [ + 'denied' => 'تم حظر الوصول عبر SFTP بسبب الأذونات', + 'create_one' => 'تم إنشاء :files.0', + 'create_other' => 'تم إنشاء :count ملف جديد', + 'write_one' => 'تم تعديل محتويات :files.0', + 'write_other' => 'تم تعديل محتويات :count ملف', + 'delete_one' => 'تم حذف :files.0', + 'delete_other' => 'تم حذف :count ملف', + 'create-directory_one' => 'تم إنشاء دليل :files.0', + 'create-directory_other' => 'تم إنشاء :count مجلد', + 'rename_one' => 'تم تغيير اسم :files.0.from إلى :files.0.to', + 'rename_other' => 'تم تغيير اسم أو نقل :count ملف', + ], + 'allocation' => [ + 'create' => 'تم إضافة :allocation إلى الخادم', + 'notes' => 'تم تحديث الملاحظات لـ :allocation من ":old" إلى ":new"', + 'primary' => 'تم تعيين :allocation كتخصيص أساسي للخادم', + 'delete' => 'تم حذف التخصيص :allocation', + ], + 'schedule' => [ + 'create' => 'تم إنشاء جدول :name', + 'update' => 'تم تحديث جدول :name', + 'execute' => 'تم تنفيذ جدول :name يدويًا', + 'delete' => 'تم حذف جدول :name', + ], + 'task' => [ + 'create' => 'تم إنشاء مهمة ":action" جديدة لجدول :name', + 'update' => 'تم تحديث مهمة ":action" لجدول :name', + 'delete' => 'تم حذف مهمة لجدول :name', + ], + 'settings' => [ + 'rename' => 'تم تغيير اسم الخادم من :old إلى :new', + 'description' => 'تم تغيير وصف الخادم من :old إلى :new', + ], + 'startup' => [ + 'edit' => 'تم تغيير متغير :variable من ":old" إلى ":new"', + 'image' => 'تم تحديث صورة Docker للخادم من :old إلى :new', + ], + 'subuser' => [ + 'create' => 'تم إضافة :email كمستخدم فرعي', + 'update' => 'تم تحديث أذونات المستخدم الفرعي لـ :email', + 'delete' => 'تم إزالة :email كمستخدم فرعي', + ], + ], +]; diff --git a/lang/ar/admin/eggs.php b/lang/ar/admin/eggs.php new file mode 100644 index 000000000..d981abfd3 --- /dev/null +++ b/lang/ar/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'تم استيراد هذا البيض والمتغيرات المرتبطة به بنجاح.', + 'updated_via_import' => 'تم تحديث هذا البيض باستخدام الملف المقدم.', + 'deleted' => 'تم حذف البيض المطلوب بنجاح من اللوحة.', + 'updated' => 'تم تحديث تكوين البيض بنجاح.', + 'script_updated' => 'تم تحديث سكريبت تثبيت البيض وسيتم تشغيله كلما تم تثبيت خوادم.', + 'egg_created' => 'تم وضع بيضة جديدة بنجاح. ستحتاج إلى إعادة تشغيل أي دايمونات جارية لتطبيق هذا البيض الجديد.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'تم حذف المتغير ":variable" ولن يكون متاحًا بعد الآن للخوادم بمجرد إعادة بنائها.', + 'variable_updated' => 'تم تحديث المتغير ":variable". ستحتاج إلى إعادة بناء أي خوادم تستخدم هذا المتغير لتطبيق التغييرات.', + 'variable_created' => 'تم إنشاء متغير جديد بنجاح وتعيينه لهذا البيض.', + ], + ], +]; diff --git a/lang/ar/admin/node.php b/lang/ar/admin/node.php new file mode 100644 index 000000000..34407364e --- /dev/null +++ b/lang/ar/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'النطاق (FQDN) أو عنوان IP المقدم لا يُحل إلى عنوان IP صالح.', + 'fqdn_required_for_ssl' => 'يتطلب اسم نطاق كامل يُحل إلى عنوان IP عام لاستخدام SSL لهذه العقدة.', + ], + 'notices' => [ + 'allocations_added' => 'تم إضافة التخصيصات بنجاح إلى هذه العقدة.', + 'node_deleted' => 'تم إزالة العقدة بنجاح من اللوحة.', + 'node_created' => 'تم إنشاء عقدة جديدة بنجاح. يمكنك تكوين الدايمون تلقائيًا على هذه الآلة بزيارة علامة التبويب "التكوين". قبل أن تتمكن من إضافة أي خوادم يجب عليك أولاً تخصيص عنوان IP واحد على الأقل ومنفذ.', + 'node_updated' => 'تم تحديث معلومات العقدة. إذا تم تغيير أي إعدادات دايمون ستحتاج إلى إعادة تشغيله لكي تصبح هذه التغييرات فعالة.', + 'unallocated_deleted' => 'تم حذف جميع المنافذ غير المخصصة لـ :ip.', + ], +]; diff --git a/lang/ar/admin/server.php b/lang/ar/admin/server.php new file mode 100644 index 000000000..bc33de87b --- /dev/null +++ b/lang/ar/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'أنت تحاول حذف التخصيص الافتراضي لهذا الخادم ولكن لا يوجد تخصيص بديل لاستخدامه.', + 'marked_as_failed' => 'تم تعليم هذا الخادم على أنه فشل في تثبيت سابق. لا يمكن تغيير الحالة الحالية في هذه الحالة.', + 'bad_variable' => 'كان هناك خطأ في التحقق من المتغير :name.', + 'daemon_exception' => 'حدث استثناء أثناء محاولة التواصل مع الدايمون مما أدى إلى رمز استجابة HTTP/:code. تم تسجيل هذا الاستثناء. (معرف الطلب: :request_id)', + 'default_allocation_not_found' => 'لم يتم العثور على التخصيص الافتراضي المطلوب في تخصيصات هذا الخادم.', + ], + 'alerts' => [ + 'startup_changed' => 'تم تحديث تكوين البدء لهذا الخادم. إذا تم تغيير بيضة هذا الخادم، فسيحدث إعادة تثبيت الآن.', + 'server_deleted' => 'تم حذف الخادم بنجاح من النظام.', + 'server_created' => 'تم إنشاء الخادم بنجاح على اللوحة. الرجاء السماح للدايمون ببضع دقائق لإكمال تثبيت هذا الخادم.', + 'build_updated' => 'تم تحديث تفاصيل بناء هذا الخادم. قد تتطلب بعض التغييرات إعادة التشغيل لتصبح فعالة.', + 'suspension_toggled' => 'تم تغيير حالة تعليق الخادم إلى :status.', + 'rebuild_on_boot' => 'تم تعليم هذا الخادم على أنه يتطلب إعادة بناء حاوية Docker. سيحدث هذا عند التشغيل التالي للخادم.', + 'install_toggled' => 'تم تغيير حالة التثبيت لهذا الخادم.', + 'server_reinstalled' => 'تم وضع هذا الخادم في قائمة الانتظار لإعادة التثبيت التي تبدأ الآن.', + 'details_updated' => 'تم تحديث تفاصيل الخادم بنجاح.', + 'docker_image_updated' => 'تم تغيير صورة Docker الافتراضية المستخدمة لهذا الخادم بنجاح. يلزم إعادة التشغيل لتطبيق هذا التغيير.', + 'node_required' => 'يجب أن يكون لديك عقدة واحدة على الأقل مكونة قبل أن تتمكن من إضافة خادم إلى هذه اللوحة.', + 'transfer_nodes_required' => 'يجب أن يكون لديك عقدتين على الأقل مكونتين قبل أن تتمكن من نقل الخوادم.', + 'transfer_started' => 'تم بدء نقل الخادم.', + 'transfer_not_viable' => 'العقدة التي اخترتها لا تملك مساحة القرص أو الذاكرة المطلوبة لاستيعاب هذا الخادم.', + ], +]; diff --git a/lang/ar/admin/user.php b/lang/ar/admin/user.php new file mode 100644 index 000000000..049d175f0 --- /dev/null +++ b/lang/ar/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'لا يمكن حذف مستخدم لديه خوادم نشطة مرتبطة بحسابه. يرجى حذف خوادمهم قبل المتابعة.', + 'user_is_self' => 'لا يمكنك حذف حساب المستخدم الخاص بك.', + ], + 'notices' => [ + 'account_created' => 'تم إنشاء الحساب بنجاح.', + 'account_updated' => 'تم تحديث الحساب بنجاح.', + ], +]; diff --git a/lang/ar/auth.php b/lang/ar/auth.php new file mode 100644 index 000000000..6418138f1 --- /dev/null +++ b/lang/ar/auth.php @@ -0,0 +1,27 @@ + 'تسجيل الدخول', + 'go_to_login' => 'الذهاب إلى صفحة الدخول', + 'failed' => 'لم يتم العثور على حساب يتطابق مع هذه البيانات.', + + 'forgot_password' => [ + 'label' => 'نسيت كلمة المرور؟', + 'label_help' => 'أدخل عنوان بريدك الإلكتروني لتتلقى تعليمات حول إعادة تعيين كلمة المرور.', + 'button' => 'استعادة الحساب', + ], + + 'reset_password' => [ + 'button' => 'إعادة تعيين وتسجيل الدخول', + ], + + 'two_factor' => [ + 'label' => 'رمز التحقق ذو العاملين', + 'label_help' => 'هذا الحساب يتطلب طبقة ثانية من التحقق للمتابعة. الرجاء إدخال الرمز المولد على جهازك لإكمال هذا التسجيل.', + 'checkpoint_failed' => 'رمز التحقق ذو العاملين كان غير صالح.', + ], + + 'throttle' => 'عدد محاولات تسجيل الدخول كثيرة جداً. يرجى المحاولة مجدداً بعد :seconds ثوانٍ.', + 'password_requirements' => 'يجب أن تكون كلمة المرور بطول 8 أحرف على الأقل وأن تكون فريدة لهذا الموقع.', + '2fa_must_be_enabled' => 'يتطلب المدير تفعيل التحقق ذو العاملين لحسابك لاستخدام اللوحة.', +]; diff --git a/lang/ar/command/messages.php b/lang/ar/command/messages.php new file mode 100644 index 000000000..6470d0292 --- /dev/null +++ b/lang/ar/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'أدخل اسم المستخدم، معرّف المستخدم، أو عنوان البريد الإلكتروني', + 'select_search_user' => 'معرّف المستخدم الذي سيتم حذفه (أدخل \'0\' لإعادة البحث)', + 'deleted' => 'تم حذف المستخدم بنجاح من اللوحة.', + 'confirm_delete' => 'هل أنت متأكد من أنك تريد حذف هذا المستخدم من اللوحة؟', + 'no_users_found' => 'لم يتم العثور على مستخدمين لمصطلح البحث المقدم.', + 'multiple_found' => 'تم العثور على عدة حسابات للمستخدم المقدم، لا يمكن حذف المستخدم بسبب علامة --no-interaction.', + 'ask_admin' => 'هل هذا المستخدم مدير؟', + 'ask_email' => 'عنوان البريد الإلكتروني', + 'ask_username' => 'اسم المستخدم', + 'ask_name_first' => 'الاسم الأول', + 'ask_name_last' => 'الاسم الأخير', + 'ask_password' => 'كلمة المرور', + 'ask_password_tip' => 'إذا كنت ترغب في إنشاء حساب بكلمة مرور عشوائية يتم إرسالها بالبريد الإلكتروني للمستخدم، أعد تشغيل هذا الأمر (CTRL+C) ومرر علامة `--no-password`.', + 'ask_password_help' => 'يجب أن تكون كلمات المرور بطول 8 أحرف على الأقل وتحتوي على حرف كبير ورقم على الأقل.', + '2fa_help_text' => [ + 'هذا الأمر سيعطل التوثيق الثنائي لحساب المستخدم إذا كان مفعلاً. يجب استخدام هذا فقط كأمر استرداد حساب إذا كان المستخدم محظورًا من حسابه.', + 'إذا لم يكن هذا ما تريد القيام به، اضغط CTRL+C للخروج من هذه العملية.', + ], + '2fa_disabled' => 'تم تعطيل التوثيق الثنائي لـ :email.', + ], + 'schedule' => [ + 'output_line' => 'جاري إرسال العمل للمهمة الأولى في `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'جاري حذف ملف النسخ الاحتياطي للخدمة :file.', + ], + 'server' => [ + 'rebuild_failed' => 'فشل طلب إعادة بناء ":name" (#:id) على العقدة ":node" مع الخطأ: :message', + 'reinstall' => [ + 'failed' => 'فشل طلب إعادة تثبيت ":name" (#:id) على العقدة ":node" مع الخطأ: :message', + 'confirm' => 'أنت على وشك إعادة تثبيت مجموعة من الخوادم. هل ترغب في المتابعة؟', + ], + 'power' => [ + 'confirm' => 'أنت على وشك تنفيذ :action ضد :count خوادم. هل ترغب في المتابعة؟', + 'action_failed' => 'فشل طلب تنفيذ الطاقة لـ ":name" (#:id) على العقدة ":node" مع الخطأ: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'مضيف SMTP (مثل smtp.gmail.com)', + 'ask_smtp_port' => 'منفذ SMTP', + 'ask_smtp_username' => 'اسم مستخدم SMTP', + 'ask_smtp_password' => 'كلمة مرور SMTP', + 'ask_mailgun_domain' => 'نطاق Mailgun', + 'ask_mailgun_endpoint' => 'نقطة نهاية Mailgun', + 'ask_mailgun_secret' => 'سر Mailgun', + 'ask_mandrill_secret' => 'سر Mandrill', + 'ask_postmark_username' => 'مفتاح API Postmark', + 'ask_driver' => 'أي برنامج يجب استخدامه لإرسال الرسائل البريدية؟', + 'ask_mail_from' => 'عنوان البريد الإلكتروني الذي يجب أن تنشأ منه الرسائل', + 'ask_mail_name' => 'الاسم الذي يجب أن تظهر منه الرسائل', + 'ask_encryption' => 'طريقة التشفير المستخدمة', + ], + ], +]; diff --git a/lang/ar/dashboard/account.php b/lang/ar/dashboard/account.php new file mode 100644 index 000000000..377447765 --- /dev/null +++ b/lang/ar/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'تحديث بريدك الإلكتروني', + 'updated' => 'تم تحديث عنوان بريدك الإلكتروني.', + ], + 'password' => [ + 'title' => 'تغيير كلمة مرورك', + 'requirements' => 'يجب أن تكون كلمة المرور الجديدة مكونة من 8 أحرف على الأقل.', + 'updated' => 'تم تحديث كلمة المرور الخاصة بك.', + ], + 'two_factor' => [ + 'button' => 'إعداد التوثيق الثنائي', + 'disabled' => 'تم تعطيل التوثيق الثنائي في حسابك. لن يُطلب منك تقديم رمز عند تسجيل الدخول.', + 'enabled' => 'تم تفعيل التوثيق الثنائي في حسابك! من الآن فصاعدًا، عند تسجيل الدخول، سيُطلب منك تقديم الرمز الذي يُنتجه جهازك.', + 'invalid' => 'الرمز المقدم غير صالح.', + 'setup' => [ + 'title' => 'إعداد التوثيق الثنائي', + 'help' => 'لا يمكن مسح الرمز؟ أدخل الرمز أدناه في تطبيقك:', + 'field' => 'أدخل الرمز', + ], + 'disable' => [ + 'title' => 'تعطيل التوثيق الثنائي', + 'field' => 'أدخل الرمز', + ], + ], +]; diff --git a/lang/ar/dashboard/index.php b/lang/ar/dashboard/index.php new file mode 100644 index 000000000..a8146630a --- /dev/null +++ b/lang/ar/dashboard/index.php @@ -0,0 +1,8 @@ + 'ابحث عن الخوادم...', + 'no_matches' => 'لم يتم العثور على خوادم تطابق معايير البحث المقدمة.', + 'cpu_title' => 'المعالج', + 'memory_title' => 'الذاكرة', +]; diff --git a/lang/ar/exceptions.php b/lang/ar/exceptions.php new file mode 100644 index 000000000..4de9d56aa --- /dev/null +++ b/lang/ar/exceptions.php @@ -0,0 +1,55 @@ + 'حدث استثناء أثناء محاولة التواصل مع الدايمون مما أدى إلى رمز استجابة HTTP/:code. تم تسجيل هذا الاستثناء.', + 'node' => [ + 'servers_attached' => 'يجب ألا يكون هناك أي خوادم مرتبطة بالعقدة لكي يتم حذفها.', + 'daemon_off_config_updated' => 'تم تحديث تكوين الدايمون لكن، واجهت مشكلة أثناء محاولة تحديث ملف التكوين تلقائيًا على الدايمون. ستحتاج إلى تحديث ملف التكوين (config.yml) يدويًا لتطبيق هذه التغييرات.', + ], + 'allocations' => [ + 'server_using' => 'تم تعيين خادم حاليًا لهذا التخصيص. لا يمكن حذف التخصيص إلا إذا لم يكن هناك خادم معين حاليًا.', + 'too_many_ports' => 'لا يتم دعم إضافة أكثر من 1000 منفذ في نطاق واحد دفعة واحدة.', + 'invalid_mapping' => 'التعيين المقدم للمنفذ :port كان غير صالح ولا يمكن معالجته.', + 'cidr_out_of_range' => 'تسمح ترميزات CIDR فقط بالأقنعة بين /25 و /32.', + 'port_out_of_range' => 'يجب أن تكون المنافذ في التخصيص أكبر من 1024 وأقل من أو يساوي 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'لا يمكن حذف بيضة تحتوي على خوادم نشطة مرتبطة بها من اللوحة.', + 'invalid_copy_id' => 'البيضة المختارة لنسخ سكربت منها إما أنها غير موجودة، أو أنها تقوم بنسخ سكربت نفسها.', + 'has_children' => 'هذه البيضة هي الوالد لواحدة أو أكثر من البيض الأخرى. يرجى حذف تلك البيض قبل حذف هذه البيضة.', + ], + 'variables' => [ + 'env_not_unique' => 'يجب أن تكون المتغيرات البيئية :name فريدة لهذه البيضة.', + 'reserved_name' => 'المتغير البيئي :name محمي ولا يمكن تخصيصه لمتغير.', + 'bad_validation_rule' => 'قاعدة التحقق ":rule" ليست صالحة لهذا التطبيق.', + ], + 'importer' => [ + 'json_error' => 'حدث خطأ أثناء محاولة تحليل ملف JSON: :error.', + 'file_error' => 'ملف JSON المقدم لم يكن صالحًا.', + 'invalid_json_provided' => 'الملف JSON المقدم ليس بتنسيق يمكن التعرف عليه.', + ], + 'subusers' => [ + 'editing_self' => 'لا يُسمح بتعديل حساب المستخدم الفرعي الخاص بك.', + 'user_is_owner' => 'لا يمكنك إضافة مالك الخادم كمستخدم فرعي لهذا الخادم.', + 'subuser_exists' => 'المستخدم ذو البريد الإلكتروني هذا مُعين بالفعل كمستخدم فرعي لهذا الخادم.', + ], + 'databases' => [ + 'delete_has_databases' => 'لا يمكن حذف مضيف قاعدة البيانات الذي يحتوي على قواعد بيانات نشطة مرتبطة به.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'أقصى فترة زمنية لمهمة متسلسلة هي 15 دقيقة.', + ], + 'locations' => [ + 'has_nodes' => 'لا يمكن حذف موقع يحتوي على عقد نشطة مرتبطة به.', + ], + 'users' => [ + 'node_revocation_failed' => 'فشل في إلغاء المفاتيح على العقدة #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'لم يتم العثور على عقد تلبي المتطلبات المحددة للنشر التلقائي.', + 'no_viable_allocations' => 'لم يتم العثور على تخصيصات تلبي المتطلبات للنشر التلقائي.', + ], + 'api' => [ + 'resource_not_found' => 'المورد المطلوب غير موجود على هذا الخادم.', + ], +]; diff --git a/lang/ar/pagination.php b/lang/ar/pagination.php new file mode 100644 index 000000000..2e204a684 --- /dev/null +++ b/lang/ar/pagination.php @@ -0,0 +1,17 @@ + '« السابق', + 'next' => 'التالي »', +]; diff --git a/lang/ar/passwords.php b/lang/ar/passwords.php new file mode 100644 index 000000000..2559979d6 --- /dev/null +++ b/lang/ar/passwords.php @@ -0,0 +1,19 @@ + 'يجب أن تكون كلمات المرور ستة أحرف على الأقل وأن تتطابق مع التأكيد.', + 'reset' => 'تم إعادة تعيين كلمة مرورك!', + 'sent' => 'لقد أرسلنا رابط إعادة تعيين كلمة المرور إلى بريدك الإلكتروني!', + 'token' => 'رمز إعادة تعيين كلمة المرور هذا غير صالح.', + 'user' => 'لا يمكننا العثور على مستخدم بهذا العنوان البريدي الإلكتروني.', +]; diff --git a/lang/ar/server/users.php b/lang/ar/server/users.php new file mode 100644 index 000000000..7f1d02db7 --- /dev/null +++ b/lang/ar/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'يتيح الوصول إلى الويب سوكيت لهذا الخادم.', + 'control_console' => 'يسمح للمستخدم بإرسال بيانات إلى وحدة تحكم الخادم.', + 'control_start' => 'يسمح للمستخدم بتشغيل نموذج الخادم.', + 'control_stop' => 'يسمح للمستخدم بإيقاف نموذج الخادم.', + 'control_restart' => 'يسمح للمستخدم بإعادة تشغيل نموذج الخادم.', + 'control_kill' => 'يسمح للمستخدم بإنهاء نموذج الخادم.', + 'user_create' => 'يسمح للمستخدم بإنشاء حسابات مستخدمين جديدة للخادم.', + 'user_read' => 'يمنح المستخدم إذنًا لعرض المستخدمين المرتبطين بهذا الخادم.', + 'user_update' => 'يسمح للمستخدم بتعديل المستخدمين الآخرين المرتبطين بهذا الخادم.', + 'user_delete' => 'يسمح للمستخدم بحذف المستخدمين الآخرين المرتبطين بهذا الخادم.', + 'file_create' => 'يمنح المستخدم إذنًا بإنشاء ملفات ودلائل جديدة.', + 'file_read' => 'يسمح للمستخدم برؤية الملفات والمجلدات المرتبطة بهذا نموذج الخادم، بالإضافة إلى عرض محتوياتها.', + 'file_update' => 'يسمح للمستخدم بتحديث الملفات والمجلدات المرتبطة بالخادم.', + 'file_delete' => 'يسمح للمستخدم بحذف الملفات والدلائل.', + 'file_archive' => 'يسمح للمستخدم بإنشاء أرشيفات الملفات وفك ضغط الأرشيفات الموجودة.', + 'file_sftp' => 'يسمح للمستخدم بتنفيذ الإجراءات المذكورة أعلاه للملفات باستخدام عميل SFTP.', + 'allocation_read' => 'يتيح الوصول إلى صفحات إدارة تخصيص الخادم.', + 'allocation_update' => 'يمنح المستخدم إذنًا بإجراء تعديلات على تخصيصات الخادم.', + 'database_create' => 'يمنح المستخدم إذنًا لإنشاء قاعدة بيانات جديدة للخادم.', + 'database_read' => 'يمنح المستخدم إذنًا لعرض قواعد البيانات الخاصة بالخادم.', + 'database_update' => 'يمنح المستخدم إذنًا لإجراء تعديلات على قاعدة بيانات. إذا لم يمتلك المستخدم إذن "عرض كلمة المرور" أيضًا، فلن يتمكن من تعديل كلمة المرور.', + 'database_delete' => 'يمنح المستخدم إذنًا بحذف نموذج قاعدة البيانات.', + 'database_view_password' => 'يمنح المستخدم إذنًا لعرض كلمة مرور قاعدة البيانات في النظام.', + 'schedule_create' => 'يسمح للمستخدم بإنشاء جدول زمني جديد للخادم.', + 'schedule_read' => 'يمنح المستخدم إذنًا لعرض جداول الخادم.', + 'schedule_update' => 'يمنح المستخدم إذنًا لإجراء تعديلات على جدول الخادم الحالي.', + 'schedule_delete' => 'يسمح للمستخدم بحذف جدول الخادم.', + ], +]; diff --git a/lang/ar/strings.php b/lang/ar/strings.php new file mode 100644 index 000000000..012be9f06 --- /dev/null +++ b/lang/ar/strings.php @@ -0,0 +1,95 @@ + 'البريد الإلكتروني', + 'email_address' => 'عنوان البريد الإلكتروني', + 'user_identifier' => 'اسم المستخدم أو البريد الإلكتروني', + 'password' => 'كلمة المرور', + 'new_password' => 'كلمة المرور الجديدة', + 'confirm_password' => 'تأكيد كلمة المرور الجديدة', + 'login' => 'تسجيل الدخول', + 'home' => 'الرئيسية', + 'servers' => 'الخوادم', + 'id' => 'الهوية', + 'name' => 'الاسم', + 'node' => 'العقدة', + 'connection' => 'الاتصال', + 'memory' => 'الذاكرة', + 'cpu' => 'المعالج', + 'disk' => 'القرص', + 'status' => 'الحالة', + 'search' => 'بحث', + 'suspended' => 'معلق', + 'account' => 'الحساب', + 'security' => 'الأمان', + 'ip' => 'عنوان IP', + 'last_activity' => 'آخر نشاط', + 'revoke' => 'سحب', + '2fa_token' => 'رمز التوثيق', + 'submit' => 'إرسال', + 'close' => 'إغلاق', + 'settings' => 'الإعدادات', + 'configuration' => 'التكوين', + 'sftp' => 'اتصال FTP محمى', + 'databases' => 'قواعد البيانات', + 'memo' => 'مذكرة', + 'created' => 'تم إنشاؤه', + 'expires' => 'تنتهي', + 'public_key' => 'مفتاح عام', + 'api_access' => 'وصول API', + 'never' => 'أبداً', + 'sign_out' => 'تسجيل الخروج', + 'admin_control' => 'التحكم الإداري', + 'required' => 'مطلوب', + 'port' => 'المنفذ', + 'username' => 'اسم المستخدم', + 'database' => 'قاعدة البيانات', + 'new' => 'جديد', + 'danger' => 'خطر', + 'create' => 'إنشاء', + 'select_all' => 'تحديد الكل', + 'select_none' => 'إلغاء تحديد الكل', + 'alias' => 'الاسم المستعار', + 'primary' => 'أساسي', + 'make_primary' => 'جعله أساسي', + 'none' => 'لا شيء', + 'cancel' => 'إلغاء', + 'created_at' => 'أُنشئ في', + 'action' => 'عمل', + 'data' => 'بيانات', + 'queued' => 'في قائمة الانتظار', + 'last_run' => 'آخر تشغيل', + 'next_run' => 'التشغيل التالي', + 'not_run_yet' => 'لم يتم التشغيل بعد', + 'yes' => 'نعم', + 'no' => 'لا', + 'delete' => 'حذف', + '2fa' => 'المصادقة الثنائية', + 'logout' => 'تسجيل الخروج', + 'admin_cp' => 'لوحة التحكم الإدارية', + 'optional' => 'اختياري', + 'read_only' => 'للقراءة فقط', + 'relation' => 'علاقة', + 'owner' => 'المالك', + 'admin' => 'المدير', + 'subuser' => 'المستخدم الفرعي', + 'captcha_invalid' => 'الكابتشا المقدمة غير صالحة.', + 'tasks' => 'المهام', + 'seconds' => 'ثواني', + 'minutes' => 'دقائق', + 'under_maintenance' => 'تحت الصيانة', + 'days' => [ + 'sun' => 'الأحد', + 'mon' => 'الاثنين', + 'tues' => 'الثلاثاء', + 'wed' => 'الأربعاء', + 'thurs' => 'الخميس', + 'fri' => 'الجمعة', + 'sat' => 'السبت', + ], + 'last_used' => 'آخر استخدام', + 'enable' => 'تمكين', + 'disable' => 'تعطيل', + 'save' => 'حفظ', + 'copyright' => '® 2024 - بيليكان سنة', +]; diff --git a/lang/ar/validation.php b/lang/ar/validation.php new file mode 100644 index 000000000..cac14f871 --- /dev/null +++ b/lang/ar/validation.php @@ -0,0 +1,106 @@ + 'يجب قبول :attribute.', + 'active_url' => ':attribute ليس عنوان URL صالحًا.', + 'after' => 'يجب أن يكون :attribute تاريخًا بعد :date.', + 'after_or_equal' => 'يجب أن يكون :attribute تاريخًا لاحقًا أو مساويًا لتاريخ :date.', + 'alpha' => 'يجب أن يحتوي :attribute على حروف فقط.', + 'alpha_dash' => 'يجب أن يحتوي :attribute على حروف، أرقام، وشرطات.', + 'alpha_num' => 'يجب أن يحتوي :attribute على حروف وأرقام فقط.', + 'array' => 'يجب أن يكون :attribute مصفوفة.', + 'before' => 'يجب أن يكون :attribute تاريخًا قبل :date.', + 'before_or_equal' => 'يجب أن يكون :attribute تاريخًا قبل أو يساوي :date.', + 'between' => [ + 'numeric' => 'يجب أن يكون :attribute بين :min و :max.', + 'file' => 'يجب أن يكون حجم :attribute بين :min و :max كيلوبايت.', + 'string' => 'يجب أن يكون طول :attribute بين :min و :max حرفًا.', + 'array' => 'يجب أن يحتوي :attribute على :min إلى :max عناصر.', + ], + 'boolean' => 'يجب أن يكون :attribute صحيحًا أو خاطئًا.', + 'confirmed' => 'تأكيد :attribute غير متطابق.', + 'date' => ':attribute ليس تاريخًا صالحًا.', + 'date_format' => ':attribute لا يتطابق مع الشكل :format.', + 'different' => 'يجب أن يكون :attribute و :other مختلفين.', + 'digits' => 'يجب أن يكون :attribute :digits أرقام.', + 'digits_between' => 'يجب أن يكون :attribute بين :min و :max رقمًا.', + 'dimensions' => ':attribute يحتوي على أبعاد صورة غير صالحة.', + 'distinct' => 'الحقل :attribute يحتوي على قيمة مكررة.', + 'email' => 'يجب أن يكون :attribute عنوان بريد إلكتروني صالحًا.', + 'exists' => 'ال:attribute المحدد غير صالح.', + 'file' => 'يجب أن يكون :attribute ملفًا.', + 'filled' => 'حقل :attribute إلزامي.', + 'image' => 'يجب أن يكون :attribute صورة.', + 'in' => ':attribute المحدد غير صالح.', + 'in_array' => 'حقل :attribute غير موجود في :other.', + 'integer' => 'يجب أن يكون :attribute عددًا صحيحًا.', + 'ip' => 'يجب أن يكون :attribute عنوان IP صالحًا.', + 'json' => 'يجب أن يكون :attribute نصًا من نوع JSON صالحًا.', + 'max' => [ + 'numeric' => 'قد لا يكون :attribute أكبر من :max.', + 'file' => 'قد لا يكون حجم :attribute أكبر من :max كيلوبايت.', + 'string' => 'قد لا يكون طول :attribute أكثر من :max حرفًا.', + 'array' => 'قد لا يحتوي :attribute على أكثر من :max عناصر.', + ], + 'mimes' => 'يجب أن يكون :attribute ملفًا من نوع: :values.', + 'mimetypes' => 'يجب أن يكون :attribute ملفًا من نوع: :values.', + 'min' => [ + 'numeric' => 'يجب أن يكون :attribute على الأقل :min.', + 'file' => 'يجب أن يكون حجم :attribute على الأقل :min كيلوبايت.', + 'string' => 'يجب أن يكون طول :attribute على الأقل :min حرفًا.', + 'array' => 'يجب أن يحتوي :attribute على الأقل :min عناصر.', + ], + 'not_in' => ':attribute المحدد غير صالح.', + 'numeric' => 'يجب أن يكون :attribute رقمًا.', + 'present' => 'يجب تقديم حقل :attribute.', + 'regex' => 'تنسيق :attribute غير صالح.', + 'required' => 'حقل :attribute مطلوب.', + 'required_if' => 'حقل :attribute مطلوب عندما يكون :other هو :value.', + 'required_unless' => 'حقل :attribute مطلوب ما لم يكن :other في :values.', + 'required_with' => 'حقل :attribute مطلوب عند توفر :values.', + 'required_with_all' => 'حقل :attribute مطلوب عند توفر كل من :values.', + 'required_without' => 'حقل :attribute مطلوب عند عدم توفر :values.', + 'required_without_all' => 'حقل :attribute مطلوب عند عدم توفر أي من :values.', + 'same' => 'يجب أن يتطابق :attribute و :other.', + 'size' => [ + 'numeric' => 'يجب أن يكون :attribute :size.', + 'file' => 'يجب أن يكون حجم :attribute :size كيلوبايت.', + 'string' => 'يجب أن يكون طول :attribute :size حرفًا.', + 'array' => 'يجب أن يحتوي :attribute على :size عناصر.', + ], + 'string' => 'يجب أن يكون :attribute نصًا.', + 'timezone' => 'يجب أن تكون :attribute منطقة زمنية صالحة.', + 'unique' => 'تم أخذ :attribute بالفعل.', + 'uploaded' => 'فشل في تحميل :attribute.', + 'url' => 'تنسيق :attribute غير صالح.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => 'متغير :env', + 'invalid_password' => 'كلمة المرور التي تم تقديمها غير صالحة لهذا الحساب.', + ], +]; diff --git a/lang/ca/activity.php b/lang/ca/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/ca/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/ca/admin/eggs.php b/lang/ca/admin/eggs.php new file mode 100644 index 000000000..d36d1f701 --- /dev/null +++ b/lang/ca/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'S\'ha importat amb èxit aquest Egg i les seves variables associades.', + 'updated_via_import' => 'Aquest Egg s\'ha actualitzat utilitzant el fitxer proporcionat.', + 'deleted' => 'S\'ha eliminat amb èxit l\'egg sol·licitat del Panell.', + 'updated' => 'La configuració de l\'Egg s\'ha actualitzat correctament.', + 'script_updated' => 'El script d\'instal·lació de l\'Egg s\'ha actualitzat i s\'executarà sempre que s\'instal·lin els servidors.', + 'egg_created' => 'S\'ha posat amb èxit un nou egg. Necessitarà reiniciar qualsevol daemon en execució per aplicar aquest nou egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'La variable ":variable" s\'ha eliminat i ja no estarà disponible per als servidors una vegada es reconstrueixin.', + 'variable_updated' => 'S\'ha actualitzat la variable ":variable". Hauràs de reconstruir qualsevol servidor que utilitzi aquesta variable per aplicar els canvis.', + 'variable_created' => 'S\'ha creat amb èxit una nova variable i s\'ha assignat a aquest egg.', + ], + ], +]; diff --git a/lang/ca/admin/node.php b/lang/ca/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/ca/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/ca/admin/server.php b/lang/ca/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/ca/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/ca/admin/user.php b/lang/ca/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/ca/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/ca/auth.php b/lang/ca/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/ca/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/ca/command/messages.php b/lang/ca/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/ca/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/ca/dashboard/account.php b/lang/ca/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/ca/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/ca/dashboard/index.php b/lang/ca/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/ca/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/ca/exceptions.php b/lang/ca/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/ca/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/ca/pagination.php b/lang/ca/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/ca/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/ca/passwords.php b/lang/ca/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/ca/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/ca/server/users.php b/lang/ca/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/ca/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/ca/strings.php b/lang/ca/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/ca/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/ca/validation.php b/lang/ca/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/ca/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/cs/activity.php b/lang/cs/activity.php new file mode 100644 index 000000000..912f50721 --- /dev/null +++ b/lang/cs/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Přihlášení se nezdařilo', + 'success' => 'Přihlášen', + 'password-reset' => 'Obnovit heslo', + 'reset-password' => 'Požádáno o změnu hesla', + 'checkpoint' => 'Požadováno dvoufaktorové ověření', + 'recovery-token' => 'Použitý dvoufázový obnovovací token', + 'token' => 'Vyřešená dvoufázová výzva', + 'ip-blocked' => 'Blokovaný požadavek z neuvedené IP adresy pro :identifier', + 'sftp' => [ + 'fail' => 'Selhalo přihlášení k SFTP', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Změněn e-mail z :old na :new', + 'password-changed' => 'Změněno heslo', + ], + 'api-key' => [ + 'create' => 'Vytvořen nový API klíč :identifier', + 'delete' => 'Odstraněný API klíč :identifier', + ], + 'ssh-key' => [ + 'create' => 'Přidán SSH klíč :fingerprint k účtu', + 'delete' => 'Odstraněný SSH klíč :fingerprint z účtu', + ], + 'two-factor' => [ + 'create' => 'Povolené doufázové ověření', + 'delete' => 'Vypnuté dvoufázové ověření', + ], + ], + 'server' => [ + 'reinstall' => 'Přeinstalovaný server', + 'console' => [ + 'command' => 'Proveden příkaz „:command“ na serveru', + ], + 'power' => [ + 'start' => 'Server byl spuštěn', + 'stop' => 'Server byl vypnut', + 'restart' => 'Server byl restartován', + 'kill' => 'Ukončen proces serveru', + ], + 'backup' => [ + 'download' => 'Záloha :name stažena', + 'delete' => 'Záloha :name smazána', + 'restore' => 'Obnovena záloha :name (smazané soubory: :truncate)', + 'restore-complete' => 'Dokončená obnova zálohy :name', + 'restore-failed' => 'Nepodařilo se dokončit obnovení zálohy :name', + 'start' => 'Zahájeno zálohování :name', + 'complete' => 'Označit zálohu :name jako dokončená', + 'fail' => 'Záloha :name označena jako neúspěšná', + 'lock' => 'Záloha :name uzamčena', + 'unlock' => 'Záloha :name odemčena', + ], + 'database' => [ + 'create' => 'Vytvořena nová databáze :name', + 'rotate-password' => 'Heslo pro databázi :name změněno', + 'delete' => 'Smazána databáze :name', + ], + 'file' => [ + 'compress_one' => 'Komprimováno :directory:file', + 'compress_other' => 'Komprimováno :count souborů v :directory', + 'read' => 'Zobrazen obsah :file', + 'copy' => 'Vytvořena kopie :file', + 'create-directory' => 'Vytvořen adresář :directory:name', + 'decompress' => 'Dekomprimováno :files souborů v :directory', + 'delete_one' => 'Smazáno :directory:files.0', + 'delete_other' => ':count souborů v :directory bylo smazáno', + 'download' => 'Staženo :file', + 'pull' => 'Stažen vzdálený soubor z :url do :directory', + 'rename_one' => 'Přejmenováno :directory:files.0.from na :directory:files.0.to', + 'rename_other' => 'Přejmenováno :count souborů v :directory', + 'write' => 'Přepsaný nový obsah v :file', + 'upload' => 'Zahájeno nahrávání souboru', + 'uploaded' => 'Nahráno :directory:file', + ], + 'sftp' => [ + 'denied' => 'Zablokován SFTP přístup z důvodu nedostatku oprávnění', + 'create_one' => 'Vytvořeno :files.0', + 'create_other' => 'Vytvořeno :count nových souborů', + 'write_one' => 'Změněn obsah :files.0', + 'write_other' => 'Změněn obsah :count souborů', + 'delete_one' => 'Smazáno :files.0', + 'delete_other' => 'Smazáno :count souborů', + 'create-directory_one' => 'Vytvořen adresář :files.0', + 'create-directory_other' => 'Vytvořeno :count adresářů', + 'rename_one' => 'Přejmenováno :files.0.from na :files.0.to', + 'rename_other' => 'Přejmenováno nebo přesunuto :count souborů', + ], + 'allocation' => [ + 'create' => 'Přidáno :alokace k serveru', + 'notes' => 'Aktualizovány poznámky pro :allocation z „:old“ na „:new“', + 'primary' => 'Nastavit :allocation jako primární alokaci serveru', + 'delete' => 'Odstraněno :allocation', + ], + 'schedule' => [ + 'create' => 'Vytvořen plán :name', + 'update' => 'Aktualizován plán :name', + 'execute' => 'Manuálně proveden plán :name', + 'delete' => 'Odstraněn plán :name', + ], + 'task' => [ + 'create' => 'Vytvořen nový úkol „:action“ pro plán :name', + 'update' => 'Aktualizován úkol „:action“ pro plán :name', + 'delete' => 'Odstraněn úkol pro plán :name', + ], + 'settings' => [ + 'rename' => 'Přejmenován server z :old na :new', + 'description' => 'Změněn popis serveru z :old na :new', + ], + 'startup' => [ + 'edit' => ':variable byla změněna z „:old“ na „:new“', + 'image' => 'Aktualizoval Docker Image pro server z :old na :new', + ], + 'subuser' => [ + 'create' => ':email přidán jako poduživatel', + 'update' => 'Aktualizována oprávnění poduživatele pro :email', + 'delete' => ':email odebrán jako poduživatel', + ], + ], +]; diff --git a/lang/cs/admin/eggs.php b/lang/cs/admin/eggs.php new file mode 100644 index 000000000..e6adb4cb8 --- /dev/null +++ b/lang/cs/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Úspěšně importováno toto vejce a jeho související proměnné.', + 'updated_via_import' => 'Toto vejce bylo aktualizováno pomocí poskytnutého souboru.', + 'deleted' => 'Požadované vejce bylo úspěšně smazáno z panelu.', + 'updated' => 'Konfigurace vejce byla úspěšně aktualizována.', + 'script_updated' => 'Instalační skript vejce byl aktualizován a bude spuštěn vždy, když budou nainstalovány servery.', + 'egg_created' => 'Nové vejce bylo úspěšně přidáno. Abyste mohli použít toto nové vejce, budete muset restartovat všechny spuštěné daemony.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'Proměnná „:variable“ byla odstraněna a nebude serverům po rekonstrukci k dispozici.', + 'variable_updated' => 'Proměnná „:variable“ byla aktualizována. Budete muset obnovit všechny servery používající tuto proměnnou pro použití změn.', + 'variable_created' => 'Nová proměnná byla úspěšně vytvořena a přiřazena k tomuto vejci.', + ], + ], +]; diff --git a/lang/cs/admin/node.php b/lang/cs/admin/node.php new file mode 100644 index 000000000..1318415b4 --- /dev/null +++ b/lang/cs/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'Poskytnutá FQDN neodpovídá platné IP adrese.', + 'fqdn_required_for_ssl' => 'Pro použití SSL pro tento uzel je vyžadován plně kvalifikovaný název domény, který odpovídá veřejné IP adrese', + ], + 'notices' => [ + 'allocations_added' => 'Alokace byly úspěšně přidány do tohoto uzlu.', + 'node_deleted' => 'Uzel byl úspěšně odebrán z panelu.', + 'node_created' => 'Nový uzel byl úspěšně vytvořen. Daemon na tomto uzlu můžete automaticky nakonfigurovat na kartě Konfigurace. Před přidáním všech serverů musíte nejprve přidělit alespoň jednu IP adresu a port.', + 'node_updated' => 'Informace o uzlu byly aktualizovány. Pokud bylo změněno nastavení daemonu, budete jej muset restartovat, aby se tyto změny projevily.', + 'unallocated_deleted' => 'Smazány všechny nepřidělené porty pro :ip.', + ], +]; diff --git a/lang/cs/admin/server.php b/lang/cs/admin/server.php new file mode 100644 index 000000000..569994857 --- /dev/null +++ b/lang/cs/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Pokoušíte se odstranit výchozí alokaci pro tento server, ale není k dispozici žádná záložní alokace.', + 'marked_as_failed' => 'Tento server byl označen jako neúspěšný předchozí instalace. Aktuální stav nelze v tomto stavu přepnout.', + 'bad_variable' => 'Došlo k chybě ověření proměnné :name.', + 'daemon_exception' => 'Při pokusu o komunikaci s daemonem došlo k výjimce, která vedla k HTTP/:code kódu odpovědi. Tato výjimka byla zaznamenána. (požadavek id: :request_id)', + 'default_allocation_not_found' => 'Požadovaná výchozí alokace nebyla nalezena v alokaci tohoto serveru.', + ], + 'alerts' => [ + 'startup_changed' => 'Konfigurace spouštění pro tento server byla aktualizována. Pokud bylo vejce tohoto serveru změněno, přeinstalování se nyní bude opakovat.', + 'server_deleted' => 'Server byl ze systému úspěšně odstraněn.', + 'server_created' => 'Server byl úspěšně vytvořen v panelu. Povolte prosím démonovi několik minut pro úplnou instalaci tohoto serveru.', + 'build_updated' => 'Detaily sestavení tohoto serveru byly aktualizovány. Některé změny mohou vyžadovat restartování.', + 'suspension_toggled' => 'Stav pozastavení serveru byl změněn na :status.', + 'rebuild_on_boot' => 'Tento server byl označen jako server vyžadující přesestavení kontejneru Docker. To se stane při příštím spuštění serveru.', + 'install_toggled' => 'Stav instalace pro tento server byl přepnut.', + 'server_reinstalled' => 'Tento server byl zařazen do fronty pro reinstalaci, která je nyní zahájena.', + 'details_updated' => 'Podrobnosti o serveru byly úspěšně aktualizovány.', + 'docker_image_updated' => 'Úspěšně změněn výchozí obraz Dockeru, který má být použit pro tento server. Pro tuto změnu je nutný restart.', + 'node_required' => 'Před přidáním serveru do tohoto panelu musíte mít nakonfigurován alespoň jeden uzel.', + 'transfer_nodes_required' => 'Před přenosem serverů musíte mít nakonfigurovány alespoň dva uzly.', + 'transfer_started' => 'Přenos serveru byl zahájen.', + 'transfer_not_viable' => 'Vybraný uzel nemá k dispozici požadovaný prostor na disku nebo paměť pro uložení tohoto serveru.', + ], +]; diff --git a/lang/cs/admin/user.php b/lang/cs/admin/user.php new file mode 100644 index 000000000..9d3e44321 --- /dev/null +++ b/lang/cs/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Nelze odstranit uživatele s aktivními servery připojenými k jeho účtu. Před pokračováním prosím odstraňte jeho servery.', + 'user_is_self' => 'Nemůžete smazat svůj vlastní uživatelský účet!', + ], + 'notices' => [ + 'account_created' => 'Účet byl úspěšně vytvořen', + 'account_updated' => 'Účet byl úspěšně aktualizován.', + ], +]; diff --git a/lang/cs/auth.php b/lang/cs/auth.php new file mode 100644 index 000000000..e4ff1701a --- /dev/null +++ b/lang/cs/auth.php @@ -0,0 +1,27 @@ + 'Přihlásit se', + 'go_to_login' => 'Přejít na přihlášení', + 'failed' => 'Nebyl nalezen žádný účet odpovídající těmto přihlašovacím údajům.', + + 'forgot_password' => [ + 'label' => 'Zapomněli jste heslo?', + 'label_help' => 'Zadejte e-mailovou adresu vašeho účtu pro příjem pokynů k obnovení hesla.', + 'button' => 'Obnovit účet', + ], + + 'reset_password' => [ + 'button' => 'Obnovit a přihlásit se', + ], + + 'two_factor' => [ + 'label' => 'Dvoufázový token', + 'label_help' => 'Tento účet vyžaduje druhou vrstvu ověřování, abyste mohli pokračovat. Pro dokončení přihlášení zadejte kód generovaný zařízením.', + 'checkpoint_failed' => 'Dvoufaktorový ověřovací token je neplatný.', + ], + + 'throttle' => 'Příliš mnoho pokusů o přihlášení. Zkuste to prosím znovu za :seconds sekund.', + 'password_requirements' => 'Heslo musí mít délku nejméně 8 znaků a mělo by být pro tento web jedinečné.', + '2fa_must_be_enabled' => 'Správce požaduje, aby bylo dvoufázové ověření povoleno pro váš účet, aby jste mohl použit panel.', +]; diff --git a/lang/cs/command/messages.php b/lang/cs/command/messages.php new file mode 100644 index 000000000..d018d1c9e --- /dev/null +++ b/lang/cs/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Zadejte uživatelské jméno, ID uživatele nebo e-mailovou adresu', + 'select_search_user' => 'ID uživatele k odstranění (Zadejte \'0\' k opětovnému vyhledávání)', + 'deleted' => 'Uživatel byl úspěšně odstraněn z panelu.', + 'confirm_delete' => 'Opravdu chcete odstranit tohoto uživatele z panelu?', + 'no_users_found' => 'Pro hledaný výraz nebyl nalezen žádný uživatel.', + 'multiple_found' => 'Pro uživatele bylo nalezeno více účtů, není možné odstranit uživatele z důvodu vlajky --no-interaction.', + 'ask_admin' => 'Je tento uživatel správcem?', + 'ask_email' => 'Emailová adresa', + 'ask_username' => 'Uživatelské jméno', + 'ask_name_first' => 'Jméno', + 'ask_name_last' => 'Příjmení', + 'ask_password' => 'Heslo', + 'ask_password_tip' => 'Pokud chcete vytvořit účet s náhodným heslem zaslaným uživateli, spusťte znovu tento příkaz (CTRL+C) a přejděte do proměnné `--no-password`.', + 'ask_password_help' => 'Heslo musí mít délku nejméně 8 znaků a obsahovat alespoň jedno velké písmeno a číslo.', + '2fa_help_text' => [ + 'Tento příkaz zakáže dvoufázové ověření pro uživatelský účet, pokud je povoleno. Toto by mělo být použito jako příkaz k obnovení účtu pouze v případě, že je uživatel uzamčen mimo jeho účet.', + 'Pokud toto nechcete udělat, stiskněte CTRL + C pro ukončení tohoto procesu.', + ], + '2fa_disabled' => 'Dvoufázové ověření bylo vypnuto pro :email.', + ], + 'schedule' => [ + 'output_line' => 'Odesílání první úlohy v `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Odstraňování záložního souboru služby :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Žádost o obnovení „:name“ (#:id) v uzlu „:node“ selhala s chybou: :message', + 'reinstall' => [ + 'failed' => 'Žádost o přeinstalaci „:name“ (#:id) v uzlu „:node“ selhala s chybou: :message', + 'confirm' => 'Chystáte se přeinstalovat skupinu serverů. Chcete pokračovat?', + ], + 'power' => [ + 'confirm' => 'Chystáte se provést :action proti :count serverům. Přejete si pokračovat?', + 'action_failed' => 'Požadavek na výkonovou akci „:name“ (#:id) v uzlu „:node“ selhal s chybou: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP hostitel (např. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Uživatelské jméno', + 'ask_smtp_password' => 'SMTP heslo', + 'ask_mailgun_domain' => 'Mailgun doména', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API klíč', + 'ask_driver' => 'Který ovladač by měl být použit pro odesílání e-mailů?', + 'ask_mail_from' => 'E-mailové adresy by měly pocházet z', + 'ask_mail_name' => 'Název, ze kterého by se měly zobrazit e-maily', + 'ask_encryption' => 'Šifrovací metoda', + ], + ], +]; diff --git a/lang/cs/dashboard/account.php b/lang/cs/dashboard/account.php new file mode 100644 index 000000000..3670f473a --- /dev/null +++ b/lang/cs/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Aktualizovat e-mail', + 'updated' => 'E-mailová adresa byla úspěšně změněna.', + ], + 'password' => [ + 'title' => 'Změnit heslo', + 'requirements' => 'Vaše heslo by mělo mít délku alespoň 8 znaků.', + 'updated' => 'Vaše heslo bylo změněno.', + ], + 'two_factor' => [ + 'button' => 'Nastavení dvoufázového ověření', + 'disabled' => 'Dvoufázové ověřování bylo na vašem účtu zakázáno. Po přihlášení již nebudete vyzváni k poskytnutí tokenu.', + 'enabled' => 'Dvoufázové ověřování bylo na vašem účtu povoleno! Od nynějška při přihlášení budete muset zadat kód vygenerovaný vaším zařízením.', + 'invalid' => 'Zadaný token není platný.', + 'setup' => [ + 'title' => 'Nastavit dvoufázové ověřování', + 'help' => 'Nelze naskenovat kód? Zadejte kód níže do vaší aplikace:', + 'field' => 'Zadejte token', + ], + 'disable' => [ + 'title' => 'Zakázat dvoufázové ověření', + 'field' => 'Zadejte token', + ], + ], +]; diff --git a/lang/cs/dashboard/index.php b/lang/cs/dashboard/index.php new file mode 100644 index 000000000..fbbb5ac31 --- /dev/null +++ b/lang/cs/dashboard/index.php @@ -0,0 +1,8 @@ + 'Vyhledat servery...', + 'no_matches' => 'Nebyly nalezeny žádné servery, které odpovídají zadaným kritériím.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Paměť', +]; diff --git a/lang/cs/exceptions.php b/lang/cs/exceptions.php new file mode 100644 index 000000000..337f02613 --- /dev/null +++ b/lang/cs/exceptions.php @@ -0,0 +1,55 @@ + 'Byla zaznamenána nečekaná vyjímka při pokusu komunikovat s daemonem vyusaťující v chybu HTTP/:code. Tahle vyjímka byla logována.', + 'node' => [ + 'servers_attached' => 'Uzel nesmí mít žádné s ním spojené servery, aby mohl být smazán', + 'daemon_off_config_updated' => 'Konfigurace daemonu byla aktualizována, ale byla zde chyba při automatické aktualizaci souborů konfigurace Daemonu. Je třeba soubory konfigurace Daemonu aktualizovat manuálně (config.yml), aby změny damemonu byly aplikovány.', + ], + 'allocations' => [ + 'server_using' => 'Server již využívá tuhle alokaci. Pro odstranění alokace, nesmí být žádný server spojen s alokací.', + 'too_many_ports' => 'Přidání více než 1000 portů v jednom rozsahu najednou není podporováno.', + 'invalid_mapping' => 'Mapování poskytnuto pro :port bylo nesprávné a nebylo možné ho zpracovat.', + 'cidr_out_of_range' => 'CIDR zápis je možný jen pro masky /25 až /32 subnetu.', + 'port_out_of_range' => 'Porty v alokacích musí být vyšší než 1024 a nížší nebo se rovnat 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'Vejce s aktivními servery není možné smazat z panelu.', + 'invalid_copy_id' => 'Zvolený vejce na kopii skriptu buď neexistuje nebo neobsahuje samotný skript.', + 'has_children' => 'Toto vejce je nadřazeno jednomu či více vajec. Prosím vymažte tyto vejce předtím než smažete toto.', + ], + 'variables' => [ + 'env_not_unique' => 'Proměnná prostředí :name musí mít unikátní pro toto vejce.', + 'reserved_name' => 'Proměnná prostředí :name je chráněna a nemůže být přidělena k této proměnné', + 'bad_validation_rule' => 'Pravidlo pro ověření „:rule“ není platné pravidlo pro tuto aplikaci.', + ], + 'importer' => [ + 'json_error' => 'Při pokusu o analyzování souboru JSON došlo k chybě: :error.', + 'file_error' => 'Poskytnutý JSON soubor není platný.', + 'invalid_json_provided' => 'Formát poskytnutého JSON souboru nebylo možné rozeznat', + ], + 'subusers' => [ + 'editing_self' => 'Úprava tvého vlastního podúčtu není dovolena.', + 'user_is_owner' => 'Nemůžete přidat vlastníka serveru jako poduživatele pro tento server.', + 'subuser_exists' => 'Uživatel s touto emailovou adresou je již poduživatel na tomto serveru.', + ], + 'databases' => [ + 'delete_has_databases' => 'Nelze odstranit hostitelský server databáze, který má s ním spojené aktivní databáze.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'Maximální čas intervalu pro tuto řetězovou úlohu je 15 minut.', + ], + 'locations' => [ + 'has_nodes' => 'Nelze smazat lokaci, která má s ní spojené aktivní uzly.', + ], + 'users' => [ + 'node_revocation_failed' => 'Odstranění klíču pro uzel Uzel #:node nevyšlo: :error.', + ], + 'deployment' => [ + 'no_viable_nodes' => 'Žadné uzly nesplňují specifikované požadavky pro automatické aplikování.', + 'no_viable_allocations' => 'Žádné alokace nesplňující požadavky pro automatickou aplikaci nebyly nalezeny.', + ], + 'api' => [ + 'resource_not_found' => 'Požadovaný dokument neexistuje na tomto serveru.', + ], +]; diff --git a/lang/cs/pagination.php b/lang/cs/pagination.php new file mode 100644 index 000000000..984384fac --- /dev/null +++ b/lang/cs/pagination.php @@ -0,0 +1,17 @@ + '« Předchozí', + 'next' => 'Další »', +]; diff --git a/lang/cs/passwords.php b/lang/cs/passwords.php new file mode 100644 index 000000000..7a53257ba --- /dev/null +++ b/lang/cs/passwords.php @@ -0,0 +1,19 @@ + 'Heslo musí obsahovat alespoň 6 znaků a musí se shodovat s ověřením.', + 'reset' => 'Vaše heslo bylo obnoveno!', + 'sent' => 'Na váš e-mal byl odeslán link pro obnovu hesla!', + 'token' => 'Tento klíč pro obnovu hesla je neplatný.', + 'user' => 'Nelze najít uživatele s touto e-mailovou adresou.', +]; diff --git a/lang/cs/server/users.php b/lang/cs/server/users.php new file mode 100644 index 000000000..7c9031be1 --- /dev/null +++ b/lang/cs/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Umožňuje přístup do websocketu pro tento server.', + 'control_console' => 'Umožňuje uživateli odesílat data do konzole serveru.', + 'control_start' => 'Umožňuje uživateli spustit instanci serveru.', + 'control_stop' => 'Umožňuje uživateli zastavit instanci serveru.', + 'control_restart' => 'Umožňuje uživateli restartovat instanci serveru.', + 'control_kill' => 'Umožňuje uživateli ukončit instanci serveru.', + 'user_create' => 'Umožňuje uživateli vytvářet nové uživatelské účty pro server.', + 'user_read' => 'Umožňuje uživateli zobrazit oprávnění uživatele asociované s tímto serverem.', + 'user_update' => 'Umožňuje uživateli upravovat ostatní oprávnění uživatelů spojené s tímto serverem.', + 'user_delete' => 'Umožňuje uživateli odstranit ostatní uživatele přidružené k tomuto serveru.', + 'file_create' => 'Umožňuje uživateli oprávnění vytvářet nové soubory a adresáře.', + 'file_read' => 'Umožňuje uživateli vidět soubory a složky spojené s touto instancí serveru a také zobrazit jejich obsah.', + 'file_update' => 'Umožňuje uživateli aktualizovat soubory a složky spojené se serverem.', + 'file_delete' => 'Umožňuje uživateli odstranit soubory a adresáře.', + 'file_archive' => 'Umožňuje uživateli vytvářet archivy souborů a dekomprimovat existující archivy.', + 'file_sftp' => 'Umožňuje uživateli provést výše uvedené akce souborů pomocí SFTP klienta.', + 'allocation_read' => 'Umožňuje přístup ke stránkám správy alokace serveru.', + 'allocation_update' => 'Umožňuje uživateli oprávnění provádět změny alokací serveru.', + 'database_create' => 'Umožňuje uživateli oprávnění k vytvoření nové databáze pro server.', + 'database_read' => 'Umožňuje uživateli oprávnění zobrazit databáze serverů.', + 'database_update' => 'Umožňuje uživateli oprávnění provádět změny v databázi. Pokud uživatel nemá také oprávnění "Zobrazit heslo", nebude moci heslo upravit.', + 'database_delete' => 'Umožňuje uživateli oprávnění odstranit instanci databáze.', + 'database_view_password' => 'Umožňuje uživateli oprávnění zobrazit heslo do databáze.', + 'schedule_create' => 'Umožňuje uživateli vytvořit nový plán pro server.', + 'schedule_read' => 'Umožňuje uživateli oprávnění k prohlížení plánů serveru.', + 'schedule_update' => 'Umožňuje uživateli oprávnění provádět změny plánu existujícího serveru.', + 'schedule_delete' => 'Umožňuje uživateli odstranit plán pro server.', + ], +]; diff --git a/lang/cs/strings.php b/lang/cs/strings.php new file mode 100644 index 000000000..ea83aec1e --- /dev/null +++ b/lang/cs/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'E-mailová adresa', + 'user_identifier' => 'Uživatelské jméno nebo e-mail', + 'password' => 'Heslo', + 'new_password' => 'Nové heslo', + 'confirm_password' => 'Potvrdit nové heslo', + 'login' => 'Přihlášení', + 'home' => 'Domovská stránka', + 'servers' => 'Servery', + 'id' => 'ID', + 'name' => 'Název', + 'node' => 'Uzel', + 'connection' => 'Připojení', + 'memory' => 'Paměť', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Stav', + 'search' => 'Hledat', + 'suspended' => 'Pozastaveno', + 'account' => 'Účet', + 'security' => 'Zabezpečení', + 'ip' => 'IP adresa', + 'last_activity' => 'Poslední aktivita', + 'revoke' => 'Odvolat', + '2fa_token' => 'Ověřovací Token', + 'submit' => 'Odeslat', + 'close' => 'Zavřít', + 'settings' => 'Nastavení', + 'configuration' => 'Nastavení', + 'sftp' => 'SFTP', + 'databases' => 'Databáze', + 'memo' => 'Poznámka', + 'created' => 'Vytvořeno', + 'expires' => 'Expirace', + 'public_key' => 'Token', + 'api_access' => 'Api Přístup', + 'never' => 'nikdy', + 'sign_out' => 'Odhlásit se', + 'admin_control' => 'Administrace', + 'required' => 'Povinné pole', + 'port' => 'Port', + 'username' => 'Uživatelské jméno', + 'database' => 'Databáze', + 'new' => 'Nový', + 'danger' => 'Nebezpečí', + 'create' => 'Vytořit', + 'select_all' => 'Vybrat vše', + 'select_none' => 'Zrušit výběr', + 'alias' => 'Přezdívka', + 'primary' => 'Primární', + 'make_primary' => 'Nastavit jako výchozí', + 'none' => 'Žádný', + 'cancel' => 'Zrušit', + 'created_at' => 'Vytvořeno v', + 'action' => 'Akce', + 'data' => 'Data', + 'queued' => 'Ve frontě', + 'last_run' => 'Poslední spuštění', + 'next_run' => 'Další spuštění', + 'not_run_yet' => 'Zatím nespustěno', + 'yes' => 'Ano', + 'no' => 'Ne', + 'delete' => 'Smazat', + '2fa' => '2FA', + 'logout' => 'Odhlásit se', + 'admin_cp' => 'Administrace', + 'optional' => 'Volitelné', + 'read_only' => 'Pouze pro čtení', + 'relation' => 'Souvislost', + 'owner' => 'Vlastník', + 'admin' => 'Administrátor', + 'subuser' => 'Poduživatel', + 'captcha_invalid' => 'Zadaný captcha je neplatný.', + 'tasks' => 'Úkoly', + 'seconds' => 'Sekund', + 'minutes' => 'Minut', + 'under_maintenance' => 'Probíhá údržba', + 'days' => [ + 'sun' => 'Neděle', + 'mon' => 'Pondělí', + 'tues' => 'Úterý', + 'wed' => 'Středa', + 'thurs' => 'Čtvrtek', + 'fri' => 'Pátek', + 'sat' => 'Sobota', + ], + 'last_used' => 'Naposledy použito', + 'enable' => 'Povolit', + 'disable' => 'Zakázat', + 'save' => 'Uložit', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/cs/validation.php b/lang/cs/validation.php new file mode 100644 index 000000000..63a90ae54 --- /dev/null +++ b/lang/cs/validation.php @@ -0,0 +1,106 @@ + ':attribute musí být přijat.', + 'active_url' => ':attribute není platná URL adresa.', + 'after' => ':attribute musí být po datu :date.', + 'after_or_equal' => ':attribute musí být datum :date nebo pozdější.', + 'alpha' => ':attribute může obsahovat pouze písmena.', + 'alpha_dash' => ':attribute může obsahovat pouze písmena, čísla, a pomlčky.', + 'alpha_num' => ':attribute může obsahovat pouze písmena a čísla.', + 'array' => ':attribute musí být seznam.', + 'before' => ':attribute musí být datum před :date.', + 'before_or_equal' => ':attribute musí být datum před nebo rovné :date.', + 'between' => [ + 'numeric' => ':attribute musí být mezi :min a :max.', + 'file' => ':attribute musí být v rozmezí :min a :max kilobajtů.', + 'string' => ':attribute musí mít délku v rozmezí :min a :max znaků.', + 'array' => ':attribute musí mít mezi :min a :max položkami.', + ], + 'boolean' => ':attribute musí být true nebo false', + 'confirmed' => 'Potvrzení :attribute se neshoduje.', + 'date' => ':attribute není platné datum.', + 'date_format' => ':attribute se neshoduje se správným formátem :format.', + 'different' => ':attribute a :other se musí lišit.', + 'digits' => 'Atribut :attribute musí mít :digits číslic.', + 'digits_between' => ':attribute musí být dlouhé nejméně :min a nejvíce :max číslic.', + 'dimensions' => ':attribute nemá platné rozměry obrázku.', + 'distinct' => ':attribute má duplicitní hodnotu.', + 'email' => ':attribute musí být platná e-mailová adresa.', + 'exists' => 'Vybraný :attribute je neplatný.', + 'file' => ':attribute musí být soubor.', + 'filled' => 'Pole :attribute je povinné.', + 'image' => ':attribute musí být obrázek.', + 'in' => 'Vybraný :attribute je neplatný.', + 'in_array' => 'Pole :attribute neexistuje v :other.', + 'integer' => ':attribute musí být celé číslo.', + 'ip' => ':attribute musí být platná IP adresa.', + 'json' => ':attribute musí být platný řetězec JSON.', + 'max' => [ + 'numeric' => ':attribute nemůže být větší než :max.', + 'file' => ':attribute nesmí být větší než :max kilobajtů.', + 'string' => ':attribute nesmí být delší než :max znaků.', + 'array' => ':attribute nesmí obsahovat více než: max položek.', + ], + 'mimes' => 'Atribut: musí být soubor typu: :values.', + 'mimetypes' => 'Atribut :attribute musí být soubor o typu: :values.', + 'min' => [ + 'numeric' => 'Atribut :attribute musí být alepoň :min místný.', + 'file' => 'Atribut :attribute musí mít alapoň :min kilobajtů.', + 'string' => 'Atribut :attribute musí mít alespoň :min znaků.', + 'array' => 'Atribut :attribute musí mít alespoň :min položek.', + ], + 'not_in' => 'Zvolený atribut :attribute je neplatný.', + 'numeric' => 'Atribut :attribute musí být číslo.', + 'present' => 'Pole atributu :attribute musí být přítomno.', + 'regex' => 'Formát atributu :attribute je neplatný.', + 'required' => 'Pole atributu :attribute je povinné.', + 'required_if' => 'Pole atributu :attribute je povinné když :other je :values.', + 'required_unless' => 'Pole atributu :attribute je povinné pokud není :other :values.', + 'required_with' => 'Pole atributu :attribute je povinné pokud :values je přitomná.', + 'required_with_all' => 'Pole atributu :attribute je povinné pokud :values nejsou přítomny.', + 'required_without' => 'Pole atributu :attribute je povinné pokud :values není přitomna.', + 'required_without_all' => 'Pole atributu :attribute pokud žádná z :values není přítomna.', + 'same' => 'Atribut :attribute a :other se musí shodovat.', + 'size' => [ + 'numeric' => 'Atribut :attribute musí být :size místný.', + 'file' => ':attribute musí mít velikost :size Kb.Atribut :attribute musí mít :size kilobajtů.', + 'string' => ':attribute musí mít :size znaků.', + 'array' => ':attribute musí obsahovat :size položek.', + ], + 'string' => ':attribute musí být text.', + 'timezone' => ':attribute musí být platná zóna.', + 'unique' => ':attribute byl již použit.', + 'uploaded' => 'Nahrávání :attribute se nezdařilo.', + 'url' => 'Formát :attribute není platný.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env proměnná', + 'invalid_password' => 'Zadané heslo pro tento účet je neplatné.', + ], +]; diff --git a/lang/da/activity.php b/lang/da/activity.php new file mode 100644 index 000000000..5239cb6fd --- /dev/null +++ b/lang/da/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Log ind mislykkedes', + 'success' => 'Logget ind', + 'password-reset' => 'Nulstil adgangskode', + 'reset-password' => 'Anmodet om nulstilling af adgangskode', + 'checkpoint' => '2-factor godkendelse anmodet', + 'recovery-token' => '2-factor gendannelses-token brugt', + 'token' => 'Løst 2-factor udfordring', + 'ip-blocked' => 'Blokeret anmodning fra ikke-listet IP-adresse for :identifier', + 'sftp' => [ + 'fail' => 'SFTP log ind mislykkedes', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Skiftede e-mail fra :old til :new', + 'password-changed' => 'Adgangskode ændret', + ], + 'api-key' => [ + 'create' => 'Ny API-nøgle oprettet :identifier', + 'delete' => 'API-nøgle slettet :identifier', + ], + 'ssh-key' => [ + 'create' => 'SSH-nøgle :fingerprint tilføjet til konto', + 'delete' => 'SSH-nøgle :fingerprint fjernet fra konto', + ], + 'two-factor' => [ + 'create' => '2-factor godkendelse aktiveret', + 'delete' => '2-factor godkendelse deaktiveret', + ], + ], + 'server' => [ + 'reinstall' => 'Server geninstalleret', + 'console' => [ + 'command' => 'Udført ":command" på serveren', + ], + 'power' => [ + 'start' => 'Server startet', + 'stop' => 'Server stoppet', + 'restart' => 'Server genstartet', + 'kill' => 'Dræbte serverprocessen', + ], + 'backup' => [ + 'download' => 'Hentede :name backup', + 'delete' => 'Slettede :name backup', + 'restore' => 'Gendannede :name backup (slettede filer: :truncate)', + 'restore-complete' => 'Genoprettelse af :name backup fuldført', + 'restore-failed' => 'Genoprettelse af :name backup mislykkedes', + 'start' => 'Startede en ny backup :name', + 'complete' => 'Backup :name markeret som fuldført', + 'fail' => 'Markeret :name backup som mislykket', + 'lock' => 'Låst :name backup', + 'unlock' => 'Oplåst :name backup', + ], + 'database' => [ + 'create' => 'Oprettet ny database :name', + 'rotate-password' => 'Adgangskode roteret for database :name', + 'delete' => 'Slettet database :name', + ], + 'file' => [ + 'compress_one' => 'Komprimeret :directory:file', + 'compress_other' => 'Komprimeret :count filer i :directory', + 'read' => 'Indholdet af :file blev set', + 'copy' => 'Kopi af :file oprettet', + 'create-directory' => 'Mappen :directory:name oprettet', + 'decompress' => 'Dekomprimeret :files i :directory', + 'delete_one' => 'Slettede :directory:files.0', + 'delete_other' => 'Slettede :count filer i :directory', + 'download' => 'Hentede :file', + 'pull' => 'Hentede en fjernfil fra :url til :directory', + 'rename_one' => 'Omdøbte :directory:files.0.from til :directory:files.0.to', + 'rename_other' => 'Omdøbte :count filer i :directory', + 'write' => 'Skrev nyt indhold til :file', + 'upload' => 'Begyndte en filoverførsel', + 'uploaded' => 'Uploadet :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blokeret SFTP adgang på grund af tilladelser', + 'create_one' => 'Oprettede :files.0', + 'create_other' => 'Oprettede :count nye filer', + 'write_one' => 'Ændrede indholdet af :files.0', + 'write_other' => 'Ændrede indholdet af :count filer', + 'delete_one' => 'Slettede :files.0', + 'delete_other' => 'Slettede :count filer', + 'create-directory_one' => 'Oprettede mappen :files.0', + 'create-directory_other' => 'Oprettede :count mapper', + 'rename_one' => 'Omdøbte :files.0.from til :files.0.to', + 'rename_other' => 'Omdøbte eller flyttede :count filer', + ], + 'allocation' => [ + 'create' => 'Tilføjede :allocation til serveren', + 'notes' => 'Opdaterede noterne for :allocation fra ":old" til ":new"', + 'primary' => 'Satte :allocation som primær servertildeling', + 'delete' => 'Slettede :allocation tildeling', + ], + 'schedule' => [ + 'create' => 'Oprettede :name tidsplan', + 'update' => 'Opdaterede :name tidsplan', + 'execute' => 'Manuelt udført :name tidsplan', + 'delete' => 'Slettede :name tidsplan', + ], + 'task' => [ + 'create' => 'Oprettede en ny ":action" opgave for :name tidsplan', + 'update' => 'Opdaterede ":action" opgaven for :name tidsplan', + 'delete' => 'Slettede en opgave for :name tidsplan', + ], + 'settings' => [ + 'rename' => 'Omdøbte serveren fra :old til :new', + 'description' => 'Skiftede server beskrivelse fra :old til :new', + ], + 'startup' => [ + 'edit' => 'Skiftede :variable variabel fra ":old" til ":new"', + 'image' => 'Opdaterede Docker Image for serveren fra :old til :new', + ], + 'subuser' => [ + 'create' => 'Tilføjede :email som en underbruger', + 'update' => 'Opdaterede underbruger rettighederne for :email', + 'delete' => 'Fjernede :email som underbruger', + ], + ], +]; diff --git a/lang/da/admin/eggs.php b/lang/da/admin/eggs.php new file mode 100644 index 000000000..df1ee3931 --- /dev/null +++ b/lang/da/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Dette Egg og dets tilknyttede variabler blev importeret med succes.', + 'updated_via_import' => 'Dette Egg er blevet opdateret ved hjælp af den givne fil.', + 'deleted' => 'Egget blev slettet fra panelet.', + 'updated' => 'Egget blev opdateret med succes.', + 'script_updated' => 'Eggets installationsscript er blevet opdateret, og vil blive kørt når servere installeres.', + 'egg_created' => 'Et nyt egg blev lagt med succes. Du skal genstarte eventuelle kørende daemons for at anvende dette nye egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'Variablen :variable er blevet slettet og vil ikke længere være tilgængelig for servere der er blevet genstartet.', + 'variable_updated' => 'Variablen :variable er blevet opdateret. Du skal genstarte eventuelle servere, der bruger denne variabel for at anvende ændringer.', + 'variable_created' => 'Ny variabel er blevet oprettet og tildelt dette egg.', + ], + ], +]; diff --git a/lang/da/admin/node.php b/lang/da/admin/node.php new file mode 100644 index 000000000..d8040b6c8 --- /dev/null +++ b/lang/da/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'FQDN eller IP-adressen, der er angivet, resulterer ikke i en gyldig IP-adresse.', + 'fqdn_required_for_ssl' => 'Et fuldt kvalificeret domænenavn, der resulterer i en offentlig IP-adresse, er påkrævet for at bruge SSL til denne node.', + ], + 'notices' => [ + 'allocations_added' => 'Tildelinger er blevet tilføjet til denne node.', + 'node_deleted' => 'Node er blevet slettet fra panelet.', + 'node_created' => 'Ny node blev oprettet. Du kan automatisk konfigurere daemonen på denne maskine ved at besøge \'Configuration\' fanen for denne node. Før du kan tilføje nogen servere, skal du først tildele mindst en IP-adresse og port.', + 'node_updated' => 'Node information er blevet opdateret. Hvis nogen daemon indstillinger blev ændret, skal du genstarte den for at anvende disse ændringer.', + 'unallocated_deleted' => 'Slettede alle ikke-tildelte porte for :ip.', + ], +]; diff --git a/lang/da/admin/server.php b/lang/da/admin/server.php new file mode 100644 index 000000000..764e11a5d --- /dev/null +++ b/lang/da/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Du forsøger at slette standard allokeringen for denne server, men der er ingen reserve allokeringer at bruge.', + 'marked_as_failed' => 'Denne server blev markeret som fejlet under en tidligere installationen. Nuværende status kan ikke ændres i denne tilstand.', + 'bad_variable' => 'Der opstod en valideringsfejl med :name variablen.', + 'daemon_exception' => 'Der opstod en fejl under forsøget på at kommunikere med daemonen, hvilket resulterede i en HTTP/:code responskode. Denne fejl er gemt i loggen. (request id: :request_id)', + 'default_allocation_not_found' => 'Den efterspurgte standard allokering blev ikke fundet i denne servers allokeringer.', + ], + 'alerts' => [ + 'startup_changed' => 'Startup konfigurationen for denne server er blevet opdateret. Hvis serverens egg blev ændret, vil en geninstallation starte nu.', + 'server_deleted' => 'Serveren er blevet slettet fra systemet.', + 'server_created' => 'Serveren blev oprettet på panelet. Det kan tage et par minutter at installere serveren.', + 'build_updated' => 'Serveren er blevet opdateret. Nogle ændringer kan kræve et genstart for at træde i kraft.', + 'suspension_toggled' => 'Server suspenderings status er blevet ændret til :status.', + 'rebuild_on_boot' => 'Denne server er blevet markeret til at kræve en geninstallation af Docker Container. Dette vil ske næste gang serveren startes.', + 'install_toggled' => 'Installations status for denne server er blevet ændret.', + 'server_reinstalled' => 'Denne server er blevet sat i kø til en geninstallation, der begynder nu.', + 'details_updated' => 'Server detaljerne er blevet opdateret.', + 'docker_image_updated' => 'Standard Docker container image er blevet opdateret. For at anvende dette skal du genstarte serveren.', + 'node_required' => 'Du skal have mindst en node konfigureret, før du kan tilføje en server til panelet.', + 'transfer_nodes_required' => 'Du skal have mindst to noder konfigureret for at starte en serveroverførsel.', + 'transfer_started' => 'Server flytning er blevet startet.', + 'transfer_not_viable' => 'Noden du har valgt har ikke nok disk plads eller hukommelse til at rumme denne server.', + ], +]; diff --git a/lang/da/admin/user.php b/lang/da/admin/user.php new file mode 100644 index 000000000..f6d123fe6 --- /dev/null +++ b/lang/da/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Kan ikke slette en bruger med aktive servere knyttet til deres konto. Slet deres servere før du fortsætter.', + 'user_is_self' => 'Kan ikke slette din egen konto.', + ], + 'notices' => [ + 'account_created' => 'Kontoen er blevet oprettet.', + 'account_updated' => 'Kontoen er blevet opdateret.', + ], +]; diff --git a/lang/da/auth.php b/lang/da/auth.php new file mode 100644 index 000000000..7cfbe886e --- /dev/null +++ b/lang/da/auth.php @@ -0,0 +1,27 @@ + 'Log ind', + 'go_to_login' => 'Gå til log ind', + 'failed' => 'Ingen konto fundet med de angivne oplysninger.', + + 'forgot_password' => [ + 'label' => 'Glemt adgangskode?', + 'label_help' => 'Indtast din kontos e-mailadresse for at modtage instruktioner om nulstilling af din adgangskode.', + 'button' => 'Gendan konto', + ], + + 'reset_password' => [ + 'button' => 'Nulstil adgangskode og log ind', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'Denne konto kræver en anden form for godkendelse for at fortsætte. Indtast venligst koden genereret af din enhed for at fuldføre dette login.', + 'checkpoint_failed' => '2-factor godkendelses-token var ugyldig.', + ], + + 'throttle' => 'For mange login forsøg. Prøv igen om :sekunder sekunder.', + 'password_requirements' => 'Adgangskoden skal være mindst 8 tegn lang og bør være unik for dette website.', + '2fa_must_be_enabled' => 'Administratoren har krævet, at 2-factor godkendelse skal være aktiveret for din konto for at bruge panelet.', +]; diff --git a/lang/da/command/messages.php b/lang/da/command/messages.php new file mode 100644 index 000000000..833c81097 --- /dev/null +++ b/lang/da/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Indtast et brugernavn, bruger ID eller e-mailadresse', + 'select_search_user' => 'ID på brugeren der skal slettes (Indtast \'0\' for at søge igen)', + 'deleted' => 'Brugeren blev slettet fra panelet.', + 'confirm_delete' => 'Er du sikker på at du vil slette denne bruger fra panelet?', + 'no_users_found' => 'Ingen brugere blev fundet for det angivne søgeord.', + 'multiple_found' => 'Der blev fundet flere konti for den angivne bruger, det er ikke muligt at slette en bruger på grund af --no-interaction flaget.', + 'ask_admin' => 'Er denne bruger en administrator?', + 'ask_email' => 'E-mailadresse', + 'ask_username' => 'Brugernavn', + 'ask_name_first' => 'Fornavn', + 'ask_name_last' => 'Efternavn', + 'ask_password' => 'Adgangskode', + 'ask_password_tip' => 'Hvis du vil oprette en konto med en tilfældig adgangskode sendt til brugeren, skal du køre denne kommando igen (CTRL+C) og tilføje `--no-password` flaget.', + 'ask_password_help' => 'Adgangskoder skal være mindst 8 tegn og indeholde mindst et stort bogstav og et tal.', + '2fa_help_text' => [ + 'Denne kommando vil deaktivere 2-faktor godkendelse for en brugers konto, hvis det er aktiveret. Dette bør kun bruges som en konto recovery kommando, hvis brugeren er låst ude af deres konto.', + 'Hvis dette ikke er det du ønskede at gøre, tryk CTRL+C for at afslutte denne proces.', + ], + '2fa_disabled' => '2-Factor godkendelse er blevet deaktiveret for :email.', + ], + 'schedule' => [ + 'output_line' => 'Udsender job for første opgave i `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Sletter service backup fil :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Genopbygnings anmodning for ":name" (#:id) på node ":node" mislykkedes med fejl: :message', + 'reinstall' => [ + 'failed' => 'Geninstallation anmodning for ":name" (#:id) på node ":node" mislykkedes med fejl: :message', + 'confirm' => 'Du er ved at geninstallere en gruppe servere. Ønsker du at fortsætte?', + ], + 'power' => [ + 'confirm' => 'Du er ved at udføre en :action mod :count servere. Ønsker du at fortsætte?', + 'action_failed' => 'Power handling anmodning for ":name" (#:id) på node ":node" mislykkedes med fejl: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (f.eks. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Brugernavn', + 'ask_smtp_password' => 'SMTP Adgangskode', + 'ask_mailgun_domain' => 'Mailgun Domæne', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API nøgle', + 'ask_driver' => 'Hvilken driver skal bruges til at sende e-mails?', + 'ask_mail_from' => 'E-mail skal sendes fra', + 'ask_mail_name' => 'Navn som e-mails skal vises fra', + 'ask_encryption' => 'Krypterings metode der skal bruges', + ], + ], +]; diff --git a/lang/da/dashboard/account.php b/lang/da/dashboard/account.php new file mode 100644 index 000000000..6cc4b09ff --- /dev/null +++ b/lang/da/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Opdater din e-mail', + 'updated' => 'Din e-mailadresse er blevet opdateret.', + ], + 'password' => [ + 'title' => 'Skift din adgangskode', + 'requirements' => 'Din nye adgangskode skal være mindst 8 tegn lang.', + 'updated' => 'Din adgangskode er blevet opdateret.', + ], + 'two_factor' => [ + 'button' => 'Konfigurer 2-Factor godkendelse', + 'disabled' => '2-factor godkendelse er blevet deaktiveret på din konto. Du vil ikke længere blive bedt om at angive en token ved login.', + 'enabled' => '2-factor godkendelse er blevet aktiveret på din konto! Fra nu af, når du logger ind, vil du blive bedt om at angive koden genereret af din enhed.', + 'invalid' => 'Den angivne token var ugyldig.', + 'setup' => [ + 'title' => 'Opsætning af 2-factor godkendelse', + 'help' => 'Kan ikke scanne koden? Indtast koden nedenfor i din applikation:', + 'field' => 'Indtast token', + ], + 'disable' => [ + 'title' => 'Deaktiver 2-factor godkendelse', + 'field' => 'Indtast token', + ], + ], +]; diff --git a/lang/da/dashboard/index.php b/lang/da/dashboard/index.php new file mode 100644 index 000000000..64aa7faf9 --- /dev/null +++ b/lang/da/dashboard/index.php @@ -0,0 +1,8 @@ + 'Søg efter servere...', + 'no_matches' => 'Der blev ikke fundet nogen servere, der matcher de angivne søgekriterier.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Hukommelse', +]; diff --git a/lang/da/exceptions.php b/lang/da/exceptions.php new file mode 100644 index 000000000..544bec581 --- /dev/null +++ b/lang/da/exceptions.php @@ -0,0 +1,55 @@ + 'Der opstod en fejl under forsøget på at kommunikere med daemonen, hvilket resulterede i en HTTP/:code responskode. Denne fejl er blevet logget.', + 'node' => [ + 'servers_attached' => 'En node må ikke have nogen servere tilknyttet for at kunne slettes.', + 'daemon_off_config_updated' => 'Daemon konfiguration er blevet opdateret, men der opstod en fejl under forsøget på automatisk at opdatere konfigurationsfilen på daemonen. Du skal manuelt opdatere konfigurationsfilen (config.yml) for at daemonen kan anvende disse ændringer.', + ], + 'allocations' => [ + 'server_using' => 'En server er i øjeblikket tildelt denne tildeling. En tildeling kan kun slettes, hvis ingen server i øjeblikket er tildelt.', + 'too_many_ports' => 'Tilføjede af flere end 1000 porte i en enkelt række ad gangen understøttes ikke.', + 'invalid_mapping' => 'Den angivne kortlægning for :port var ugyldig og kunne ikke behandles.', + 'cidr_out_of_range' => 'CIDR notation tillader kun masker mellem /25 og /32.', + 'port_out_of_range' => 'Portene i en tildeling skal være større end 1024 og mindre end eller lig med 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'Et æg med aktive servere tilknyttet kan ikke slettes fra panelet.', + 'invalid_copy_id' => 'Ægget valgt til kopiering af et script fra eksisterer ikke, eller kopierer et script selv.', + 'has_children' => 'Dette æg er forælder til et eller flere andre æg. Slet disse æg, før du sletter dette æg.', + ], + 'variables' => [ + 'env_not_unique' => 'Environment variable :name skal være unik for dette æg.', + 'reserved_name' => 'Environment variable :name er beskyttet og kan ikke bruges som en variabel.', + 'bad_validation_rule' => 'Valideringsreglen ":rule" er ikke en gyldig regel for denne applikation.', + ], + 'importer' => [ + 'json_error' => 'Der skete en fejl under forsøget på at parse JSON-filen: :error.', + 'file_error' => 'JSON filen var ikke gyldig.', + 'invalid_json_provided' => 'JSON filen er ikke i et format, der kan genkendes.', + ], + 'subusers' => [ + 'editing_self' => 'Ændring af din egen subbrugerkonto er ikke tilladt.', + 'user_is_owner' => 'Du kan ikke tilføje server ejeren som en subbruger til denne server.', + 'subuser_exists' => 'En bruger med denne e-mailadresse er allerede tildelt som en subbruger til denne server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Du kan ikke slette en database host server, der har aktive databaser tilknyttet.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'Det maksimale interval for en kædet opgave er 15 minutter.', + ], + 'locations' => [ + 'has_nodes' => 'Kan ikke slette en lokation, der har aktive noder tilknyttet.', + ], + 'users' => [ + 'node_revocation_failed' => 'Kunne ikke tilbagekalde nøgler på Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'Kunne ikke finde nogle noder, der opfylder kravene for automatisk implementering.', + 'no_viable_allocations' => 'Ingen tildeling, der opfylder kravene for automatisk implementering, blev fundet.', + ], + 'api' => [ + 'resource_not_found' => 'Den anmodede ressource findes ikke på denne server.', + ], +]; diff --git a/lang/da/pagination.php b/lang/da/pagination.php new file mode 100644 index 000000000..73b9aa368 --- /dev/null +++ b/lang/da/pagination.php @@ -0,0 +1,17 @@ + '« Forrige', + 'next' => 'Næste »', +]; diff --git a/lang/da/passwords.php b/lang/da/passwords.php new file mode 100644 index 000000000..dda647b03 --- /dev/null +++ b/lang/da/passwords.php @@ -0,0 +1,19 @@ + 'Adgangskode skal være mindst seks tegn lang og matche bekræftelsen.', + 'reset' => 'Din adgangskode er blevet nulstillet!', + 'sent' => 'Vi har sendt dig en e-mail med et link til at nulstille din adgangskode!', + 'token' => 'Denne adgangskode nulstillings token er ugyldig.', + 'user' => 'Vi kan ikke finde en bruger med den e-mailadresse.', +]; diff --git a/lang/da/server/users.php b/lang/da/server/users.php new file mode 100644 index 000000000..628e31703 --- /dev/null +++ b/lang/da/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Tillader adgang til websocket for denne server.', + 'control_console' => 'Tillader brugeren at sende data til serverkonsollen.', + 'control_start' => 'Tillader brugeren at starte serveren', + 'control_stop' => 'Tillader brugeren at stoppe serveren.', + 'control_restart' => 'Tillader brugeren at genstarte serveren.', + 'control_kill' => 'Tillader brugeren at dræbe serveren.', + 'user_create' => 'Tillader brugeren at oprette nye brugerkonti til serveren.', + 'user_read' => 'Tillader brugeren tilladelse til at se brugere, der er tilknyttet denne server.', + 'user_update' => 'Tillader brugeren at ændre andre brugere, der er tilknyttet denne server.', + 'user_delete' => 'Tillader brugeren at slette andre brugere, der er tilknyttet denne server.', + 'file_create' => 'Tillader brugeren tilladelse til at oprette nye filer og mapper.', + 'file_read' => 'Tillader brugeren at se filer og mapper, der er tilknyttet denne serverinstans, samt se deres indhold.', + 'file_update' => 'Tillader brugeren at opdatere filer og mapper, der er tilknyttet serveren.', + 'file_delete' => 'Tillader brugeren at slette filer og mapper.', + 'file_archive' => 'Tillader brugeren at oprette filarkiver og udpakke eksisterende arkiver.', + 'file_sftp' => 'Tillader brugeren at udføre de ovennævnte filhandlinger ved hjælp af en SFTP-klient.', + 'allocation_read' => 'Tillader adgang til serverens styringssider for tildelinger.', + 'allocation_update' => 'Tillader brugeren tilladelse til at foretage ændringer i serverens tildelinger.', + 'database_create' => 'Tillader brugeren tilladelse til at oprette en ny database til serveren.', + 'database_read' => 'Tillader brugeren tilladelse til at se server databaser.', + 'database_update' => 'Tillader en bruger tilladelse til at foretage ændringer i en database. Hvis brugeren ikke har tilladelsen "Vis adgangskode" vil de heller ikke kunne ændre adgangskoden.', + 'database_delete' => 'Tillader en bruger tilladelse til at slette en database instans.', + 'database_view_password' => 'Tillader en bruger tilladelse til at se en database adgangskode i systemet.', + 'schedule_create' => 'Tillader en bruger at oprette en ny tidsplan for serveren.', + 'schedule_read' => 'Tillader en bruger tilladelse til at se tidsplaner for en server.', + 'schedule_update' => 'Tillader en bruger tilladelse til at foretage ændringer i en eksisterende server tidsplan.', + 'schedule_delete' => 'Tillader en bruger at slette en tidsplan for serveren.', + ], +]; diff --git a/lang/da/strings.php b/lang/da/strings.php new file mode 100644 index 000000000..4b161ab03 --- /dev/null +++ b/lang/da/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email addresse', + 'user_identifier' => 'Brugernavn eller Email', + 'password' => 'Adgangskode', + 'new_password' => 'Ny adgangskode', + 'confirm_password' => 'Bekræft adgangskode', + 'login' => 'Log ind', + 'home' => 'Hjem', + 'servers' => 'Servere', + 'id' => 'ID', + 'name' => 'Navn', + 'node' => 'Node', + 'connection' => 'Forbindelse', + 'memory' => 'Hukommelse', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Søg', + 'suspended' => 'Suspenderet', + 'account' => 'Konto', + 'security' => 'Sikkerhed', + 'ip' => 'IP Adresse', + 'last_activity' => 'Sidste aktivitet', + 'revoke' => 'Tilbagekald', + '2fa_token' => 'Godkendelses Token', + 'submit' => 'Send', + 'close' => 'Luk', + 'settings' => 'Indstillinger', + 'configuration' => 'Konfiguration', + 'sftp' => 'SFTP', + 'databases' => 'Databaser', + 'memo' => 'Memo', + 'created' => 'Oprettet', + 'expires' => 'Udløber', + 'public_key' => 'Token', + 'api_access' => 'Api Adgang', + 'never' => 'aldrig', + 'sign_out' => 'Log ud', + 'admin_control' => 'Admin Kontrol', + 'required' => 'Påkrævet', + 'port' => 'Port', + 'username' => 'Brugernavn', + 'database' => 'Database', + 'new' => 'Ny', + 'danger' => 'Fare', + 'create' => 'Opret', + 'select_all' => 'Vælg Alle', + 'select_none' => 'Vælg Ingen', + 'alias' => 'Alias', + 'primary' => 'Primær', + 'make_primary' => 'Gør til primær', + 'none' => 'Ingen', + 'cancel' => 'Annuller', + 'created_at' => 'Oprettet den', + 'action' => 'Handling', + 'data' => 'Data', + 'queued' => 'I kø', + 'last_run' => 'Sidste Kørsel', + 'next_run' => 'Næste Kørsel', + 'not_run_yet' => 'Ikke Kørt Endnu', + 'yes' => 'Ja', + 'no' => 'Nej', + 'delete' => 'Slet', + '2fa' => '2FA', + 'logout' => 'Log ud', + 'admin_cp' => 'Admin Kontrolpanel', + 'optional' => 'Valgfri', + 'read_only' => 'Skrivebeskyttet', + 'relation' => 'Relation', + 'owner' => 'Ejer', + 'admin' => 'Admin', + 'subuser' => 'Underbruger', + 'captcha_invalid' => 'Den givne captcha var ugyldig.', + 'tasks' => 'Opgaver', + 'seconds' => 'Sekunder', + 'minutes' => 'Minutter', + 'under_maintenance' => 'Under vedligeholdelse', + 'days' => [ + 'sun' => 'Søndag', + 'mon' => 'Mandag', + 'tues' => 'Tirsdag', + 'wed' => 'Onsdag', + 'thurs' => 'Torsdag', + 'fri' => 'Fredag', + 'sat' => 'Lørdag', + ], + 'last_used' => 'Sidst brugt', + 'enable' => 'Aktiver', + 'disable' => 'Deaktiver', + 'save' => 'Gem', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/da/validation.php b/lang/da/validation.php new file mode 100644 index 000000000..e2a449c61 --- /dev/null +++ b/lang/da/validation.php @@ -0,0 +1,106 @@ + ':attribute skal accepteres.', + 'active_url' => ':attribute er ikke en gyldig URL.', + 'after' => ':attribute skal være en dato efter :date.', + 'after_or_equal' => ':attribute skal være en dato efter eller lig med :date.', + 'alpha' => ':attribute må kun indeholde bogstaver.', + 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal og bindestreger.', + 'alpha_num' => ':attribute må kun indeholde bogstaver og tal.', + 'array' => ':attribute skal være et array.', + 'before' => ':attribute skal være en dato før :date.', + 'before_or_equal' => ':attribute skal være en dato før eller lig med :date.', + 'between' => [ + 'numeric' => ':attribute skal være mellem :min og :max.', + 'file' => ':attribute skal være mellem :min og :max kilobytes.', + 'string' => ':attribute skal være mellem :min og :max tegn.', + 'array' => ':attribute skal have mellem :min og :max elementer.', + ], + 'boolean' => ':attribute skal være sandt eller falsk.', + 'confirmed' => ':attribute bekræftelse stemmer ikke overens.', + 'date' => ':attribute er ikke en gyldig dato.', + 'date_format' => ':attribute stemmer ikke overens med formatet :format.', + 'different' => ':attribute og :other skal være forskellige.', + 'digits' => ':attribute skal være :digits cifre.', + 'digits_between' => ':attribute skal være mellem :min og :max cifre.', + 'dimensions' => ':attribute har ugyldige billeddimensioner.', + 'distinct' => ':attribute feltet har en duplikeret værdi.', + 'email' => ':attribute skal være en gyldig emailadresse.', + 'exists' => 'Den valgte :attribute er ugyldig.', + 'file' => ':attribute skal være en fil.', + 'filled' => ':attribute skal udfyldes.', + 'image' => ':attribute skal være et billede.', + 'in' => 'Den valgte :attribute er ugyldig.', + 'in_array' => ':attribute feltet findes ikke i :other.', + 'integer' => ':attribute skal være et heltal.', + 'ip' => ':attribute skal være en gyldig IP-adresse.', + 'json' => ':attribute skal være en gyldig JSON-streng.', + 'max' => [ + 'numeric' => ':attribute må ikke være større end :max.', + 'file' => ':attribute må ikke være større end :max kilobytes.', + 'string' => ':attribute må ikke være større end :max tegn.', + 'array' => ':attribute må ikke have mere end :max elementer.', + ], + 'mimes' => ':attribute skal være en fil af typen: :values.', + 'mimetypes' => ':attribute skal være en fil af typen: :values.', + 'min' => [ + 'numeric' => ':attribute skal være mindst :min.', + 'file' => ':attribute skal være mindst :min kilobytes.', + 'string' => ':attribute skal være mindst :min tegn.', + 'array' => ':attribute skal have mindst :min elementer.', + ], + 'not_in' => 'Den valgte :attribute er ugyldig.', + 'numeric' => ':attribute skal være et tal.', + 'present' => ':attribute feltet skal være til stede.', + 'regex' => ':attribute formatet er ugyldigt.', + 'required' => ':attribute skal udfyldes.', + 'required_if' => ':attribute skal udfyldes når :other er :value.', + 'required_unless' => ':attribute skal udfyldes medmindre :other findes i :values.', + 'required_with' => ':attribute skal udfyldes når :values er til stede.', + 'required_with_all' => ':attribute skal udfyldes når :values er til stede.', + 'required_without' => ':attribute skal udfyldes når :values ikke er til stede.', + 'required_without_all' => ':attribute skal udfyldes når ingen af :values er til stede.', + 'same' => ':attribute og :other skal matche.', + 'size' => [ + 'numeric' => ':attribute skal være :size.', + 'file' => ':attribute skal være :size kilobytes.', + 'string' => ':attribute skal være :size tegn.', + 'array' => ':attribute skal indeholde :size elementer.', + ], + 'string' => ':attribute skal være en streng.', + 'timezone' => ':attribute skal være en gyldig tidszone.', + 'unique' => ':attribute er allerede taget.', + 'uploaded' => ':attribute fejlede uploade.', + 'url' => ':attribute formatet er ugyldigt.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variabel', + 'invalid_password' => 'Den angivne adgangskode var ugyldig for denne konto.', + ], +]; diff --git a/lang/de/activity.php b/lang/de/activity.php new file mode 100644 index 000000000..1de87ddc0 --- /dev/null +++ b/lang/de/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Fehler beim Anmelden', + 'success' => 'Angemeldet', + 'password-reset' => 'Passwort zurücksetzen', + 'reset-password' => 'Angefordertes Passwort zurücksetzen', + 'checkpoint' => 'Zwei-Faktor-Authentifizierung angefordert', + 'recovery-token' => 'Zwei-Faktor-Wiederherstellungs-Token verwendet', + 'token' => '2FA Überprüfung abgeschlossen', + 'ip-blocked' => 'Blockierte Anfrage von nicht gelisteter IP-Adresse für :identifier', + 'sftp' => [ + 'fail' => 'Fehlgeschlagener SFTP Login', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'E-Mail von :old auf :new geändert', + 'password-changed' => 'Passwort geändert', + ], + 'api-key' => [ + 'create' => 'Neuer API-Schlüssel :identifier erstellt', + 'delete' => 'API-Schlüssel :identifier gelöscht', + ], + 'ssh-key' => [ + 'create' => 'SSH-Schlüssel :fingerprint zum Konto hinzugefügt', + 'delete' => 'SSH-Schlüssel :fingerprint aus dem Konto entfernt', + ], + 'two-factor' => [ + 'create' => 'Zwei-Faktor-Authentifizierung aktiviert', + 'delete' => 'Zwei-Faktor-Authentifizierung deaktiviert', + ], + ], + 'server' => [ + 'reinstall' => 'Server neuinstalliert', + 'console' => [ + 'command' => '":command" auf dem Server ausgeführt', + ], + 'power' => [ + 'start' => 'Server gestartet', + 'stop' => 'Server gestoppt', + 'restart' => 'Server neu gestartet', + 'kill' => 'Serverprozess beendet', + ], + 'backup' => [ + 'download' => 'Backup :name heruntergeladen', + 'delete' => 'Backup :name gelöscht', + 'restore' => 'Backup :name wiederhergestellt (gelöschte Dateien: :truncate)', + 'restore-complete' => 'Wiederherstellen des Backups :name abgeschlossen', + 'restore-failed' => 'Wiederherstellen des Backups :name fehlgeschlagen', + 'start' => 'Ein neues Backup :name gestartet', + 'complete' => 'Backup :name als abgeschlossen markiert', + 'fail' => 'Backup :name als fehlgeschlagen markiert', + 'lock' => 'Backup :name gesperrt', + 'unlock' => 'Backup :name entsperrt', + ], + 'database' => [ + 'create' => 'Datenbank :name erstellt', + 'rotate-password' => 'Passwort für Datenbank :name zurückgesetzt', + 'delete' => 'Datenbank :name gelöscht', + ], + 'file' => [ + 'compress_one' => ':directory:file komprimiert', + 'compress_other' => ':count Dateien in :directory komprimiert', + 'read' => 'Inhalt von :file angesehen', + 'copy' => 'Kopie von :file erstellt', + 'create-directory' => 'Verzeichnis :directory:name erstellt', + 'decompress' => ':files in :directory entpackt', + 'delete_one' => ':directory:files.0 gelöscht', + 'delete_other' => ':count Dateien in :directory gelöscht', + 'download' => ':file heruntergeladen', + 'pull' => 'Remote-Datei von :url nach :directory heruntergeladen', + 'rename_one' => ':directory:files.0.from nach :directory:files.0.to umbenannt', + 'rename_other' => ':count Dateien in :directory umbenannt', + 'write' => 'Neuen Inhalt in :file geschrieben', + 'upload' => 'Datei-Upload begonnen', + 'uploaded' => ':directory:file hochgeladen', + ], + 'sftp' => [ + 'denied' => 'SFTP-Zugriff aufgrund von fehlenden Berechtigungen blockiert', + 'create_one' => ':files.0 erstellt', + 'create_other' => ':count Dateien erstellt', + 'write_one' => 'Inhalt von :files.0 geändert', + 'write_other' => 'Inhalt von :count Dateien geändert', + 'delete_one' => ':files.0 gelöscht', + 'delete_other' => ':count Dateien gelöscht', + 'create-directory_one' => 'Verzeichnis :files.0 erstellt', + 'create-directory_other' => ':count Verzeichnisse erstellt', + 'rename_one' => ':files.0.from zu :files.0.to umbenannt', + 'rename_other' => ':count Dateien umbenannt oder verschoben', + ], + 'allocation' => [ + 'create' => ':allocation zum Server hinzugefügt', + 'notes' => 'Notizen für :allocation von ":old" auf ":new" aktualisiert', + 'primary' => ':allocation als primäre Server-Zuweisung festgelegt', + 'delete' => ':allocation gelöscht', + ], + 'schedule' => [ + 'create' => 'Zeitplan :name erstellt', + 'update' => 'Zeitplan :name aktualisiert', + 'execute' => 'Zeitplan :name manuell ausgeführt', + 'delete' => 'Zeitplan :name gelöscht', + ], + 'task' => [ + 'create' => 'Erstellte eine neue ":action"-Aufgabe für den :name Zeitplan', + 'update' => 'Aktualisierte die ":action" Aufgabe für den :name Zeitplan', + 'delete' => 'Aufgabe für den Zeitplan :name gelöscht', + ], + 'settings' => [ + 'rename' => 'Server von :old zu :new umbenannt', + 'description' => 'Serverbeschreibung von :old zu :new geändert', + ], + 'startup' => [ + 'edit' => 'Die Variable :variable von ":old" zu ":new" geändert', + 'image' => 'Das Docker-Image für den Server von :old auf :new aktualisiert', + ], + 'subuser' => [ + 'create' => ':email als Unterbenutzer hinzugefügt', + 'update' => 'Die Unterbenutzer-Berechtigungen für :email aktualisiert', + 'delete' => 'Unterbenutzer :email entfernt', + ], + ], +]; diff --git a/lang/de/admin/eggs.php b/lang/de/admin/eggs.php new file mode 100644 index 000000000..8fc69bce5 --- /dev/null +++ b/lang/de/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Das Egg und die zugehörigen Variablen wurden erfolgreich importiert.', + 'updated_via_import' => 'Dieses Egg wurde mit der angegebenen Datei aktualisiert.', + 'deleted' => 'Das angeforderte Egg wurde erfolgreich aus dem Panel gelöscht.', + 'updated' => 'Egg Konfiguration wurde erfolgreich aktualisiert.', + 'script_updated' => 'Das Egg-Installationsskript wurde aktualisiert und wird bei der Installation von Servern ausgeführt.', + 'egg_created' => 'Ein neues Egg wurde erfolgreich erstellt.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'Die Variable ":variable" wurde gelöscht und wird nach einem Serverneustart nicht mehr verfügbar sein.', + 'variable_updated' => 'Die Variable ":variable" wurde aktualisiert. Du musst alle Server neustarten, die diese Variable verwenden, um die Änderungen zu übernehmen.', + 'variable_created' => 'Neue Variable wurde erfolgreich erstellt und diesem Egg zugewiesen.', + ], + ], +]; diff --git a/lang/de/admin/node.php b/lang/de/admin/node.php new file mode 100644 index 000000000..65148ec3a --- /dev/null +++ b/lang/de/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'Der angegebene FQDN oder die IP-Adresse wird nicht mit einer gültigen IP-Adresse aufgelöst.', + 'fqdn_required_for_ssl' => 'Um SSL für diese Node nutzen zu können, ist ein FQDN erforderlich, welcher eine öffentliche IP besitzt.', + ], + 'notices' => [ + 'allocations_added' => 'Zuweisungen wurden erfolgreich zu dieser Node hinzugefügt.', + 'node_deleted' => 'Node wurde erfolgreich aus dem Panel entfernt.', + 'node_created' => 'Neue Node erfolgreich erstellt. Du kannst den Daemon auf dieser Maschine automatisch konfigurieren, indem du die Registerkarte "Konfiguration" aufrufst. Bevor du Server hinzufügen kannst, musst du zuerst mindestens eine IP-Adresse und einen Port zuweisen.', + 'node_updated' => 'Nodeinformationen wurden aktualisiert. Wenn irgendwelche Daemon-Einstellungen geändert wurden, musst du den Node neu starten, damit diese Änderungen wirksam werden.', + 'unallocated_deleted' => 'Alle nicht zugewiesenen Ports für :ip gelöscht.', + ], +]; diff --git a/lang/de/admin/server.php b/lang/de/admin/server.php new file mode 100644 index 000000000..c6eea1b80 --- /dev/null +++ b/lang/de/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Du versuchst die Standard-Zuweisung für diesen Server zu löschen, es gibt aber keine Fallback-Zuweisung.', + 'marked_as_failed' => 'Dieser Server wurde als fehlgeschlagen einer vorherigen Installation markiert. Der aktuelle Status kann in diesem Zustand nicht umgestellt werden.', + 'bad_variable' => 'Es gab einen Validierungsfehler mit der Variable :name', + 'daemon_exception' => 'Es gab einen Fehler beim Versuch mit dem Daemon zu kommunizieren, was zu einem HTTP/:code Antwortcode führte. Diese Ausnahme wurde protokolliert. (Anfrage-Id: :request_id)', + 'default_allocation_not_found' => 'Die angeforderte Standard-Zuweisung wurde in den Zuweisungen dieses Servers nicht gefunden.', + ], + 'alerts' => [ + 'startup_changed' => 'Die Start-Konfiguration für diesen Server wurde aktualisiert. Wenn das Egg dieses Servers geändert wurde, wird jetzt eine Neuinstallation durchgeführt.', + 'server_deleted' => 'Der Server wurde erfolgreich aus dem System gelöscht.', + 'server_created' => 'Server wurde erfolgreich im Panel erstellt. Bitte gib dem Daemon ein paar Minuten, um diesen Server zu installieren.', + 'build_updated' => 'Die Build-Details für diesen Server wurden aktualisiert. Einige Änderungen erfordern möglicherweise einen Neustart, um wirksam zu werden.', + 'suspension_toggled' => 'Serversperrung wurde auf :status gesetzt.', + 'rebuild_on_boot' => 'Dieser Server benötigt einen Container-Rebuild. Dieser wird beim nächsten Start des Servers durchgeführt.', + 'install_toggled' => 'Der Installationsstatus für diesen Server wurde umgestellt.', + 'server_reinstalled' => 'Dieser Server steht für eine Neuinstallation in der Warteschlange.', + 'details_updated' => 'Serverdetails wurden erfolgreich aktualisiert.', + 'docker_image_updated' => 'Das Standard-Docker-Image für diesen Server wurde erfolgreich geändert. Um diese Änderung zu übernehmen, muss ein Neustart durchgeführt werden.', + 'node_required' => 'Du musst mindestens eine Node konfiguriert haben, bevor Du einen Server zu diesem Panel hinzufügen kannst.', + 'transfer_nodes_required' => 'Du musst mindestens zwei Nodes konfiguriert haben, bevor Du Server übertragen kannst.', + 'transfer_started' => 'Server-Übertragung wurde gestartet.', + 'transfer_not_viable' => 'Die ausgewählte Node verfügt nicht über den benötigten Arbeitsspeicher oder Speicherplatz, um diesen Server unterzubringen.', + ], +]; diff --git a/lang/de/admin/user.php b/lang/de/admin/user.php new file mode 100644 index 000000000..4357657dc --- /dev/null +++ b/lang/de/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Ein Benutzer mit aktiven Servern, die mit seinem Konto verbunden sind, kann nicht gelöscht werden. Bitte lösche seine Server, bevor du fortfährst.', + 'user_is_self' => 'Du kannst dein eigenes Benutzerkonto nicht löschen.', + ], + 'notices' => [ + 'account_created' => 'Konto wurde erfolgreich erstellt.', + 'account_updated' => 'Konto wurde erfolgreich aktualisiert.', + ], +]; diff --git a/lang/de/auth.php b/lang/de/auth.php new file mode 100644 index 000000000..05667cd39 --- /dev/null +++ b/lang/de/auth.php @@ -0,0 +1,27 @@ + 'Anmelden', + 'go_to_login' => 'Zum Login', + 'failed' => 'Es wurde kein Konto mit diesen Zugangsdaten gefunden.', + + 'forgot_password' => [ + 'label' => 'Passwort vergessen?', + 'label_help' => 'Geben Sie Ihre E-Mail Adresse ein, um Anweisungen zum Zurücksetzen Ihres Passworts zu erhalten.', + 'button' => 'Konto wiederherstellen', + ], + + 'reset_password' => [ + 'button' => 'Zurücksetzen und Anmelden', + ], + + 'two_factor' => [ + 'label' => '2-Faktor Token', + 'label_help' => 'Dieses Konto benötigt eine zweite Authentifizierungsebene, um fortzufahren. Bitte geben Sie den von Ihrem Gerät generierten Code ein, um diesen Login abzuschließen.', + 'checkpoint_failed' => 'Der Zwei-Faktor-Authentifizierungstoken war ungültig.', + ], + + 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuche es in :seconds Sekunden erneut.', + 'password_requirements' => 'Das Passwort muss mindestens 8 Zeichen lang sein und sollte auf dieser Seite eindeutig sein.', + '2fa_must_be_enabled' => 'Der Administrator hat festgelegt, dass die 2-Faktor-Authentifizierung für deinen Account angeschaltet sein muss, damit du dieses Panel nutzen kannst.', +]; diff --git a/lang/de/command/messages.php b/lang/de/command/messages.php new file mode 100644 index 000000000..3b41a329f --- /dev/null +++ b/lang/de/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Gib einen Benutzernamen, eine Benutzer-ID oder eine E-Mail Adresse ein', + 'select_search_user' => 'ID des zu löschenden Benutzers (Gib \'0\' ein, um erneut zu suchen)', + 'deleted' => 'Benutzerkonto erfolgreich aus dem Panel gelöscht.', + 'confirm_delete' => 'Bist du sicher, dass du dieses Benutzerkonto aus dem Panel löschen möchtest?', + 'no_users_found' => 'Für den angegebenen Suchbegriff wurden keine Benutzerkonten gefunden.', + 'multiple_found' => 'Mehrere Konten für den angegebenen Benutzer wurden gefunden, ein Benutzer konnte wegen der --no-interaction Flag nicht gelöscht werden.', + 'ask_admin' => 'Ist dieses Benutzerkonto ein Administratorkonto?', + 'ask_email' => 'E-Mail Adresse', + 'ask_username' => 'Benutzername', + 'ask_name_first' => 'Vorname', + 'ask_name_last' => 'Nachname', + 'ask_password' => 'Passwort', + 'ask_password_tip' => 'Wenn du ein Benutzerkonto mit einem zufälligen Passwort erstellen möchtest, führe diesen Befehl (CTRL+C) erneut aus und gebe die `--no-password` Flag an.', + 'ask_password_help' => 'Passwörter müssen mindestens 8 Zeichen lang sein und mindestens einen Großbuchstaben und eine Zahl enthalten.', + '2fa_help_text' => [ + 'Dieser Befehl wird die 2-Faktor-Authentifizierung für das Benutzerkonto deaktivieren, wenn sie aktiviert ist. Dies sollte nur als Wiederherstellungsbefehl verwendet werden, wenn der Benutzer aus seinem Konto ausgeschlossen ist.', + 'Wenn das nicht das ist, was Sie tun wollten, drücken Sie STRG+C, um diesen Prozess zu beenden.', + ], + '2fa_disabled' => '2-Faktor-Authentifizierung wurde für :email deaktiviert.', + ], + 'schedule' => [ + 'output_line' => 'Versenden des Auftrags für die erste Aufgabe in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Service-Backup-Datei :file wird gelöscht.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild Anfrage für ":name" (#:id) im Node ":node" fehlgeschlagen mit Fehler: :message', + 'reinstall' => [ + 'failed' => 'Neustart der Anfrage für ":name" (#:id) im Node ":node" fehlgeschlagen mit Fehler: :message', + 'confirm' => 'Du bist dabei, eine Gruppe von Servern neu zu installieren. Möchtest du fortfahren?', + ], + 'power' => [ + 'confirm' => 'Du bist dabei, eine :action auf :count Servern auszuführen. Möchtest du fortfahren?', + 'action_failed' => 'Power-Aktion für ":name" (#:id) auf Node ":node" fehlgeschlagen mit Fehler: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (z.B. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Benutzername', + 'ask_smtp_password' => 'SMTP Passwort', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpunkt', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Schlüssel', + 'ask_driver' => 'Welcher Treiber soll für das Versenden von E-Mails verwendet werden?', + 'ask_mail_from' => 'E-Mail Adresse, von der die E-Mails stammen sollten', + 'ask_mail_name' => 'Name, von denen E-Mails erscheinen sollen', + 'ask_encryption' => 'Zu verwendende Verschlüsselungsmethode', + ], + ], +]; diff --git a/lang/de/dashboard/account.php b/lang/de/dashboard/account.php new file mode 100644 index 000000000..447cb11ee --- /dev/null +++ b/lang/de/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Aktualisiere deine E-Mail', + 'updated' => 'Deine E-Mail-Adresse wurde aktualisiert.', + ], + 'password' => [ + 'title' => 'Ändere dein Passwort', + 'requirements' => 'Dein neues Passwort sollte mindestens 8 Zeichen lang sein.', + 'updated' => 'Dein Passwort wurde aktualisiert.', + ], + 'two_factor' => [ + 'button' => '2-Faktor-Authentifizierung konfigurieren', + 'disabled' => 'Zwei-Faktor-Authentifizierung wurde auf deinem Konto deaktiviert. Du wirst beim Anmelden nicht mehr aufgefordert, einen Token anzugeben.', + 'enabled' => 'Zwei-Faktor-Authentifizierung wurde auf deinem Konto aktiviert! Ab sofort musst du beim Einloggen den von deinem Gerät generierten Code zur Verfügung stellen.', + 'invalid' => 'Der angegebene Token ist ungültig.', + 'setup' => [ + 'title' => 'Zwei-Faktor-Authentifizierung einrichten', + 'help' => 'Code kann nicht gescannt werden? Gebe den unteren Code in deine Anwendung ein:', + 'field' => 'Token eingeben', + ], + 'disable' => [ + 'title' => 'Zwei-Faktor-Authentifizierung deaktivieren', + 'field' => 'Token eingeben', + ], + ], +]; diff --git a/lang/de/dashboard/index.php b/lang/de/dashboard/index.php new file mode 100644 index 000000000..a0899439f --- /dev/null +++ b/lang/de/dashboard/index.php @@ -0,0 +1,8 @@ + 'Nach Servern suchen...', + 'no_matches' => 'Es wurden keine Server gefunden, die den angegebenen Suchkriterien entsprechen.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Arbeitsspeicher', +]; diff --git a/lang/de/exceptions.php b/lang/de/exceptions.php new file mode 100644 index 000000000..72193edd9 --- /dev/null +++ b/lang/de/exceptions.php @@ -0,0 +1,55 @@ + 'Beim Versuch, mit dem Daemon zu kommunizieren, gab es einen Fehler, was zu einem HTTP/:code Antwortcode führte. Dieser Fehler wurde protokolliert.', + 'node' => [ + 'servers_attached' => 'Ein Node darf keine Server haben, die mit ihm verknüpft sind, um gelöscht zu werden.', + 'daemon_off_config_updated' => 'Die Daemon Konfiguration wurde aktualisiert, jedoch gab es einen Fehler bei dem Versuch, die Konfigurationsdatei des Daemon automatisch zu aktualisieren. Du musst die Konfigurationsdatei (config.yml) manuell anpassen, damit die Änderungen übernommen werden.', + ], + 'allocations' => [ + 'server_using' => 'Derzeit ist ein Server dieser Zuweisung zugewiesen. Eine Zuordnung kann nur gelöscht werden, wenn derzeit kein Server zugewiesen ist.', + 'too_many_ports' => 'Das Hinzufügen von mehr als 1000 Ports in einem einzigen Bereich wird nicht unterstützt.', + 'invalid_mapping' => 'Das für :port angegebene Mapping war ungültig und konnte nicht verarbeitet werden.', + 'cidr_out_of_range' => 'CIDR-Notation erlaubt nur Masken zwischen /25 und /32.', + 'port_out_of_range' => 'Ports in einer Zuteilung müssen größer als 1024 und kleiner oder gleich 65535 sein.', + ], + 'egg' => [ + 'delete_has_servers' => 'Ein Egg mit aktiven Servern kann nicht aus dem Panel gelöscht werden.', + 'invalid_copy_id' => 'Das Egg, das für das Kopieren eines Skripts ausgewählt wurde, existiert entweder nicht oder kopiert ein Skript selbst.', + 'has_children' => 'Dieses Egg ist ein Eltern-Ei für ein oder mehreren anderen Eiern. Bitte löschen Sie diese Eier bevor Sie dieses Ei löschen.', + ], + 'variables' => [ + 'env_not_unique' => 'Die Umgebungsvariable :name muss für dieses Egg eindeutig sein.', + 'reserved_name' => 'Die Umgebungsvariable :name ist geschützt und kann nicht einer Variable zugewiesen werden.', + 'bad_validation_rule' => 'Die Validierungsregel ":rule" ist keine gültige Regel für diese Anwendung.', + ], + 'importer' => [ + 'json_error' => 'Beim Verarbeiten der JSON-Datei ist ein Fehler aufgetreten: :error.', + 'file_error' => 'Die angegebene JSON-Datei war ungültig.', + 'invalid_json_provided' => 'Die angegebene JSON-Datei ist nicht in einem Format, das erkannt werden kann.', + ], + 'subusers' => [ + 'editing_self' => 'Das Bearbeiten Ihres eigenen Unterbenutzerkontos ist nicht zulässig.', + 'user_is_owner' => 'Du kannst den Serverbesitzer nicht als Unterbenutzer für diesen Server hinzufügen.', + 'subuser_exists' => 'Ein Benutzer mit dieser E-Mail Adresse ist bereits als Unterbenutzer für diesen Server zugewiesen.', + ], + 'databases' => [ + 'delete_has_databases' => 'Ein Datenbank Host kann nicht gelöscht werden, der aktive Datenbanken enthält.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'Die maximale Intervallzeit einer verketteten Aufgabe beträgt 15 Minuten.', + ], + 'locations' => [ + 'has_nodes' => 'Ein Standort, der aktive Nodes hat, kann nicht gelöscht werden.', + ], + 'users' => [ + 'node_revocation_failed' => 'Fehler beim Widerrufen der Schlüssel auf Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'Es konnten keine Nodes gefunden werden, die die für den automatischen Einsatz angegebenen Anforderungen erfüllen.', + 'no_viable_allocations' => 'Es wurden keine Zuweisungen gefunden, die die Anforderungen für den automatischen Einsatz erfüllen.', + ], + 'api' => [ + 'resource_not_found' => 'Die angeforderte Ressource existiert nicht auf diesem Server.', + ], +]; diff --git a/lang/de/pagination.php b/lang/de/pagination.php new file mode 100644 index 000000000..25253b187 --- /dev/null +++ b/lang/de/pagination.php @@ -0,0 +1,17 @@ + '« Zurück', + 'next' => 'Weiter »', +]; diff --git a/lang/de/passwords.php b/lang/de/passwords.php new file mode 100644 index 000000000..c9225b9dd --- /dev/null +++ b/lang/de/passwords.php @@ -0,0 +1,19 @@ + 'Passwörter müssen aus mindestens 6 Zeichen bestehen und übereinstimmen.', + 'reset' => 'Dein Passwort wurde zurückgesetzt!', + 'sent' => 'Wir haben dir einen Link zum Zurücksetzen des Passworts per E-Mail zugesendet!', + 'token' => 'Das Passwort Reset Token ist ungültig.', + 'user' => 'Es konnte kein Benutzer mit dieser E-Mail-Adresse gefunden werden.', +]; diff --git a/lang/de/server/users.php b/lang/de/server/users.php new file mode 100644 index 000000000..4543b2afa --- /dev/null +++ b/lang/de/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Erlaubt den Zugriff auf den Websocket für diesen Server.', + 'control_console' => 'Erlaubt dem Benutzer, Daten an die Server-Konsole zu senden.', + 'control_start' => 'Erlaubt dem Benutzer, die Serverinstanz zu starten.', + 'control_stop' => 'Erlaubt dem Benutzer, die Serverinstanz zu stoppen.', + 'control_restart' => 'Erlaubt dem Benutzer, die Serverinstanz neu zu starten.', + 'control_kill' => 'Ermöglicht dem Benutzer, die Server-Instanz zu beenden.', + 'user_create' => 'Erlaubt dem Benutzer, neue Benutzerkonten für den Server zu erstellen.', + 'user_read' => 'Ermöglicht dem Benutzer, die mit diesem Server verbundenen Benutzer anzuzeigen.', + 'user_update' => 'Ermöglicht dem Benutzer, andere mit diesem Server verbundene Benutzer zu ändern.', + 'user_delete' => 'Ermöglicht dem Benutzer, andere mit diesem Server verbundene Benutzer zu löschen.', + 'file_create' => 'Ermöglicht dem Benutzer, neue Dateien und Verzeichnisse zu erstellen.', + 'file_read' => 'Ermöglicht dem Benutzer, Dateien und Ordner zu sehen, die dieser Serverinstanz zugeordnet sind, sowie deren Inhalt anzuzeigen.', + 'file_update' => 'Ermöglicht dem Benutzer, Dateien und Ordner zu aktualisieren, die dem Server zugeordnet sind.', + 'file_delete' => 'Ermöglicht dem Benutzer, Dateien und Verzeichnisse zu löschen.', + 'file_archive' => 'Ermöglicht dem Benutzer, Datei-Archive zu erstellen und bestehende Archive zu dekomprimieren.', + 'file_sftp' => 'Ermöglicht dem Benutzer, die obigen Dateiaktionen mit einem SFTP-Client auszuführen.', + 'allocation_read' => 'Ermöglicht den Zugriff auf die Seiten zur Verwaltung der Server-Zuordnung.', + 'allocation_update' => 'Ermöglicht dem Benutzer, die Zuweisungen des Servers zu modifizieren.', + 'database_create' => 'Ermöglicht dem Benutzer die Berechtigung zum Erstellen einer neuen Datenbank für den Server.', + 'database_read' => 'Ermöglicht dem Benutzer, die Serverdatenbanken anzuzeigen.', + 'database_update' => 'Ermöglicht einem Benutzer, Änderungen an einer Datenbank vorzunehmen. Wenn der Benutzer nicht über die "Passwort anzeigen" Berechtigung verfügt, kann er das Passwort nicht ändern.', + 'database_delete' => 'Ermöglicht einem Benutzer, eine Datenbankinstanz zu löschen.', + 'database_view_password' => 'Ermöglicht einem Benutzer, ein Datenbankpasswort im System anzuzeigen.', + 'schedule_create' => 'Ermöglicht einem Benutzer, einen neuen Zeitplan für den Server zu erstellen.', + 'schedule_read' => 'Ermöglicht der Benutzer-Berechtigung, Zeitpläne für einen Server anzuzeigen.', + 'schedule_update' => 'Ermöglicht einem Benutzer, Änderungen an einem bestehenden Serverplan vorzunehmen.', + 'schedule_delete' => 'Ermöglicht einem Benutzer, einen Zeitplan für den Server zu löschen.', + ], +]; diff --git a/lang/de/strings.php b/lang/de/strings.php new file mode 100644 index 000000000..ed26122b0 --- /dev/null +++ b/lang/de/strings.php @@ -0,0 +1,95 @@ + 'E-Mail', + 'email_address' => 'E-Mail Adresse', + 'user_identifier' => 'Benutzername oder E-Mail', + 'password' => 'Passwort', + 'new_password' => 'Neues Passwort', + 'confirm_password' => 'Neues Passwort bestätigen', + 'login' => 'Anmelden', + 'home' => 'Startseite', + 'servers' => 'Server', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Verbindung', + 'memory' => 'Arbeitsspeicher', + 'cpu' => 'CPU', + 'disk' => 'Festplatte', + 'status' => 'Status', + 'search' => 'Suchen', + 'suspended' => 'Gesperrt', + 'account' => 'Konto', + 'security' => 'Sicherheit', + 'ip' => 'IP-Adresse', + 'last_activity' => 'Letzte Aktivität', + 'revoke' => 'Widerrufen', + '2fa_token' => 'Authentifizierungs-Token', + 'submit' => 'Bestätigen', + 'close' => 'Schließen', + 'settings' => 'Einstellungen', + 'configuration' => 'Konfiguration', + 'sftp' => 'SFTP', + 'databases' => 'Datenbanken', + 'memo' => 'Notiz', + 'created' => 'Erstellt', + 'expires' => 'Gültig bis', + 'public_key' => 'Token', + 'api_access' => 'Api-Zugriff', + 'never' => 'niemals', + 'sign_out' => 'Abmelden', + 'admin_control' => 'Admin Verwaltung', + 'required' => 'Erforderlich', + 'port' => 'Port', + 'username' => 'Benutzername', + 'database' => 'Datenbank', + 'new' => 'Neu', + 'danger' => 'Achtung', + 'create' => 'Erstellen', + 'select_all' => 'Alle auswählen', + 'select_none' => 'Nichts auswählen', + 'alias' => 'Alias', + 'primary' => 'Primär', + 'make_primary' => 'Als Primär festlegen', + 'none' => 'Keine', + 'cancel' => 'Abbrechen', + 'created_at' => 'Erstellt am', + 'action' => 'Aktion', + 'data' => 'Daten', + 'queued' => 'In der Warteschlange', + 'last_run' => 'Zuletzt ausgeführt', + 'next_run' => 'Nächste Ausführung', + 'not_run_yet' => 'Noch nicht ausgeführt', + 'yes' => 'Ja', + 'no' => 'Nein', + 'delete' => 'Löschen', + '2fa' => '2FA', + 'logout' => 'Abmelden', + 'admin_cp' => 'Admin Verwaltung', + 'optional' => 'Optional', + 'read_only' => 'Nur lesen', + 'relation' => 'Beziehung', + 'owner' => 'Besitzer', + 'admin' => 'Admin', + 'subuser' => 'Unterbenutzer', + 'captcha_invalid' => 'Das angegebene Captcha ist ungültig.', + 'tasks' => 'Aufgaben', + 'seconds' => 'Sekunden', + 'minutes' => 'Minuten', + 'under_maintenance' => 'Wartungsarbeiten', + 'days' => [ + 'sun' => 'Sonntag', + 'mon' => 'Montag', + 'tues' => 'Dienstag', + 'wed' => 'Mittwoch', + 'thurs' => 'Donnerstag', + 'fri' => 'Freitag', + 'sat' => 'Samstag', + ], + 'last_used' => 'Zuletzt verwendet', + 'enable' => 'Aktivieren', + 'disable' => 'Deaktivieren', + 'save' => 'Speichern', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/de/validation.php b/lang/de/validation.php new file mode 100644 index 000000000..a7a30cc01 --- /dev/null +++ b/lang/de/validation.php @@ -0,0 +1,106 @@ + ':attribute muss akzeptiert werden.', + 'active_url' => ':attribute ist keine gültige URL.', + 'after' => ':attribute muss ein Datum nach :date sein.', + 'after_or_equal' => ':attribute muss ein Datum nach oder gleich :date sein.', + 'alpha' => ':attribute darf nur Buchstaben enthalten.', + 'alpha_dash' => ':attribute darf nur Buchstaben, Zahlen und Bindestriche enthalten.', + 'alpha_num' => ':attribute darf nur Buchstaben und Zahlen enthalten.', + 'array' => ':attribute muss ein Array sein.', + 'before' => ':attribute muss ein Datum vor :date sein.', + 'before_or_equal' => ':attribute muss ein Datum vor oder gleich :date sein.', + 'between' => [ + 'numeric' => ':attribute muss zwischen :min und :max liegen.', + 'file' => ':attribute muss zwischen :min und :max Kilobytes liegen.', + 'string' => ':attribute muss zwischen :min und :max Zeichen haben.', + 'array' => ':attribute muss zwischen :min und :max Elemente haben.', + ], + 'boolean' => ':attribute muss wahr oder falsch sein.', + 'confirmed' => 'Die :attribute Bestätigung stimmt nicht überein.', + 'date' => ':attribute ist kein gültiges Datum.', + 'date_format' => ':attribute entspricht nicht dem Format :format.', + 'different' => ':attribute und :other müssen unterschiedlich sein.', + 'digits' => ':attribute muss :digits Zeichen enthalten.', + 'digits_between' => ':attribute muss zwischen :min und :max Zeichen haben.', + 'dimensions' => ':attribute hat ungültige Bildabmessungen.', + 'distinct' => ':attribute Feld hat einen doppelten Wert.', + 'email' => ':attribute muss eine gültige E-Mail Adresse sein.', + 'exists' => ':attribute ist ungültig.', + 'file' => ':attribute muss eine Datei sein.', + 'filled' => ':attribute Feld ist erforderlich.', + 'image' => ':attribute muss ein Bild sein.', + 'in' => 'Das ausgewählte :attribute ist ungültig.', + 'in_array' => ':attribute Feld existiert nicht in :other.', + 'integer' => ':attribute muss eine ganze Zahl sein.', + 'ip' => ':attribute muss eine gültige IP-Adresse sein.', + 'json' => ':attribute muss ein gültiger JSON-String sein.', + 'max' => [ + 'numeric' => ':attribute darf nicht größer als :max sein.', + 'file' => ':attribute darf nicht größer als :max Kilobytes sein.', + 'string' => ':attribute darf nicht größer als :max Zeichen sein.', + 'array' => ':attribute darf nicht mehr als :max Elemente haben.', + ], + 'mimes' => ':attribute muss den Dateityp :values haben.', + 'mimetypes' => ':attribute muss den Dateityp :values haben.', + 'min' => [ + 'numeric' => ':attribute muss mindestens :min sein.', + 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', + 'string' => ':attribute muss mindestens :min Zeichen enthalten.', + 'array' => ':attribute muss mindestens :min Elemente haben.', + ], + 'not_in' => 'Das ausgewählte :attribute ist ungültig.', + 'numeric' => ':attribute muss eine Zahl sein.', + 'present' => ':attribute Feld muss vorhanden sein.', + 'regex' => ':attribute Format ist ungültig.', + 'required' => ':attribute Feld ist erforderlich.', + 'required_if' => ':attribute muss angegeben werden, wenn :other :value ist.', + 'required_unless' => ':attribute Feld ist erforderlich, sofern :other nicht in :values ist.', + 'required_with' => ':attribute muss angegeben werden, wenn :values vorhanden ist.', + 'required_with_all' => ':attribute muss angegeben werden, wenn :values vorhanden ist.', + 'required_without' => ':attribute muss angegeben werden, wenn :values nicht vorhanden sind.', + 'required_without_all' => ':attribute muss angegeben werden, wenn keine :values vorhanden sind.', + 'same' => ':attribute und :other müssen übereinstimmen.', + 'size' => [ + 'numeric' => ':attribute muss :size sein.', + 'file' => ':attribute muss :size Kilobyte groß sein.', + 'string' => ':attribute muss :size Zeichen haben.', + 'array' => ':attribute muss :size Elemente enthalten.', + ], + 'string' => ':attribute muss ein String sein.', + 'timezone' => ':attribute muss eine gültige Zone sein.', + 'unique' => ':attribute ist bereits vergeben.', + 'uploaded' => ':attribute konnte nicht hochgeladen werden.', + 'url' => ':attribute Format ist ungültig.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env Variable', + 'invalid_password' => 'Das angegebene Passwort war für dieses Konto ungültig.', + ], +]; diff --git a/lang/el/activity.php b/lang/el/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/el/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/el/admin/eggs.php b/lang/el/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/el/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/el/admin/node.php b/lang/el/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/el/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/el/admin/server.php b/lang/el/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/el/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/el/admin/user.php b/lang/el/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/el/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/el/auth.php b/lang/el/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/el/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/el/command/messages.php b/lang/el/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/el/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/el/dashboard/account.php b/lang/el/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/el/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/el/dashboard/index.php b/lang/el/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/el/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/el/exceptions.php b/lang/el/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/el/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/el/pagination.php b/lang/el/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/el/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/el/passwords.php b/lang/el/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/el/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/el/server/users.php b/lang/el/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/el/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/el/strings.php b/lang/el/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/el/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/el/validation.php b/lang/el/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/el/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/en/passwords.php b/lang/en/passwords.php index 76a6959b7..bde70f915 100644 --- a/lang/en/passwords.php +++ b/lang/en/passwords.php @@ -15,5 +15,5 @@ return [ 'reset' => 'Your password has been reset!', 'sent' => 'We have e-mailed your password reset link!', 'token' => 'This password reset token is invalid.', - 'user' => "We can't find a user with that e-mail address.", + 'user' => 'We can\'t find a user with that e-mail address.', ]; diff --git a/lang/es/activity.php b/lang/es/activity.php new file mode 100644 index 000000000..68f9fa468 --- /dev/null +++ b/lang/es/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Inicio de sesión fallido', + 'success' => 'Sesión iniciada', + 'password-reset' => 'Restablecimiento de contraseña', + 'reset-password' => 'Solicitud de restablecimiento de contraseña', + 'checkpoint' => 'Solicitud de autenticación de dos factores', + 'recovery-token' => 'Token de recuperación de dos factores utilizado', + 'token' => 'Resuelto desafío de dos factores', + 'ip-blocked' => 'Solicitud bloqueada desde la dirección IP no listada para :identifier', + 'sftp' => [ + 'fail' => 'Inicio de sesión SFTP fallido', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Cambio de correo electrónico de :old a :new', + 'password-changed' => 'Contraseña cambiada', + ], + 'api-key' => [ + 'create' => 'Se creó una nueva clave API :identifier', + 'delete' => 'Se eliminó la clave API :identifier', + ], + 'ssh-key' => [ + 'create' => 'Se agregó la clave SSH :fingerprint a la cuenta', + 'delete' => 'Se eliminó la clave SSH :fingerprint de la cuenta', + ], + 'two-factor' => [ + 'create' => 'Se habilitó la autenticación de dos factores', + 'delete' => 'Se deshabilitó la autenticación de dos factores', + ], + ], + 'server' => [ + 'reinstall' => 'Servidor reinstalado', + 'console' => [ + 'command' => 'Ejecutado ":command" en el servidor', + ], + 'power' => [ + 'start' => 'Iniciado el servidor', + 'stop' => 'Detenido el servidor', + 'restart' => 'Reiniciado el servidor', + 'kill' => 'Finalizado el proceso del servidor', + ], + 'backup' => [ + 'download' => 'Descargada la copia de seguridad :name', + 'delete' => 'Eliminada la copia de seguridad :name', + 'restore' => 'Restaurada la copia de seguridad :name (archivos eliminados: :truncate)', + 'restore-complete' => 'Restauración completa de la copia de seguridad :name', + 'restore-failed' => 'Falló la restauración de la copia de seguridad :name', + 'start' => 'Iniciada una nueva copia de seguridad :name', + 'complete' => 'Marcada la copia de seguridad :name como completada', + 'fail' => 'Marcada la copia de seguridad :name como fallida', + 'lock' => 'Bloqueada la copia de seguridad :name', + 'unlock' => 'Desbloqueada la copia de seguridad :name', + ], + 'database' => [ + 'create' => 'Creada nueva base de datos :name', + 'rotate-password' => 'Contraseña rotada para la base de datos :name', + 'delete' => 'Eliminada la base de datos :name', + ], + 'file' => [ + 'compress_one' => 'Comprimido :directory:file', + 'compress_other' => 'Comprimidos :count archivos en :directory', + 'read' => 'Visto el contenido de :file', + 'copy' => 'Creada una copia de :file', + 'create-directory' => 'Creado directorio :directory:name', + 'decompress' => 'Descomprimidos :files en :directory', + 'delete_one' => 'Eliminado :directory:files.0', + 'delete_other' => 'Eliminados :count archivos en :directory', + 'download' => 'Descargado :file', + 'pull' => 'Descargado un archivo remoto desde :url a :directory', + 'rename_one' => 'Renombrado :directory:files.0.from a :directory:files.0.to', + 'rename_other' => 'Renombrados :count archivos en :directory', + 'write' => 'Escrito nuevo contenido en :file', + 'upload' => 'Iniciada una carga de archivo', + 'uploaded' => 'Cargado :directory:file', + ], + 'sftp' => [ + 'denied' => 'Acceso SFTP bloqueado debido a permisos', + 'create_one' => 'Creado :files.0', + 'create_other' => 'Creados :count nuevos archivos', + 'write_one' => 'Modificado el contenido de :files.0', + 'write_other' => 'Modificado el contenido de :count archivos', + 'delete_one' => 'Eliminado :files.0', + 'delete_other' => 'Eliminados :count archivos', + 'create-directory_one' => 'Creado el directorio :files.0', + 'create-directory_other' => 'Creados :count directorios', + 'rename_one' => 'Renombrado :files.0.from a :files.0.to', + 'rename_other' => 'Renombrados o movidos :count archivos', + ], + 'allocation' => [ + 'create' => 'Añadida :allocation al servidor', + 'notes' => 'Actualizadas las notas para :allocation de ":old" a ":new"', + 'primary' => 'Establecida :allocation como la asignación primaria del servidor', + 'delete' => 'Eliminada la asignación :allocation', + ], + 'schedule' => [ + 'create' => 'Creado el horario :name', + 'update' => 'Actualizado el horario :name', + 'execute' => 'Ejecutado manualmente el horario :name', + 'delete' => 'Eliminado el horario :name', + ], + 'task' => [ + 'create' => 'Creada una nueva tarea ":action" para el horario :name', + 'update' => 'Actualizada la tarea ":action" para el horario :name', + 'delete' => 'Eliminada una tarea para el horario :name', + ], + 'settings' => [ + 'rename' => 'Renombrado el servidor de :old a :new', + 'description' => 'Cambiada la descripción del servidor de :old a :new', + ], + 'startup' => [ + 'edit' => 'Cambiada la variable :variable de ":old" a ":new"', + 'image' => 'Actualizada la imagen de Docker del servidor de :old a :new', + ], + 'subuser' => [ + 'create' => 'Añadido :email como subusuario', + 'update' => 'Actualizados los permisos del subusuario :email', + 'delete' => 'Eliminado :email como subusuario', + ], + ], +]; diff --git a/lang/es/admin/eggs.php b/lang/es/admin/eggs.php new file mode 100644 index 000000000..ebb5c948c --- /dev/null +++ b/lang/es/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'El Egg y sus variables asociadas se importaron correctamente.', + 'updated_via_import' => 'Este Egg se ha actualizado utilizando el archivo proporcionado.', + 'deleted' => 'Se eliminó correctamente el Egg solicitado del Panel.', + 'updated' => 'La configuración del Egg se ha actualizado correctamente.', + 'script_updated' => 'El script de instalación del Egg se ha actualizado y se ejecutará cada vez que se instalen servidores.', + 'egg_created' => 'Se ha creado un nuevo Egg correctamente. Deberás reiniciar cualquier daemon en ejecución para aplicar este nuevo Egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'La variable ":variable" se ha eliminado y ya no estará disponible para los servidores una vez reconstruidos.', + 'variable_updated' => 'La variable ":variable" se ha actualizado. Deberás reconstruir cualquier servidor que utilice esta variable para aplicar los cambios.', + 'variable_created' => 'Se ha creado correctamente una nueva variable y se ha asignado a este Egg.', + ], + ], +]; diff --git a/lang/es/admin/node.php b/lang/es/admin/node.php new file mode 100644 index 000000000..95556057b --- /dev/null +++ b/lang/es/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'El FQDN o la dirección IP proporcionada no se resuelve a una dirección IP válida.', + 'fqdn_required_for_ssl' => 'Se requiere un nombre de dominio completo que se resuelva a una dirección IP pública para poder utilizar SSL en este nodo.', + ], + 'notices' => [ + 'allocations_added' => 'Se han añadido correctamente las asignaciones a este nodo.', + 'node_deleted' => 'El nodo se ha eliminado correctamente del panel.', + 'node_created' => 'Se ha creado correctamente un nuevo nodo. Puedes configurar automáticamente el daemon en esta máquina visitando la pestaña \'Configuración\'. Antes de poder añadir cualquier servidor, primero debes asignar al menos una dirección IP y puerto.', + 'node_updated' => 'Se ha actualizado la información del nodo. Si se cambiaron ajustes del daemon, necesitarás reiniciarlo para que los cambios surtan efecto.', + 'unallocated_deleted' => 'Se han eliminado todos los puertos no asignados para :ip.', + ], +]; diff --git a/lang/es/admin/server.php b/lang/es/admin/server.php new file mode 100644 index 000000000..38af8b29c --- /dev/null +++ b/lang/es/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Estás intentando eliminar la asignación predeterminada para este servidor pero no hay una asignación de respaldo para usar.', + 'marked_as_failed' => 'Este servidor fue marcado como que ha fallado en una instalación anterior. El estado actual no se puede cambiar en este estado.', + 'bad_variable' => 'Hubo un error de validación con la variable :name.', + 'daemon_exception' => 'Hubo una excepción al intentar comunicarse con el daemon que resultó en un código de respuesta HTTP/:code. Esta excepción ha sido registrada. (ID de solicitud: :request_id)', + 'default_allocation_not_found' => 'La asignación predeterminada solicitada no se encontró en las asignaciones de este servidor.', + ], + 'alerts' => [ + 'startup_changed' => 'La configuración de inicio de este servidor se ha actualizado. Si se cambió el huevo de este servidor, se iniciará una reinstalación ahora.', + 'server_deleted' => 'El servidor se ha eliminado correctamente del sistema.', + 'server_created' => 'El servidor se ha creado correctamente en el panel. Por favor, permite al daemon unos minutos para instalar completamente este servidor.', + 'build_updated' => 'Los detalles de construcción para este servidor se han actualizado. Algunos cambios pueden requerir un reinicio para surtir efecto.', + 'suspension_toggled' => 'El estado de suspensión del servidor se ha cambiado a :status.', + 'rebuild_on_boot' => 'Este servidor se ha marcado como que requiere una reconstrucción del contenedor Docker. Esto ocurrirá la próxima vez que se inicie el servidor.', + 'install_toggled' => 'El estado de instalación para este servidor se ha cambiado.', + 'server_reinstalled' => 'Este servidor ha sido encolado para una reinstalación que comienza ahora.', + 'details_updated' => 'Los detalles del servidor se han actualizado correctamente.', + 'docker_image_updated' => 'Se cambió con éxito la imagen Docker predeterminada para usar en este servidor. Se requiere un reinicio para aplicar este cambio.', + 'node_required' => 'Debes tener al menos un nodo configurado antes de poder añadir un servidor a este panel.', + 'transfer_nodes_required' => 'Debes tener al menos dos nodos configurados antes de poder transferir servidores.', + 'transfer_started' => 'La transferencia del servidor se ha iniciado.', + 'transfer_not_viable' => 'El nodo que seleccionaste no tiene el espacio en disco o la memoria disponible requerida para acomodar este servidor.', + ], +]; diff --git a/lang/es/admin/user.php b/lang/es/admin/user.php new file mode 100644 index 000000000..ab4373270 --- /dev/null +++ b/lang/es/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'No se puede eliminar un usuario con servidores activos asociados a su cuenta. Por favor, elimina sus servidores antes de continuar.', + 'user_is_self' => 'No se puede eliminar tu propia cuenta de usuario.', + ], + 'notices' => [ + 'account_created' => 'La cuenta se ha creado correctamente.', + 'account_updated' => 'La cuenta se ha actualizado correctamente.', + ], +]; diff --git a/lang/es/auth.php b/lang/es/auth.php new file mode 100644 index 000000000..a3c86efb4 --- /dev/null +++ b/lang/es/auth.php @@ -0,0 +1,27 @@ + 'Iniciar sesión', + 'go_to_login' => 'Ir al inicio de sesión', + 'failed' => 'No se pudo encontrar ninguna cuenta que coincida con esas credenciales.', + + 'forgot_password' => [ + 'label' => '¿Olvidaste tu contraseña?', + 'label_help' => 'Ingresa la dirección de correo electrónico de tu cuenta para recibir instrucciones sobre cómo restablecer tu contraseña.', + 'button' => 'Recuperar cuenta', + ], + + 'reset_password' => [ + 'button' => 'Restablecer e iniciar sesión', + ], + + 'two_factor' => [ + 'label' => 'Token de 2 Factores', + 'label_help' => 'Esta cuenta requiere un segundo nivel de autenticación para continuar. Por favor, ingresa el código generado por tu dispositivo para completar este inicio de sesión.', + 'checkpoint_failed' => 'El token de autenticación de dos factores no era válido.', + ], + + 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.', + 'password_requirements' => 'La contraseña debe tener al menos 8 caracteres de longitud y debe ser única para este sitio.', + '2fa_must_be_enabled' => 'El administrador ha requerido que la Autenticación de 2 Factores esté habilitada para tu cuenta para poder usar el Panel.', +]; diff --git a/lang/es/command/messages.php b/lang/es/command/messages.php new file mode 100644 index 000000000..1723749c2 --- /dev/null +++ b/lang/es/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Introduce un nombre de usuario, ID de usuario o dirección de correo electrónico', + 'select_search_user' => 'ID del usuario a eliminar (Introduce \'0\' para volver a buscar)', + 'deleted' => 'Usuario eliminado correctamente del Panel.', + 'confirm_delete' => '¿Estás seguro de que quieres eliminar este usuario del Panel?', + 'no_users_found' => 'No se encontraron usuarios para el término de búsqueda proporcionado.', + 'multiple_found' => 'Se encontraron varias cuentas para el usuario proporcionado, no se puede eliminar un usuario debido a la bandera --no-interaction.', + 'ask_admin' => '¿Es este usuario un administrador?', + 'ask_email' => 'Dirección de correo electrónico', + 'ask_username' => 'Nombre de usuario', + 'ask_name_first' => 'Nombre', + 'ask_name_last' => 'Apellido', + 'ask_password' => 'Contraseña', + 'ask_password_tip' => 'Si deseas crear una cuenta con una contraseña aleatoria enviada por correo electrónico al usuario, vuelve a ejecutar este comando (CTRL+C) y pasa la bandera `--no-password`.', + 'ask_password_help' => 'Las contraseñas deben tener al menos 8 caracteres de longitud y contener al menos una letra mayúscula y un número.', + '2fa_help_text' => [ + 'Este comando deshabilitará la autenticación de dos factores para la cuenta de un usuario si está habilitada. Esto solo debe usarse como un comando de recuperación de cuenta si el usuario está bloqueado fuera de su cuenta.', + 'Si esto no es lo que querías hacer, presiona CTRL+C para salir de este proceso.', + ], + '2fa_disabled' => 'La autenticación de dos factores ha sido desactivada para :email.', + ], + 'schedule' => [ + 'output_line' => 'Enviando trabajo para la primera tarea en `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Eliminando archivo de copia de seguridad del servicio :file.', + ], + 'server' => [ + 'rebuild_failed' => 'La solicitud de reconstrucción para ":name" (#:id) en el nodo ":node" falló con el error: :message', + 'reinstall' => [ + 'failed' => 'La solicitud de reinstalación para ":name" (#:id) en el nodo ":node" falló con el error: :message', + 'confirm' => 'Estás a punto de reinstalar contra un grupo de servidores. ¿Deseas continuar?', + ], + 'power' => [ + 'confirm' => 'Estás a punto de realizar una :action contra :count servidores. ¿Deseas continuar?', + 'action_failed' => 'La acción de energía para ":name" (#:id) en el nodo ":node" falló con el error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'Host SMTP (por ejemplo, smtp.gmail.com)', + 'ask_smtp_port' => 'Puerto SMTP', + 'ask_smtp_username' => 'Nombre de usuario SMTP', + 'ask_smtp_password' => 'Contraseña SMTP', + 'ask_mailgun_domain' => 'Dominio de Mailgun', + 'ask_mailgun_endpoint' => 'Extremo de Mailgun', + 'ask_mailgun_secret' => 'Secreto de Mailgun', + 'ask_mandrill_secret' => 'Secreto de Mandrill', + 'ask_postmark_username' => 'Clave API de Postmark', + 'ask_driver' => '¿Qué controlador debe usarse para enviar correos electrónicos?', + 'ask_mail_from' => 'Dirección de correo electrónico desde la cual deben originarse los correos electrónicos', + 'ask_mail_name' => 'Nombre que debe aparecer en los correos electrónicos', + 'ask_encryption' => 'Método de cifrado a utilizar', + ], + ], +]; diff --git a/lang/es/dashboard/account.php b/lang/es/dashboard/account.php new file mode 100644 index 000000000..df74c95d9 --- /dev/null +++ b/lang/es/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Actualizar tu correo electrónico', + 'updated' => 'Tu dirección de correo electrónico ha sido actualizada.', + ], + 'password' => [ + 'title' => 'Cambiar tu contraseña', + 'requirements' => 'Tu nueva contraseña debe tener al menos 8 caracteres de longitud.', + 'updated' => 'Tu contraseña ha sido actualizada.', + ], + 'two_factor' => [ + 'button' => 'Configurar autenticación de 2 factores', + 'disabled' => 'La autenticación de dos factores ha sido desactivada en tu cuenta. Ya no se te pedirá que proporciones un token al iniciar sesión.', + 'enabled' => '¡La autenticación de dos factores ha sido activada en tu cuenta! A partir de ahora, al iniciar sesión, se te pedirá que proporciones el código generado por tu dispositivo.', + 'invalid' => 'El token proporcionado no era válido.', + 'setup' => [ + 'title' => 'Configurar autenticación de dos factores', + 'help' => '¿No puedes escanear el código? Ingresa el código a continuación en tu aplicación:', + 'field' => 'Introduce el token', + ], + 'disable' => [ + 'title' => 'Desactivar autenticación de dos factores', + 'field' => 'Introduce el token', + ], + ], +]; diff --git a/lang/es/dashboard/index.php b/lang/es/dashboard/index.php new file mode 100644 index 000000000..d85547073 --- /dev/null +++ b/lang/es/dashboard/index.php @@ -0,0 +1,8 @@ + 'Buscar servidores...', + 'no_matches' => 'No se encontraron servidores que coincidan con los criterios de búsqueda proporcionados.', + 'cpu_title' => 'UPC', + 'memory_title' => 'Memoria', +]; diff --git a/lang/es/exceptions.php b/lang/es/exceptions.php new file mode 100644 index 000000000..14ebcfb85 --- /dev/null +++ b/lang/es/exceptions.php @@ -0,0 +1,55 @@ + 'Se produjo una excepción al intentar comunicarse con el daemon, lo que resultó en un código de respuesta HTTP/:code. Esta excepción ha sido registrada.', + 'node' => [ + 'servers_attached' => 'Un nodo no debe tener servidores vinculados a él para poder ser eliminado.', + 'daemon_off_config_updated' => 'La configuración del daemon se ha actualizado, sin embargo, se encontró un error al intentar actualizar automáticamente el archivo de configuración en el daemon. Deberás actualizar manualmente el archivo de configuración (config.yml) para que el daemon aplique estos cambios.', + ], + 'allocations' => [ + 'server_using' => 'Actualmente hay un servidor asignado a esta asignación. Una asignación solo puede ser eliminada si ningún servidor está asignado actualmente.', + 'too_many_ports' => 'Agregar más de 1000 puertos en un solo rango a la vez no está soportado.', + 'invalid_mapping' => 'El mapeo proporcionado para el puerto :port era inválido y no pudo ser procesado.', + 'cidr_out_of_range' => 'La notación CIDR solo permite máscaras entre /25 y /32.', + 'port_out_of_range' => 'Los puertos en una asignación deben ser mayores que 1024 y menores o iguales a 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'Un Huevo con servidores activos vinculados a él no puede ser eliminado del Panel.', + 'invalid_copy_id' => 'El Huevo seleccionado para copiar un script desde no existe o está copiando un script en sí mismo.', + 'has_children' => 'Este Huevo es padre de uno o más otros Huevos. Por favor, elimina esos Huevos antes de eliminar este Huevo.', + ], + 'variables' => [ + 'env_not_unique' => 'La variable de entorno :name debe ser única para este Huevo.', + 'reserved_name' => 'La variable de entorno :name está protegida y no se puede asignar a una variable.', + 'bad_validation_rule' => 'La regla de validación ":rule" no es una regla válida para esta aplicación.', + ], + 'importer' => [ + 'json_error' => 'Hubo un error al intentar analizar el archivo JSON: :error.', + 'file_error' => 'El archivo JSON proporcionado no era válido.', + 'invalid_json_provided' => 'El archivo JSON proporcionado no está en un formato que pueda ser reconocido.', + ], + 'subusers' => [ + 'editing_self' => 'No está permitido editar tu propia cuenta de subusuario.', + 'user_is_owner' => 'No puedes agregar al propietario del servidor como subusuario para este servidor.', + 'subuser_exists' => 'Ya hay un usuario con esa dirección de correo electrónico asignado como subusuario para este servidor.', + ], + 'databases' => [ + 'delete_has_databases' => 'No se puede eliminar un servidor de host de base de datos que tiene bases de datos activas vinculadas a él.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'El tiempo máximo de intervalo para una tarea encadenada es de 15 minutos.', + ], + 'locations' => [ + 'has_nodes' => 'No se puede eliminar una ubicación que tiene nodos activos vinculados a ella.', + ], + 'users' => [ + 'node_revocation_failed' => 'Error al revocar las claves en Nodo #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No se encontraron nodos que satisfagan los requisitos especificados para el despliegue automático.', + 'no_viable_allocations' => 'No se encontraron asignaciones que satisfagan los requisitos para el despliegue automático.', + ], + 'api' => [ + 'resource_not_found' => 'El recurso solicitado no existe en este servidor.', + ], +]; diff --git a/lang/es/pagination.php b/lang/es/pagination.php new file mode 100644 index 000000000..51862f2eb --- /dev/null +++ b/lang/es/pagination.php @@ -0,0 +1,17 @@ + '« Anterior', + 'next' => 'Siguiente »', +]; diff --git a/lang/es/passwords.php b/lang/es/passwords.php new file mode 100644 index 000000000..1f0855205 --- /dev/null +++ b/lang/es/passwords.php @@ -0,0 +1,19 @@ + 'Las contraseñas deben tener al menos seis caracteres y coincidir con la confirmación.', + 'reset' => '¡Tu contraseña ha sido restablecida!', + 'sent' => '¡Hemos enviado por correo electrónico el enlace para restablecer tu contraseña!', + 'token' => 'Este token de restablecimiento de contraseña no es válido.', + 'user' => 'No podemos encontrar un usuario con esa dirección de correo electrónico.', +]; diff --git a/lang/es/server/users.php b/lang/es/server/users.php new file mode 100644 index 000000000..b71f9389a --- /dev/null +++ b/lang/es/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Permite el acceso al websocket para este servidor.', + 'control_console' => 'Permite al usuario enviar datos a la consola del servidor.', + 'control_start' => 'Permite al usuario iniciar la instancia del servidor.', + 'control_stop' => 'Permite al usuario detener la instancia del servidor.', + 'control_restart' => 'Permite al usuario reiniciar la instancia del servidor.', + 'control_kill' => 'Permite al usuario eliminar la instancia del servidor.', + 'user_create' => 'Permite al usuario crear nuevas cuentas de usuario para el servidor.', + 'user_read' => 'Permite al usuario ver los usuarios asociados con este servidor.', + 'user_update' => 'Permite al usuario modificar otros usuarios asociados con este servidor.', + 'user_delete' => 'Permite al usuario eliminar otros usuarios asociados con este servidor.', + 'file_create' => 'Permite al usuario crear nuevos archivos y directorios.', + 'file_read' => 'Permite al usuario ver archivos y carpetas asociados con esta instancia de servidor, así como ver su contenido.', + 'file_update' => 'Permite al usuario actualizar archivos y carpetas asociados con el servidor.', + 'file_delete' => 'Permite al usuario eliminar archivos y directorios.', + 'file_archive' => 'Permite al usuario crear archivos de archivos y descomprimir archivos existentes.', + 'file_sftp' => 'Permite al usuario realizar las acciones de archivo anteriores utilizando un cliente SFTP.', + 'allocation_read' => 'Permite el acceso a las páginas de gestión de asignación del servidor.', + 'allocation_update' => 'Permite al usuario realizar modificaciones en las asignaciones del servidor.', + 'database_create' => 'Permite al usuario crear una nueva base de datos para el servidor.', + 'database_read' => 'Permite al usuario ver las bases de datos del servidor.', + 'database_update' => 'Permite al usuario realizar modificaciones en una base de datos. Si el usuario no tiene también el permiso de "Ver contraseña", no podrá modificar la contraseña.', + 'database_delete' => 'Permite al usuario eliminar una instancia de base de datos.', + 'database_view_password' => 'Permite al usuario ver la contraseña de una base de datos en el sistema.', + 'schedule_create' => 'Permite al usuario crear un nuevo horario para el servidor.', + 'schedule_read' => 'Permite al usuario ver los horarios de un servidor.', + 'schedule_update' => 'Permite al usuario realizar modificaciones en un horario existente del servidor.', + 'schedule_delete' => 'Permite al usuario eliminar un horario del servidor.', + ], +]; diff --git a/lang/es/strings.php b/lang/es/strings.php new file mode 100644 index 000000000..107d4deb5 --- /dev/null +++ b/lang/es/strings.php @@ -0,0 +1,95 @@ + 'Correo electrónico', + 'email_address' => 'Dirección de correo electrónico', + 'user_identifier' => 'Nombre de usuario o Correo electrónico', + 'password' => 'Contraseña', + 'new_password' => 'Nueva contraseña', + 'confirm_password' => 'Confirmar nueva contraseña', + 'login' => 'Iniciar sesión', + 'home' => 'Inicio', + 'servers' => 'Servidores', + 'id' => 'ID', + 'name' => 'Nombre', + 'node' => 'Nodo', + 'connection' => 'Conexión', + 'memory' => 'Memoria', + 'cpu' => 'CPU', + 'disk' => 'Disco', + 'status' => 'Estado', + 'search' => 'Buscar', + 'suspended' => 'Suspendido', + 'account' => 'Cuenta', + 'security' => 'Seguridad', + 'ip' => 'Dirección IP', + 'last_activity' => 'Última Actividad', + 'revoke' => 'Revocar', + '2fa_token' => 'Token de Autenticación', + 'submit' => 'Enviar', + 'close' => 'Cerrar', + 'settings' => 'Ajustes', + 'configuration' => 'Configuración', + 'sftp' => 'SFTP', + 'databases' => 'Bases de Datos', + 'memo' => 'Nota', + 'created' => 'Creado', + 'expires' => 'Caduca', + 'public_key' => 'Token', + 'api_access' => 'Acceso API', + 'never' => 'nunca', + 'sign_out' => 'Cerrar sesión', + 'admin_control' => 'Control de Administrador', + 'required' => 'Requerido', + 'port' => 'Puerto', + 'username' => 'Nombre de usuario', + 'database' => 'Base de datos', + 'new' => 'Nuevo', + 'danger' => 'Peligro', + 'create' => 'Crear', + 'select_all' => 'Seleccionar Todo', + 'select_none' => 'Seleccionar Ninguno', + 'alias' => 'Alias', + 'primary' => 'Principal', + 'make_primary' => 'Hacer Principal', + 'none' => 'Ninguno', + 'cancel' => 'Cancelar', + 'created_at' => 'Creado en', + 'action' => 'Acción', + 'data' => 'Datos', + 'queued' => 'En cola', + 'last_run' => 'Última Ejecución', + 'next_run' => 'Próxima Ejecución', + 'not_run_yet' => 'Todavía no se ha ejecutado', + 'yes' => 'Sí', + 'no' => 'No', + 'delete' => 'Eliminar', + '2fa' => '2FA', + 'logout' => 'Cerrar sesión', + 'admin_cp' => 'Panel de Control de Administrador', + 'optional' => 'Opcional', + 'read_only' => 'Solo Lectura', + 'relation' => 'Relación', + 'owner' => 'Propietario', + 'admin' => 'Administrador', + 'subuser' => 'Subusuario', + 'captcha_invalid' => 'El captcha proporcionado no es válido.', + 'tasks' => 'Tareas', + 'seconds' => 'Segundos', + 'minutes' => 'Minutos', + 'under_maintenance' => 'En Mantenimiento', + 'days' => [ + 'sun' => 'Domingo', + 'mon' => 'Lunes', + 'tues' => 'Martes', + 'wed' => 'Miércoles', + 'thurs' => 'Jueves', + 'fri' => 'Viernes', + 'sat' => 'Sábado', + ], + 'last_used' => 'Último Uso', + 'enable' => 'Activar', + 'disable' => 'Desactivar', + 'save' => 'Guardar', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/es/validation.php b/lang/es/validation.php new file mode 100644 index 000000000..c5b76a490 --- /dev/null +++ b/lang/es/validation.php @@ -0,0 +1,106 @@ + 'El campo :attribute debe ser aceptado.', + 'active_url' => 'El campo :attribute no es una URL válida.', + 'after' => 'El campo :attribute debe ser una fecha posterior a :date.', + 'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.', + 'alpha' => 'El campo :attribute solo puede contener letras.', + 'alpha_dash' => 'El campo :attribute solo puede contener letras, números y guiones.', + 'alpha_num' => 'El campo :attribute solo puede contener letras y números.', + 'array' => 'El campo :attribute debe ser un conjunto.', + 'before' => 'El campo :attribute debe ser una fecha anterior a :date.', + 'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.', + 'between' => [ + 'numeric' => 'El campo :attribute debe estar entre :min y :max.', + 'file' => 'El campo :attribute debe tener entre :min y :max kilobytes.', + 'string' => 'El campo :attribute debe tener entre :min y :max caracteres.', + 'array' => 'El campo :attribute debe tener entre :min y :max elementos.', + ], + 'boolean' => 'El campo :attribute debe ser verdadero o falso.', + 'confirmed' => 'La confirmación de :attribute no coincide.', + 'date' => 'El campo :attribute no es una fecha válida.', + 'date_format' => 'El campo :attribute no coincide con el formato :format.', + 'different' => 'Los campos :attribute y :other deben ser diferentes.', + 'digits' => 'El campo :attribute debe tener :digits dígitos.', + 'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.', + 'dimensions' => 'Las dimensiones de la imagen :attribute no son válidas.', + 'distinct' => 'El campo :attribute tiene un valor duplicado.', + 'email' => 'El campo :attribute debe ser una dirección de correo electrónico válida.', + 'exists' => 'El :attribute seleccionado no es válido.', + 'file' => 'El campo :attribute debe ser un archivo.', + 'filled' => 'El campo :attribute es obligatorio.', + 'image' => 'El campo :attribute debe ser una imagen.', + 'in' => 'El :attribute seleccionado no es válido.', + 'in_array' => 'El campo :attribute no existe en :other.', + 'integer' => 'El campo :attribute debe ser un número entero.', + 'ip' => 'El campo :attribute debe ser una dirección IP válida.', + 'json' => 'El campo :attribute debe ser una cadena JSON válida.', + 'max' => [ + 'numeric' => 'El campo :attribute no debe ser mayor que :max.', + 'file' => 'El tamaño del archivo :attribute no debe ser mayor que :max kilobytes.', + 'string' => 'El campo :attribute no debe contener más de :max caracteres.', + 'array' => 'El campo :attribute no debe contener más de :max elementos.', + ], + 'mimes' => 'El campo :attribute debe ser un archivo del tipo: :values.', + 'mimetypes' => 'El campo :attribute debe ser un archivo del tipo: :values.', + 'min' => [ + 'numeric' => 'El campo :attribute debe tener al menos :min.', + 'file' => 'El tamaño del archivo :attribute debe ser al menos :min kilobytes.', + 'string' => 'El campo :attribute debe tener al menos :min caracteres.', + 'array' => 'El campo :attribute debe tener al menos :min elementos.', + ], + 'not_in' => 'El campo :attribute seleccionado no es válido.', + 'numeric' => 'El campo :attribute debe ser un número.', + 'present' => 'El campo :attribute debe estar presente.', + 'regex' => 'El formato del campo :attribute no es válido.', + 'required' => 'El campo :attribute es obligatorio.', + 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', + 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', + 'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.', + 'required_with_all' => 'El campo :attribute es obligatorio cuando :values está presente.', + 'required_without' => 'El campo :attribute es obligatorio cuando :values no está presente.', + 'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values está presente.', + 'same' => 'Los campos :attribute y :other deben coincidir.', + 'size' => [ + 'numeric' => 'El campo :attribute debe ser :size.', + 'file' => 'El campo :attribute debe tener :size kilobytes.', + 'string' => 'El campo :attribute debe tener :size caracteres.', + 'array' => 'El campo :attribute debe contener :size elementos.', + ], + 'string' => 'El campo :attribute debe ser una cadena de texto.', + 'timezone' => 'El campo :attribute debe ser una zona horaria válida.', + 'unique' => 'El valor del campo :attribute ya ha sido tomado.', + 'uploaded' => 'La carga del archivo :attribute ha fallado.', + 'url' => 'El formato de :attribute no es válido.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => 'Variable :env', + 'invalid_password' => 'La contraseña proporcionada no es válida para esta cuenta.', + ], +]; diff --git a/lang/fi/activity.php b/lang/fi/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/fi/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/fi/admin/eggs.php b/lang/fi/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/fi/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/fi/admin/node.php b/lang/fi/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/fi/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/fi/admin/server.php b/lang/fi/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/fi/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/fi/admin/user.php b/lang/fi/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/fi/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/fi/auth.php b/lang/fi/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/fi/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/fi/command/messages.php b/lang/fi/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/fi/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/fi/dashboard/account.php b/lang/fi/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/fi/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/fi/dashboard/index.php b/lang/fi/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/fi/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/fi/exceptions.php b/lang/fi/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/fi/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/fi/pagination.php b/lang/fi/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/fi/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/fi/passwords.php b/lang/fi/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/fi/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/fi/server/users.php b/lang/fi/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/fi/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/fi/strings.php b/lang/fi/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/fi/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/fi/validation.php b/lang/fi/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/fi/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/fr/activity.php b/lang/fr/activity.php new file mode 100644 index 000000000..cddbedb77 --- /dev/null +++ b/lang/fr/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Échec de la connexion', + 'success' => 'Connecté', + 'password-reset' => 'Réinitialisation du mot de passe', + 'reset-password' => 'Demande de réinitialisation de mot de passe', + 'checkpoint' => 'Authentification à deux facteurs demandée', + 'recovery-token' => 'Jeton de récupération à deux facteurs utilisé', + 'token' => 'Défi à deux facteurs résolu', + 'ip-blocked' => 'Demande bloquée provenant d\'une adresse IP non répertoriée pour :identifier', + 'sftp' => [ + 'fail' => 'Échec de la connexion SFTP', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changement d\'adresse électronique de :old à :new', + 'password-changed' => 'Mot de passe modifié', + ], + 'api-key' => [ + 'create' => 'Création d\'une nouvelle clé API :identifiant', + 'delete' => 'Clé API supprimée :identifiant', + ], + 'ssh-key' => [ + 'create' => 'Ajout de la clé SSH :fingerprint au compte', + 'delete' => 'Suppression de la clé SSH :fingerprint du compte', + ], + 'two-factor' => [ + 'create' => 'Activation de l\'authentification à deux facteurs', + 'delete' => 'Authentification à deux facteurs désactivée', + ], + ], + 'server' => [ + 'reinstall' => 'Serveur réinstallé', + 'console' => [ + 'command' => '":command" exécutée sur le serveur', + ], + 'power' => [ + 'start' => 'Le serveur a été démarré', + 'stop' => 'Le serveur a été arrêté', + 'restart' => 'Le serveur a été redémarré', + 'kill' => 'Processus du serveur tué', + ], + 'backup' => [ + 'download' => 'Sauvegarde :name téléchargée', + 'delete' => 'Sauvegarde :name supprimée', + 'restore' => 'Sauvegarde :name restaurée (fichiers supprimés: :truncate)', + 'restore-complete' => 'Restauration de la sauvegarde :name terminée', + 'restore-failed' => 'Échec de la restauration de la sauvegarde :name', + 'start' => 'Lancement d\'une nouvelle sauvegarde :name', + 'complete' => 'La sauvegarde :name a été marquée comme terminée', + 'fail' => 'La sauvegarde :name a échoué', + 'lock' => 'La sauvegarde :name est verrouillée', + 'unlock' => 'La sauvegarde :name a été déverrouillée', + ], + 'database' => [ + 'create' => 'Nouvelle base de données créée :name', + 'rotate-password' => 'Mot de passe renouvelé pour la base de données :name', + 'delete' => 'Base de données :name supprimée', + ], + 'file' => [ + 'compress_one' => ':directory:file compressé', + 'compress_other' => ':count fichiers compressés dans :directory', + 'read' => 'Consulté le contenu de :file', + 'copy' => 'Copie de :file créée', + 'create-directory' => 'Répertoire :directory:name créé', + 'decompress' => 'Décompressé :files dans :directory', + 'delete_one' => 'Supprimé :directory:files.0', + 'delete_other' => ':count fichiers supprimés dans :directory', + 'download' => ':file téléchargé', + 'pull' => 'Téléchargé un fichier distant depuis :url vers :directory', + 'rename_one' => ':directory:files.0.from renommé en :directory:files.0.to', + 'rename_other' => ':count fichiers renommés dans :directory', + 'write' => 'Nouveau contenu :file écrit', + 'upload' => 'Début du téléversement', + 'uploaded' => 'Ajouté (upload) :directory:file', + ], + 'sftp' => [ + 'denied' => 'Accès SFTP bloqué en raison d\'autorisations', + 'create_one' => ':files.0 créés', + 'create_other' => ':count nouveaux fichiers ont été créés', + 'write_one' => 'Modification du contenu de :files.0', + 'write_other' => ':count fichiers ont été modifiés', + 'delete_one' => 'Suppression de :files.0', + 'delete_other' => 'Suppression de :count fichiers', + 'create-directory_one' => 'Création du dossier :files.0', + 'create-directory_other' => ':count dossier ont été créé', + 'rename_one' => 'Le fichier a été renommé de :files.0.from à :files.0.to', + 'rename_other' => ':count fichiers ont été renommés ou déplacés', + ], + 'allocation' => [ + 'create' => ':allocation a été ajoutée au serveur', + 'notes' => 'Mise à jour des notes pour :allocation de ":old" à ":new"', + 'primary' => 'Changement de :allocation en tant qu\'allocation principale du serveur', + 'delete' => 'Suppression de l\'allocation :allocation', + ], + 'schedule' => [ + 'create' => 'Création de la planification :name', + 'update' => 'Modification de la planification :name', + 'execute' => 'Exécution manuelle de la planification :name', + 'delete' => 'Suppression de la planification :name', + ], + 'task' => [ + 'create' => 'Création d\'une nouvelle tâche ":action" pour la planification :name', + 'update' => 'Modification de la tâche ":action" pour la planification :name', + 'delete' => 'Suppression de la planification :name', + ], + 'settings' => [ + 'rename' => 'Le serveur a été renommé de :old à :new', + 'description' => 'La description du serveur a été changée de :old à :new', + ], + 'startup' => [ + 'edit' => 'La variable ":variable" a été changée de ":old" à ":new"', + 'image' => 'L\'image Docker a été changée de :old à :new', + ], + 'subuser' => [ + 'create' => 'Ajout de :email en tant que sous-utilisateur', + 'update' => 'Modification des permissions du sous-utilisateur :email', + 'delete' => 'Suppression du sous-utilisateur :email', + ], + ], +]; diff --git a/lang/fr/admin/eggs.php b/lang/fr/admin/eggs.php new file mode 100644 index 000000000..bf1d57f0c --- /dev/null +++ b/lang/fr/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Cet Œuf et ses variables ont été importés avec succès.', + 'updated_via_import' => 'Cet Œuf a été mis à jour en utilisant le fichier fourni.', + 'deleted' => 'L\'Œuf demandé a été supprimé du panneau.', + 'updated' => 'La configuration de l\'œuf a été mise à jour avec succès.', + 'script_updated' => 'Le script d\'installation d\'oeuf a été mis à jour et s\'exécutera chaque fois que les serveurs sont installés.', + 'egg_created' => 'Un nouvel œuf a été créé avec succès. Vous devrez redémarrer tous les démons en cours d\'exécution pour appliquer ce nouvel œuf.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'La variable ":variable" a été supprimée et ne sera plus disponible pour les serveurs une fois reconstruits.', + 'variable_updated' => 'La variable ":variable" a été mise à jour. Vous devrez reconstruire tous les serveurs utilisant cette variable pour appliquer les modifications.', + 'variable_created' => 'La nouvelle variable a été créée et affectée à cet œuf.', + ], + ], +]; diff --git a/lang/fr/admin/node.php b/lang/fr/admin/node.php new file mode 100644 index 000000000..a1676324b --- /dev/null +++ b/lang/fr/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'Le nom de domaine ou l\'adresse IP fournie ne correspond pas à une adresse IP valide.', + 'fqdn_required_for_ssl' => 'Un nom de domaine qui pointe vers une adresse IP publique est nécessaire pour utiliser SSL sur ce nœud.', + ], + 'notices' => [ + 'allocations_added' => 'Les allocations ont été ajoutées à ce nœud.', + 'node_deleted' => 'Le nœud a été supprimé du panneau avec succès.', + 'node_created' => 'Nouveau nœud créé avec succès. Vous pouvez configurer automatiquement ce dernier sur cette machine en allant dans l\'onglet \'Configuration\'. Avant de pouvoir ajouter des serveurs, vous devez d\'abord allouer au moins une adresse IP et un port.', + 'node_updated' => 'Les informations sur le nœud ont été mises à jour. Si des paramètres ont été modifiés, vous devrez le redémarrer le wings pour que ces modifications prennent effet.', + 'unallocated_deleted' => 'Suppression de tous les ports non alloués pour :ip.', + ], +]; diff --git a/lang/fr/admin/server.php b/lang/fr/admin/server.php new file mode 100644 index 000000000..17b6244e4 --- /dev/null +++ b/lang/fr/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Vous essayez de supprimer l\'allocation par défaut pour ce serveur, mais il n\'y a pas d\'allocation de secours à utiliser.', + 'marked_as_failed' => 'Ce serveur a été marqué comme ayant échoué à l\'installation précédente. Le statut actuel ne peut pas être basculé dans cet état.', + 'bad_variable' => 'Il y a eu une erreur de validation avec la variable :name.', + 'daemon_exception' => 'Une erreur est survenue lors de la tentative de communication avec le démon, entraînant un code de réponse HTTP/:code. Cette exception a été enregistrée. (request id: :request_id)', + 'default_allocation_not_found' => 'L\'allocation par défaut demandée n\'a pas été trouvée dans les allocations de ce serveur.', + ], + 'alerts' => [ + 'startup_changed' => 'La configuration de démarrage de ce serveur a été mise à jour. Si l\'œuf de ce serveur a été modifié, une réinstallation aura lieu maintenant.', + 'server_deleted' => 'Le serveur a été supprimé du système avec succès.', + 'server_created' => 'Le serveur a été créé avec succès. Veuillez patienter quelques minutes avant l\'installation complète du serveur.', + 'build_updated' => 'Les détails du build de ce serveur ont été mis à jour. Certains changements peuvent nécessiter un redémarrage pour prendre effet.', + 'suspension_toggled' => 'Le statut de suspension du serveur a été changé à :status.', + 'rebuild_on_boot' => 'Ce serveur a été marqué comme nécessitant une reconstruction du conteneur Docker. Cela se produira la prochaine fois que le serveur sera démarré.', + 'install_toggled' => 'Le status d\'installation de ce serveur à bien été basculé', + 'server_reinstalled' => 'Ce serveur a été mis en file d\'attente pour le début de la réinstallation.', + 'details_updated' => 'Les détails du serveur ont été mis à jour avec succès.', + 'docker_image_updated' => 'L\'image Docker par défaut a été modifiée avec succès pour ce serveur. Un redémarrage est nécessaire pour appliquer cette modification.', + 'node_required' => 'Vous devez avoir au moins un nœud configuré avant de pouvoir ajouter des serveurs à ce panel.', + 'transfer_nodes_required' => 'Vous devez avoir au moins deux nœuds configurés avant de pouvoir transférer des serveurs.', + 'transfer_started' => 'Le transfert du serveur a été démarré.', + 'transfer_not_viable' => 'Le nœud que vous avez sélectionné ne dispose pas de l\'espace disque ou de la mémoire nécessaire pour accueillir ce serveur.', + ], +]; diff --git a/lang/fr/admin/user.php b/lang/fr/admin/user.php new file mode 100644 index 000000000..4b3d72e3e --- /dev/null +++ b/lang/fr/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Impossible de supprimer un utilisateur avec des serveurs actifs attachés à son compte. Veuillez supprimer ses serveurs avant de continuer.', + 'user_is_self' => 'Vous ne pouvez pas supprimer votre propre compte.', + ], + 'notices' => [ + 'account_created' => 'Compte créé avec succès.', + 'account_updated' => 'Compte mis à jour avec succès.', + ], +]; diff --git a/lang/fr/auth.php b/lang/fr/auth.php new file mode 100644 index 000000000..8ad4e7e78 --- /dev/null +++ b/lang/fr/auth.php @@ -0,0 +1,27 @@ + 'Se connecter', + 'go_to_login' => 'Aller à la connexion', + 'failed' => 'Aucun compte correspondant à ces identifiants n\'a été trouvé.', + + 'forgot_password' => [ + 'label' => 'Mot de passe oublié ?', + 'label_help' => 'Entrez votre adresse e-mail pour recevoir des instructions sur la réinitialisation de votre mot de passe.', + 'button' => 'Récupérer un compte', + ], + + 'reset_password' => [ + 'button' => 'Réinitialiser et se connecter', + ], + + 'two_factor' => [ + 'label' => 'Jeton 2-Factor', + 'label_help' => 'Ce compte nécessite une deuxième authentification pour continuer. Veuillez entrer le code généré par votre appareil pour terminer cette connexion.', + 'checkpoint_failed' => 'Le jeton d\'authentification à deux facteurs (2-factor) est invalide.', + ], + + 'throttle' => 'Trop de tentatives de connexion. Merci de réessayer dans :seconds secondes.', + 'password_requirements' => 'Le mot de passe doit contenir au moins 8 caractères et doit être unique à ce site.', + '2fa_must_be_enabled' => 'L\'administrateur a demandé que soit activé une double authentification pour votre compte, afin d\'utiliser le Panel', +]; diff --git a/lang/fr/command/messages.php b/lang/fr/command/messages.php new file mode 100644 index 000000000..180d1ef22 --- /dev/null +++ b/lang/fr/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Entrez un nom d\'utilisateur, un ID ou une adresse e-mail', + 'select_search_user' => 'ID de l\'utilisateur à supprimer (entrez \'0\' pour rechercher)', + 'deleted' => 'L\'utilisateur a bien été supprimé du panel', + 'confirm_delete' => 'Êtes-vous sûr de vouloir supprimer cet utilisateur du panel ?', + 'no_users_found' => 'Aucun utilisateur n\'a été trouvé pour le terme de recherche fourni.', + 'multiple_found' => 'Plusieurs comptes ont été trouvés pour l\'utilisateur fourni, impossible de supprimer un utilisateur à cause de l\'option --no-Interaction.', + 'ask_admin' => 'Cet utilisateur est-il un administrateur ?', + 'ask_email' => 'Adresse e-mail', + 'ask_username' => 'Nom d\'utilisateur', + 'ask_name_first' => 'Prénom', + 'ask_name_last' => 'Nom', + 'ask_password' => 'Mot de passe', + 'ask_password_tip' => 'Si vous souhaitez créer un compte avec un mot de passe aléatoire envoyé à l\'utilisateur, ré-exécutez cette commande (CTRL+C) et passez le paramètre `--no-password`.', + 'ask_password_help' => 'Les mots de passe doivent comporter au moins 8 caractères et contenir au moins une lettre majuscule et un chiffre.', + '2fa_help_text' => [ + 'Cette commande désactivera la double authentification pour le compte d\'un utilisateur s\'il est activé. Ceci ne devrait être utilisé comme une commande de récupération de compte que si l\'utilisateur est bloqué sur son compte.', + 'Si ce n\'étais pas ce que vous vouliez faire, appuyez sur CTRL + C pour quitter le processus.', + ], + '2fa_disabled' => 'L\'authentification à 2 facteurs a été désactivée pour :email.', + ], + 'schedule' => [ + 'output_line' => 'Envoi du travail pour la première tâche `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Suppression du fichier de sauvegarde :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Demande de Rebuild ":name" (#:id) sur le nœud ":node" échoué avec l\'erreur :message', + 'reinstall' => [ + 'failed' => 'La demande de réinstallation pour ":name" (#:id) sur le nœud ":node" a échoué avec l\'erreur : :message', + 'confirm' => 'Vous êtes sur le point de procéder à une réinstallation sur un groupe de serveurs. Voulez-vous continuer ?', + ], + 'power' => [ + 'confirm' => 'Vous êtes sur le point d\'effectuer l\'action :action sur :count serveurs. Souhaitez-vous continuer ?', + 'action_failed' => 'Demande d\'action d\'alimentation pour ":name" (#:id) sur le noeud ":node" à échoué avec l\'erreur: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'Hôte SMTP (ex: smtp.gmail.com)', + 'ask_smtp_port' => 'Port SMTP', + 'ask_smtp_username' => 'Nom d\'utilisateur SMTP', + 'ask_smtp_password' => 'Mot de passe SMTP', + 'ask_mailgun_domain' => 'Domaine Mailgun', + 'ask_mailgun_endpoint' => 'Url Mailgun', + 'ask_mailgun_secret' => 'Secret Mailgun', + 'ask_mandrill_secret' => 'Secret Mandrill', + 'ask_postmark_username' => 'Clé API Postmark', + 'ask_driver' => 'Quel pilote doit être utilisé pour envoyer des emails?', + 'ask_mail_from' => 'Les courriels de l\'adresse e-mail devraient provenir de', + 'ask_mail_name' => 'Nom à partir duquel les e-mails devraient apparaître', + 'ask_encryption' => 'Méthode de chiffrement à utiliser', + ], + ], +]; diff --git a/lang/fr/dashboard/account.php b/lang/fr/dashboard/account.php new file mode 100644 index 000000000..bdbb114a0 --- /dev/null +++ b/lang/fr/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Mettre à jour votre adresse e-mail', + 'updated' => 'Votre adresse e-mail a été mise à jour.', + ], + 'password' => [ + 'title' => 'Modifier votre mot de passe', + 'requirements' => 'Votre nouveau mot de passe doit comporter au moins 8 caractères.', + 'updated' => 'Votre mot de passe a été mis à jour.', + ], + 'two_factor' => [ + 'button' => 'Configurer l\'authentificateur à deux facteurs', + 'disabled' => 'L\'authentification à deux facteurs a été désactivée sur votre compte. Vous ne serez plus invité à fournir le code généré par votre appareil lors de votre connexion.', + 'enabled' => 'L\'authentification à deux facteurs a été activée sur votre compte ! Désormais, lorsque vous vous connectez, vous devrez fournir le code généré par votre appareil.', + 'invalid' => 'Le jeton fourni est invalide.', + 'setup' => [ + 'title' => 'Configurer l\'authentification à deux facteurs', + 'help' => 'Impossible de scanner le code QR ? Entrez le code ci-dessous dans votre application :', + 'field' => 'Saisir un jeton', + ], + 'disable' => [ + 'title' => 'Désactiver l\'authentification à deux facteurs', + 'field' => 'Saisir un jeton', + ], + ], +]; diff --git a/lang/fr/dashboard/index.php b/lang/fr/dashboard/index.php new file mode 100644 index 000000000..a4b269c00 --- /dev/null +++ b/lang/fr/dashboard/index.php @@ -0,0 +1,8 @@ + 'Rechercher des serveurs...', + 'no_matches' => 'Aucun serveur correspondant aux critères de recherche fournis n\'a été trouvé.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Mémoire', +]; diff --git a/lang/fr/exceptions.php b/lang/fr/exceptions.php new file mode 100644 index 000000000..790cccf69 --- /dev/null +++ b/lang/fr/exceptions.php @@ -0,0 +1,55 @@ + 'Une erreur est survenue lors de la tentative de communication avec le démon, entraînant un code de réponse HTTP/:code. Cette exception a été enregistrée.', + 'node' => [ + 'servers_attached' => 'Un nœud ne doit avoir aucun serveur lié à lui pour être supprimé.', + 'daemon_off_config_updated' => 'La configuration du daemon a été mis à jour, cependant, une erreur s\'est produite lors de la tentative de mise à jour automatique du fichier de configuration sur le daemon. Vous devrez mettre à jour manuellement le fichier de configuration (core.json) pour qu\'il puisse appliquer ces modifications.', + ], + 'allocations' => [ + 'server_using' => 'Un serveur est actuellement affecté à cette allocation. Une allocation ne peut être supprimée que si aucun serveur n\'utilise cette dernière.', + 'too_many_ports' => 'L\'ajout de plus de 1000 ports dans une seule plage à la fois n\'est pas supporté.', + 'invalid_mapping' => 'Le mappage fourni pour :port est invalide et n\'a pas pu être traitée.', + 'cidr_out_of_range' => 'La notation CIDR permet uniquement les masques entre /25 et /32.', + 'port_out_of_range' => 'Les ports d\'une allocation doivent être supérieurs à 1024 et inférieurs ou égaux à 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'Un egg avec des serveurs actifs qui y sont attachés ne peuvent pas être supprimés du Panel.', + 'invalid_copy_id' => 'L\'Egg sélectionné pour la copie n\'existe pas ou n\'a aucune différence avec l\'original.', + 'has_children' => 'Cet Egg est un parent pour un ou plusieurs autres Egg. Veuillez supprimer ces Egg avant de supprimer celui-ci.', + ], + 'variables' => [ + 'env_not_unique' => 'La variable d\'environnement :name doit être unique à cet Egg', + 'reserved_name' => 'La variable d\'environnement :name est protégée et ne peut pas être assignée à une variable.', + 'bad_validation_rule' => 'La règle de validation ":rule" n\'est pas une règle valide pour cette application.', + ], + 'importer' => [ + 'json_error' => 'Une erreur s\'est produite lors de l\'analyse du fichier JSON: :error.', + 'file_error' => 'Le fichier JSON fourni n\'est pas valide.', + 'invalid_json_provided' => 'Le fichier JSON fourni n\'est pas dans un format qui peut être reconnu.', + ], + 'subusers' => [ + 'editing_self' => 'Vous n\'êtes pas autorisé à modifier votre propre compte de sous-utilisateur', + 'user_is_owner' => 'Vous ne pouvez pas ajouter le propriétaire du serveur en tant que sous-utilisateur pour ce serveur.', + 'subuser_exists' => 'Un utilisateur avec cette adresse e-mail est déjà assigné en tant que sous-utilisateur pour ce serveur.', + ], + 'databases' => [ + 'delete_has_databases' => 'Impossible de supprimer un serveur hôte de base de données sur lequel des bases de données actives sont liées.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'L\'intervalle maximum pour une tâche chaînée est de 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Impossible de supprimer un emplacement auquel sont associés des nœuds actifs.', + ], + 'users' => [ + 'node_revocation_failed' => 'Échec de la révocation des clés Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'Aucun nœud satisfaisant les exigences spécifiées pour le déploiement automatique n\'a pu être trouvé.', + 'no_viable_allocations' => 'Aucun nœud satisfaisant les exigences spécifiées pour le déploiement automatique n\'a pu être trouvé.', + ], + 'api' => [ + 'resource_not_found' => 'La ressource demandée n\'existe pas sur ce serveur.', + ], +]; diff --git a/lang/fr/pagination.php b/lang/fr/pagination.php new file mode 100644 index 000000000..85e0d87c8 --- /dev/null +++ b/lang/fr/pagination.php @@ -0,0 +1,17 @@ + '« Précédent', + 'next' => 'Suivant »', +]; diff --git a/lang/fr/passwords.php b/lang/fr/passwords.php new file mode 100644 index 000000000..93c272c2e --- /dev/null +++ b/lang/fr/passwords.php @@ -0,0 +1,19 @@ + 'Les mots de passe doivent contenir au moins six caractères et doivent être identiques.', + 'reset' => 'Votre mot de passe a été réinitialisé !', + 'sent' => 'Nous avons envoyé par e-mail le lien de réinitialisation de votre mot de passe !', + 'token' => 'Ce jeton de réinitialisation de mot de passe est invalide.', + 'user' => 'Nous n\'avons pas trouvé d\'utilisateur avec cette adresse email.', +]; diff --git a/lang/fr/server/users.php b/lang/fr/server/users.php new file mode 100644 index 000000000..3d57732c5 --- /dev/null +++ b/lang/fr/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Autorise l\'accès au Websocket pour ce serveur.', + 'control_console' => 'Permet à l\'utilisateur d\'envoyer des commandes à la console du serveur.', + 'control_start' => 'Autorise l\'utilisateur à démarrer l\'instance du serveur.', + 'control_stop' => 'Autorise l\'utilisateur à arrêter l\'instance du serveur.', + 'control_restart' => 'Autorise l\'utilisateur à redémarrer l\'instance du serveur.', + 'control_kill' => 'Autorise l\'utilisateur à tuer l\'instance du serveur.', + 'user_create' => 'Permet à l\'utilisateur de créer de nouveaux comptes utilisateur pour le serveur.', + 'user_read' => 'Autorise l\'utilisateur à voir les utilisateurs associés à ce serveur.', + 'user_update' => 'Autorise l\'utilisateur à modifier les autres utilisateurs associés à ce serveur.', + 'user_delete' => 'Autorise l\'utilisateur à supprimer les autres utilisateurs associés à ce serveur.', + 'file_create' => 'Autorise l\'utilisateur à créer de nouveaux fichiers et dossiers.', + 'file_read' => 'Permet à l\'utilisateur de voir les fichiers et dossiers associés à cette instance de serveur, ainsi que de voir leur contenu.', + 'file_update' => 'Autorise l\'utilisateur à modifier les autres utilisateurs associés à ce serveur.', + 'file_delete' => 'Autorise l\'utilisateur à supprimer des fichiers et des dossiers.', + 'file_archive' => 'Autorise l\'utilisateur à créer des archives de fichiers et décompresser des archives existantes.', + 'file_sftp' => 'Autorise l\'utilisateur à effectuer les actions de fichier ci-dessus en utilisant un client SFTP.', + 'allocation_read' => 'Autorise l\'accès aux pages de gestion d\'allocation du serveur.', + 'allocation_update' => 'Autorise l\'utilisateur à apporter des modifications aux allocations du serveur.', + 'database_create' => 'Autorise l\'utilisateur à créer une nouvelle base de données pour le serveur.', + 'database_read' => 'Autorise l\'utilisateur à voir les bases de données du serveur.', + 'database_update' => 'Autorise un utilisateur à modifier une base de données. Si l\'utilisateur n\'a pas la permission "Voir le mot de passe", il ne sera pas en mesure de modifier le mot de passe.', + 'database_delete' => 'Autorise un utilisateur à supprimer une base de données.', + 'database_view_password' => 'Autorise un utilisateur à visualiser un mot de passe de base de données.', + 'schedule_create' => 'Autorise un utilisateur à créer une planification pour le serveur.', + 'schedule_read' => 'Autorise un utilisateur à voir les planifications d\'un serveur.', + 'schedule_update' => 'Autorise un utilisateur à apporter des modifications à une planification d\'un serveur existant.', + 'schedule_delete' => 'Autorise un utilisateur à supprimer une planification pour le serveur.', + ], +]; diff --git a/lang/fr/strings.php b/lang/fr/strings.php new file mode 100644 index 000000000..03491ea7d --- /dev/null +++ b/lang/fr/strings.php @@ -0,0 +1,95 @@ + 'E-mail', + 'email_address' => 'Adresse e-mail', + 'user_identifier' => 'Nom d\'utilisateur ou e-mail', + 'password' => 'Mot de passe', + 'new_password' => 'Nouveau mot de passe', + 'confirm_password' => 'Confirmer le nouveau mot de passe', + 'login' => 'Connexion', + 'home' => 'Accueil', + 'servers' => 'Serveurs', + 'id' => 'ID', + 'name' => 'Nom', + 'node' => 'Nœud', + 'connection' => 'Connexion', + 'memory' => 'Mémoire', + 'cpu' => 'CPU', + 'disk' => 'Disque', + 'status' => 'Statut', + 'search' => 'Rechercher', + 'suspended' => 'Suspendu', + 'account' => 'Compte', + 'security' => 'Sécurité', + 'ip' => 'Adresse IP', + 'last_activity' => 'Dernière activité', + 'revoke' => 'Révoquer', + '2fa_token' => 'Jeton d\'authentification', + 'submit' => 'Soumettre', + 'close' => 'Fermer', + 'settings' => 'Paramètres', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Bases de données', + 'memo' => 'Note', + 'created' => 'Créé(e)', + 'expires' => 'Expire le', + 'public_key' => 'Jeton', + 'api_access' => 'Accès API', + 'never' => 'jamais', + 'sign_out' => 'Déconnexion', + 'admin_control' => 'Panneau d\'administration', + 'required' => 'Requis', + 'port' => 'Port', + 'username' => 'Nom d\'utilisateur', + 'database' => 'Base de données', + 'new' => 'Nouveau', + 'danger' => 'Danger', + 'create' => 'Créer', + 'select_all' => 'Tout sélectionner', + 'select_none' => 'Annuler la sélection', + 'alias' => 'Alias', + 'primary' => 'Principal', + 'make_primary' => 'Définir comme principale', + 'none' => 'Aucun', + 'cancel' => 'Annuler', + 'created_at' => 'Créé à', + 'action' => 'Action', + 'data' => 'Données', + 'queued' => 'Ajouté à la file d\'attente', + 'last_run' => 'Dernière exécution', + 'next_run' => 'Prochaine exécution', + 'not_run_yet' => 'Pas encore exécuté', + 'yes' => 'Oui', + 'no' => 'Non', + 'delete' => 'Supprimer', + '2fa' => 'A2F', + 'logout' => 'Déconnexion', + 'admin_cp' => 'Panel d\'administration', + 'optional' => 'Facultatif', + 'read_only' => 'Lecture seule', + 'relation' => 'Relation', + 'owner' => 'Propriétaire', + 'admin' => 'Admin', + 'subuser' => 'Sous-utilisateur', + 'captcha_invalid' => 'Le captcha fourni est invalide.', + 'tasks' => 'Tâches', + 'seconds' => 'Secondes', + 'minutes' => 'Minutes', + 'under_maintenance' => 'En maintenance', + 'days' => [ + 'sun' => 'Dimanche', + 'mon' => 'Lundi', + 'tues' => 'Mardi', + 'wed' => 'Mercredi', + 'thurs' => 'Jeudi', + 'fri' => 'Vendredi', + 'sat' => 'Samedi', + ], + 'last_used' => 'Dernière utilisation', + 'enable' => 'Activer', + 'disable' => 'Désactiver', + 'save' => 'Enregistrer', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/fr/validation.php b/lang/fr/validation.php new file mode 100644 index 000000000..4e06fdb88 --- /dev/null +++ b/lang/fr/validation.php @@ -0,0 +1,106 @@ + 'Le champ :attribute doit être accepté.', + 'active_url' => 'Le champ :attribute n\'est pas une URL valide.', + 'after' => 'Le champ :attribute doit être une date supérieure au :date.', + 'after_or_equal' => 'Le champ :attribute doit être une date supérieure ou égale à :date.', + 'alpha' => 'Le champ :attribute doit seulement contenir des lettres.', + 'alpha_dash' => 'Le champ :attribute doit seulement contenir des lettres, des chiffres et des tirets.', + 'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.', + 'array' => 'Le champ :attribute doit être un tableau.', + 'before' => 'Le champ :attribute doit être une date inférieure au :date.', + 'before_or_equal' => 'Le champ :attribute doit être une date inférieure ou égale à :date.', + 'between' => [ + 'numeric' => 'Le champ :attribute doit être entre :min et :max.', + 'file' => 'Le champ :attribute doit représenter un fichier dont le poids est entre :min et :max kilo-octets.', + 'string' => 'Le champ :attribute doit contenir entre :min et :max caractères.', + 'array' => 'Le champ :attribute doit avoir entre :min et :max éléments.', + ], + 'boolean' => 'Le champ :attribute doit être vrai ou faux.', + 'confirmed' => 'La confirmation :attribute ne correspond pas.', + 'date' => 'Le champ :attribute n\'est pas une date valide.', + 'date_format' => 'Le champ :attribute ne correspond pas au format :format.', + 'different' => 'Les champs :attribute et :other doivent être différents.', + 'digits' => 'Le champ :attribute doit avoir :digits chiffres.', + 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', + 'dimensions' => 'Les dimensions de l\'image pour le champ :attribute sont invalides.', + 'distinct' => 'Le champ :attribute a une valeur en double.', + 'email' => 'Le champ :attribute doit être une adresse e-mail valide.', + 'exists' => 'Le champ :attribute sélectionné n\'est pas valide.', + 'file' => 'Le champ :attribute doit être un fichier.', + 'filled' => 'Le champ :attribute est requis.', + 'image' => 'Le champ :attribute doit être une image.', + 'in' => 'Le champ :attribute sélectionné n\'est pas valide.', + 'in_array' => 'Le champ :attribute n\'existe pas dans :other.', + 'integer' => 'Le champ :attribute doit être un entier.', + 'ip' => 'Le champ :attribute doit être une adresse IP valide.', + 'json' => 'Le champ :attribute doit être une chaîne JSON valide.', + 'max' => [ + 'numeric' => 'Le champ ":attribute" ne peut pas être plus grand que :max.', + 'file' => 'Le champ ":attribute" ne peut pas être plus grand que :max kilo-octets.', + 'string' => 'Le champ :attribute ne peut pas être plus grand que :max caractères.', + 'array' => 'Le champ :attribute ne peut pas avoir plus de :max éléments.', + ], + 'mimes' => 'Le champ :attribute doit être un fichier de type : :values.', + 'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.', + 'min' => [ + 'numeric' => 'Le champ :attribute doit être supérieur ou égale à :min.', + 'file' => 'Le champ :attribute doit être d\'au moins :min kilo-octets.', + 'string' => 'Le champ :attribute doit contenir au moins :min caractères.', + 'array' => 'Le champ :attribute doit avoir au moins :min éléments.', + ], + 'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.', + 'numeric' => 'Le champ :attribute doit être un nombre.', + 'present' => 'Le champ :attribute doit être présent.', + 'regex' => 'Le format du champ :attribute est invalide.', + 'required' => 'Le champ :attribute est requis.', + 'required_if' => 'Le champ :attribute est requis lorsque :other est :value.', + 'required_unless' => 'Le champ :attribute est requis sauf si :other est dans :values.', + 'required_with' => 'Le champ :attribute est requis lorsque :values est présent.', + 'required_with_all' => 'Le champ :attribute est requis lorsque :values est présent.', + 'required_without' => 'Le champ :attribute est obligatoire quand :values n\'est pas présent.', + 'required_without_all' => 'Le champ :attribute est requis quand aucune des :values n\'est présente.', + 'same' => 'Les champs :attribute et :other doivent être identiques.', + 'size' => [ + 'numeric' => 'Le champ :attribute doit être :size.', + 'file' => 'Le champ :attribute doit être de :size kilo-octets.', + 'string' => 'Le champ :attribute doit être de :size caractères.', + 'array' => 'Le champ :attribute doit contenir :size éléments.', + ], + 'string' => 'Le champ :attribute doit être une chaîne de caractères.', + 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', + 'unique' => 'Le champ :attribute a déjà été pris.', + 'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.', + 'url' => 'Le format du champ :attribute est invalide.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => 'variable :env', + 'invalid_password' => 'Le mot de passe fourni n\'est pas valide pour ce compte.', + ], +]; diff --git a/lang/he/activity.php b/lang/he/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/he/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/he/admin/eggs.php b/lang/he/admin/eggs.php new file mode 100644 index 000000000..bdf4b4c22 --- /dev/null +++ b/lang/he/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'ביצה זו והמשתנים הקשורים לה יובאו בהצלחה.', + 'updated_via_import' => 'ביצה זו עודכנה באמצעות הקובץ שסופק.', + 'deleted' => 'נמחקה בהצלחה הביצה המבוקשת מהחלונית.', + 'updated' => 'תצורת הביצה עודכנה בהצלחה.', + 'script_updated' => 'סקריפט התקנת הביצה עודכן ויפעל בכל פעם שיותקנו שרתים.', + 'egg_created' => 'ביצה חדשה הוטלה בהצלחה. תצטרך להפעיל מחדש את כל הדמונים הפועלים כדי להחיל את התיקון החדש הזה.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'המשתנה ":variable" נמחק ולא יהיה זמין יותר לשרתים לאחר הבנייה מחדש.', + 'variable_updated' => 'המשתנה ":variable" עודכן. תצטרך לבנות מחדש את כל השרתים המשתמשים במשתנה זה כדי להחיל שינויים.', + 'variable_created' => 'משתנה חדש נוצר בהצלחה והוקצה לביצה זו.', + ], + ], +]; diff --git a/lang/he/admin/node.php b/lang/he/admin/node.php new file mode 100644 index 000000000..7774102ea --- /dev/null +++ b/lang/he/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'כתובת ה-FQDN או ה-IP שסופקו אינם פונים לכתובת IP חוקית.', + 'fqdn_required_for_ssl' => 'דרוש שם דומיין מוסמך במלואו שמגיע לכתובת IP ציבורית כדי להשתמש ב-SSL עבור צומת זה.', + ], + 'notices' => [ + 'allocations_added' => 'הקצאות נוספו בהצלחה לצומת זה.', + 'node_deleted' => 'הצומת הוסר מהחלונית בהצלחה.', + 'node_created' => 'צומת חדש נוצר בהצלחה. אתה יכול להגדיר באופן אוטומטי את הדמון במחשב זה על ידי ביקור בכרטיסייה \'תצורה\'. לפני שתוכל להוסיף שרתים, תחילה עליך להקצות לפחות כתובת IP אחת ויציאה אחת.', + 'node_updated' => 'מידע הצומת עודכן. אם הגדרות דמון כלשהן שונו, תצטרך לאתחל אותה כדי שהשינויים האלה ייכנסו לתוקף.', + 'unallocated_deleted' => 'מחק את כל היציאות שלא הוקצו עבור :ip.', + ], +]; diff --git a/lang/he/admin/server.php b/lang/he/admin/server.php new file mode 100644 index 000000000..4a181b1df --- /dev/null +++ b/lang/he/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'אתה מנסה למחוק את הקצאת ברירת המחדל עבור שרת זה, אך אין הקצאה חוזרת לשימוש.', + 'marked_as_failed' => 'שרת זה סומן כנכשל בהתקנה קודמת. לא ניתן לשנות את המצב הנוכחי במצב זה.', + 'bad_variable' => 'אירעה שגיאת אימות עם המשתנה :name.', + 'daemon_exception' => 'היה חריג בעת ניסיון לתקשר עם הדמון וכתוצאה מכך קוד תגובה של HTTP/:code. חריג זה נרשם. (מזהה בקשה: :request_id)', + 'default_allocation_not_found' => 'הקצאת ברירת המחדל המבוקשת לא נמצאה בהקצאות של שרת זה.', + ], + 'alerts' => [ + 'startup_changed' => 'תצורת האתחול של שרת זה עודכנה. אם הביצה של שרת זה שונתה, תתבצע התקנה מחדש כעת.', + 'server_deleted' => 'השרת נמחק בהצלחה מהמערכת.', + 'server_created' => 'השרת נוצר בהצלחה בחלונית. אנא אפשר לדמון כמה דקות להתקין את השרת הזה לחלוטין.', + 'build_updated' => 'פרטי הבנייה של שרת זה עודכנו. שינויים מסוימים עשויים לדרוש הפעלה מחדש כדי להיכנס לתוקף.', + 'suspension_toggled' => 'סטטוס השעיית השרת שונה ל-:status.', + 'rebuild_on_boot' => 'שרת זה סומן כמי שדורש בנייה מחדש של קונטיינר Docker. זה יקרה בפעם הבאה שהשרת יופעל.', + 'install_toggled' => 'סטטוס ההתקנה של שרת זה השתנה.', + 'server_reinstalled' => 'שרת זה עמד בתור להתקנה מחדש שמתחילה כעת.', + 'details_updated' => 'פרטי השרת עודכנו בהצלחה.', + 'docker_image_updated' => 'שינה בהצלחה את תמונת ברירת המחדל של Docker לשימוש עבור שרת זה. נדרש אתחול כדי להחיל שינוי זה.', + 'node_required' => 'עליך להגדיר לפחות צומת אחד לפני שתוכל להוסיף שרת ללוח זה.', + 'transfer_nodes_required' => 'עליך להגדיר לפחות שני צמתים לפני שתוכל להעביר שרתים.', + 'transfer_started' => 'העברת השרת החלה.', + 'transfer_not_viable' => 'לצומת שבחרת אין את שטח הדיסק או הזיכרון הנדרשים כדי להכיל שרת זה.', + ], +]; diff --git a/lang/he/admin/user.php b/lang/he/admin/user.php new file mode 100644 index 000000000..f2e2bd3ff --- /dev/null +++ b/lang/he/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'לא ניתן למחוק משתמש עם שרתים פעילים המחוברים לחשבון שלו. נא למחוק את השרתים שלהם לפני שתמשיך.', + 'user_is_self' => 'לא ניתן למחוק את חשבון המשתמש שלך.', + ], + 'notices' => [ + 'account_created' => 'החשבון נוצר בהצלחה.', + 'account_updated' => 'החשבון עודכן בהצלחה.', + ], +]; diff --git a/lang/he/auth.php b/lang/he/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/he/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/he/command/messages.php b/lang/he/command/messages.php new file mode 100644 index 000000000..573334abb --- /dev/null +++ b/lang/he/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'הזן שם משתמש, מזהה משתמש או כתובת דואר אלקטרוני', + 'select_search_user' => 'מזהה המשתמש שיש למחוק (הזן \'0\' כדי לחפש מחדש)', + 'deleted' => 'המשתמש נמחק בהצלחה מהחלונית.', + 'confirm_delete' => 'האם אתה בטוח שברצונך למחוק את המשתמש הזה מהחלונית?', + 'no_users_found' => 'לא נמצאו משתמשים עבור מונח החיפוש שסופק.', + 'multiple_found' => 'נמצאו חשבונות מרובים עבור המשתמש שסופק, לא ניתן למחוק משתמש בגלל הדגל --no-interaction.', + 'ask_admin' => 'האם משתמש זה הוא מנהל מערכת?', + 'ask_email' => 'כתובת דוא"ל', + 'ask_username' => 'שם משתמש', + 'ask_name_first' => 'שם פרטי', + 'ask_name_last' => 'שם משפחה', + 'ask_password' => 'סיסמה', + 'ask_password_tip' => 'אם ברצונך ליצור חשבון עם סיסמה אקראית שנשלחת באימייל למשתמש, הפעל מחדש את הפקודה הזו (CTRL+C) והעביר את הדגל `--no-password`.', + 'ask_password_help' => 'סיסמאות חייבות להיות באורך של לפחות 8 תווים ולהכיל לפחות אות גדולה ומספר אחד.', + '2fa_help_text' => [ + 'פקודה זו תשבית אימות דו-שלבי עבור חשבון משתמש אם היא מופעלת. זה אמור לשמש כפקודה לשחזור חשבון רק אם המשתמש ננעל מחוץ לחשבון שלו.', + 'אם זה לא מה שרצית לעשות, הקש CTRL+C כדי לצאת מהתהליך הזה.', + ], + '2fa_disabled' => 'אימות דו-שלבי הושבת עבור :email.', + ], + 'schedule' => [ + 'output_line' => 'שולח עבודה למשימה ראשונה ב-`:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'מחיקת קובץ גיבוי שירות: :file.', + ], + 'server' => [ + 'rebuild_failed' => 'בקשת בנייה מחדש עבור ":name" (#:id) בצומת ":node" נכשלה עם שגיאה: :message', + 'reinstall' => [ + 'failed' => 'בקשת התקנה מחדש עבור ":name" (#:id) בצומת ":node" נכשלה עם שגיאה: :message', + 'confirm' => 'אתה עומד להתקין מחדש מול קבוצת שרתים. האם אתה מקווה להמשיך?', + ], + 'power' => [ + 'confirm' => 'אתה עומד לבצע :פעולה נגד :count שרתים האם ברצונך להמשיך?', + 'action_failed' => 'בקשת פעולת הפעלה עבור ":name" (#:id) בצומת ":node" נכשלה עם שגיאה: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'מארח SMTP (למשל smtp.gmail.com)', + 'ask_smtp_port' => 'יציאת SMTP', + 'ask_smtp_username' => 'שם משתמש SMTP', + 'ask_smtp_password' => 'סיסמאת SMTP', + 'ask_mailgun_domain' => 'דומיין Mailgun', + 'ask_mailgun_endpoint' => 'נקודת קצה של Mailgun', + 'ask_mailgun_secret' => 'הסוד של Mailgun', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/he/dashboard/account.php b/lang/he/dashboard/account.php new file mode 100644 index 000000000..abc0397b4 --- /dev/null +++ b/lang/he/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'עדכנו את הדואר האלקטרוני שלכם', + 'updated' => 'כתובת הדוא"ל התעדכנה.', + ], + 'password' => [ + 'title' => 'שנה את סיסמתך', + 'requirements' => 'הסיסמה החדשה שלך צריכה להיות באורך של לפחות 8 תווים.', + 'updated' => 'הסיסמא שלך עודכנה.', + ], + 'two_factor' => [ + 'button' => 'הגדר אימות דו-שלבי', + 'disabled' => 'אימות דו-שלבי הושבת בחשבונך. לא תתבקש יותר לספק אסימון בעת הכניסה.', + 'enabled' => 'אימות דו-שלבי הופעל בחשבון שלך! מעתה, בעת הכניסה, תידרש לספק את הקוד שנוצר על ידי המכשיר שלך.', + 'invalid' => 'הטוקן שסופק היה לא חוקי.', + 'setup' => [ + 'title' => 'הגדר אימות דו-שלבי', + 'help' => 'לא מצליחים לסרוק את הקוד? הזן את הקוד למטה באפליקציה שלך:', + 'field' => 'הזן טוקן', + ], + 'disable' => [ + 'title' => 'השבת אימות דו-שלבי', + 'field' => 'הזן טוקן', + ], + ], +]; diff --git a/lang/he/dashboard/index.php b/lang/he/dashboard/index.php new file mode 100644 index 000000000..f1ceaf526 --- /dev/null +++ b/lang/he/dashboard/index.php @@ -0,0 +1,8 @@ + 'חפש שרתים...', + 'no_matches' => 'לא נמצאו שרתים התואמים לקריטריוני החיפוש שסופקו.', + 'cpu_title' => 'מעבד', + 'memory_title' => 'זיכרון', +]; diff --git a/lang/he/exceptions.php b/lang/he/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/he/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/he/pagination.php b/lang/he/pagination.php new file mode 100644 index 000000000..39a1e4b0f --- /dev/null +++ b/lang/he/pagination.php @@ -0,0 +1,17 @@ + '« קודם', + 'next' => 'הבא »', +]; diff --git a/lang/he/passwords.php b/lang/he/passwords.php new file mode 100644 index 000000000..3e52b25f5 --- /dev/null +++ b/lang/he/passwords.php @@ -0,0 +1,19 @@ + 'סיסמאות חייבות להיות לפחות שישה תווים ולהתאים לאישור.', + 'reset' => 'הסיסמה שלך אופסה!', + 'sent' => 'שלחנו באימייל קישור לאיפוס הסיסמה שלך!', + 'token' => 'טוקן איפוס סיסמה זה אינו חוקי.', + 'user' => 'אנחנו לא יכולים למצוא משתמש עם כתובת האימייל הזו.', +]; diff --git a/lang/he/server/users.php b/lang/he/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/he/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/he/strings.php b/lang/he/strings.php new file mode 100644 index 000000000..40e0f3d6b --- /dev/null +++ b/lang/he/strings.php @@ -0,0 +1,95 @@ + 'דוא"ל', + 'email_address' => 'כתובת דוא"ל', + 'user_identifier' => 'שם משתשמש או דואר אלקטרוני', + 'password' => 'סיסמה', + 'new_password' => 'סיסמה חדשה', + 'confirm_password' => 'תאשר סיסמא חדשה', + 'login' => 'התחברות', + 'home' => 'Home', + 'servers' => 'שרתים', + 'id' => 'מספר מזהה', + 'name' => 'שם', + 'node' => 'צומת', + 'connection' => 'חיבור', + 'memory' => 'זיכרון', + 'cpu' => 'מעבד', + 'disk' => 'דיסק', + 'status' => 'סטטוס', + 'search' => 'חיפוש', + 'suspended' => 'מושעה', + 'account' => 'חשבון', + 'security' => 'אבטחה', + 'ip' => '‏כתובת IP', + 'last_activity' => 'פעילות אחרונה', + 'revoke' => 'Revoke', + '2fa_token' => 'טוקן אימות', + 'submit' => 'Submit', + 'close' => 'סגור', + 'settings' => 'הגדרות', + 'configuration' => 'תצורה', + 'sftp' => 'SFTP', + 'databases' => 'מסדי נתונים', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'גישה ל- API', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/he/validation.php b/lang/he/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/he/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/hi/activity.php b/lang/hi/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/hi/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/hi/admin/eggs.php b/lang/hi/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/hi/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/hi/admin/node.php b/lang/hi/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/hi/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/hi/admin/server.php b/lang/hi/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/hi/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/hi/admin/user.php b/lang/hi/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/hi/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/hi/auth.php b/lang/hi/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/hi/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/hi/command/messages.php b/lang/hi/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/hi/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/hi/dashboard/account.php b/lang/hi/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/hi/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/hi/dashboard/index.php b/lang/hi/dashboard/index.php new file mode 100644 index 000000000..8aeb5f8a1 --- /dev/null +++ b/lang/hi/dashboard/index.php @@ -0,0 +1,8 @@ + 'सर्वर्स की खोज करें...', + 'no_matches' => 'प्रदान किए गए खोज मानदंडों से मेल खाने वाला कोई सर्वर नहीं मिला।', + 'cpu_title' => 'सीपीयू', + 'memory_title' => 'मेमोरी', +]; diff --git a/lang/hi/exceptions.php b/lang/hi/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/hi/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/hi/pagination.php b/lang/hi/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/hi/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/hi/passwords.php b/lang/hi/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/hi/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/hi/server/users.php b/lang/hi/server/users.php new file mode 100644 index 000000000..b66d01d58 --- /dev/null +++ b/lang/hi/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'इस सर्वर के लिए वेबसॉकेट तक पहुँच देता है।', + 'control_console' => 'उपयोगकर्ता को सर्वर कंसोल में डेटा भेजने की अनुमति देता है।', + 'control_start' => 'उपयोगकर्ता को सर्वर उदाहरण को प्रारंभ करने की अनुमति देता है।', + 'control_stop' => 'उपयोगकर्ता को सर्वर उदाहरण को प्रारंभ करने की अनुमति देता है।', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/hi/strings.php b/lang/hi/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/hi/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/hi/validation.php b/lang/hi/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/hi/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/hr/activity.php b/lang/hr/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/hr/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/hr/admin/eggs.php b/lang/hr/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/hr/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/hr/admin/node.php b/lang/hr/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/hr/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/hr/admin/server.php b/lang/hr/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/hr/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/hr/admin/user.php b/lang/hr/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/hr/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/hr/auth.php b/lang/hr/auth.php new file mode 100644 index 000000000..7beef0446 --- /dev/null +++ b/lang/hr/auth.php @@ -0,0 +1,27 @@ + 'Prijavi se', + 'go_to_login' => 'Idi na prijavu', + 'failed' => 'Nema računa sa tim podatcima.', + + 'forgot_password' => [ + 'label' => 'Zaboravio lozinku?', + 'label_help' => 'Napiši svoju email adresu računa kako bi dobio instrukcije da promjeniš lozinku.', + 'button' => 'Oporavi račun', + ], + + 'reset_password' => [ + 'button' => 'Promjeni i prijavi se', + ], + + 'two_factor' => [ + 'label' => '2 Faktor Token', + 'label_help' => 'Ovaj račun ima 2 sloja provjere sigurnosti. Kako bi ste nastavili napišite kod koji je generiran od vašeg uređaja.', + 'checkpoint_failed' => '2 Faktor Token nije točan.', + ], + + 'throttle' => 'Previše pokušaja prijave. Pokušajte ponovno za :seconds sekundi.', + 'password_requirements' => 'Lozinka mora imati makar 8 karaktera i biti samo za ovu stranicu.', + '2fa_must_be_enabled' => 'Administrator je odabrao da morate imate 2 Faktor kako bi ste koristli ovu stranicu.', +]; diff --git a/lang/hr/command/messages.php b/lang/hr/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/hr/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/hr/dashboard/account.php b/lang/hr/dashboard/account.php new file mode 100644 index 000000000..2d349df01 --- /dev/null +++ b/lang/hr/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Promjeni svoj email', + 'updated' => 'Vaša e-mail adresa je ažurirana.', + ], + 'password' => [ + 'title' => 'Promijeni lozinku', + 'requirements' => 'Vaša nova lozinka treba imati makar 8 karaktera.', + 'updated' => 'Vaša lozinka je ažurirana.', + ], + 'two_factor' => [ + 'button' => 'Konfiguriraj 2 Faktor authentikaciju.', + 'disabled' => '2 Faktor authentikacija je isključena na vašem računu. Više vas nećemo pitati za token kada se prijavljate.', + 'enabled' => '2 Faktor authentikacija je uključena na vašem računu. Od sada kada se prijavljate morate upisati kod koji je vaš uređaj generirio.', + 'invalid' => 'Token je netočan.', + 'setup' => [ + 'title' => 'Postavi 2 faktor autentikaciju.', + 'help' => 'Ne možeš skenirati kod? Napiši ovaj kod u svoju aplikaciju:', + 'field' => 'Upiši token', + ], + 'disable' => [ + 'title' => 'Isključi dva faktor autentikaciju', + 'field' => 'Upiši token', + ], + ], +]; diff --git a/lang/hr/dashboard/index.php b/lang/hr/dashboard/index.php new file mode 100644 index 000000000..f2ee78d05 --- /dev/null +++ b/lang/hr/dashboard/index.php @@ -0,0 +1,8 @@ + 'Pretraži servere...', + 'no_matches' => 'Nisu pronađeni serveri koji odgovaraju navedenim kriterijima pretraživanja.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memorija', +]; diff --git a/lang/hr/exceptions.php b/lang/hr/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/hr/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/hr/pagination.php b/lang/hr/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/hr/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/hr/passwords.php b/lang/hr/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/hr/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/hr/server/users.php b/lang/hr/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/hr/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/hr/strings.php b/lang/hr/strings.php new file mode 100644 index 000000000..a9202b19c --- /dev/null +++ b/lang/hr/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email adresa', + 'user_identifier' => 'Korisničko ime ili Email', + 'password' => 'Lozinka', + 'new_password' => 'Nova lozinka', + 'confirm_password' => 'Potvrdi novu lozinku', + 'login' => 'Prijava', + 'home' => 'Početna', + 'servers' => 'Serveri', + 'id' => 'ID', + 'name' => 'Ime', + 'node' => 'Node', + 'connection' => 'Veza', + 'memory' => 'Memorija', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Stanje', + 'search' => 'Pretraživanje', + 'suspended' => 'Suspendiran', + 'account' => 'Račun', + 'security' => 'Sigurnost', + 'ip' => 'IP Adresa', + 'last_activity' => 'Posljednja aktivnost', + 'revoke' => 'Ukloni', + '2fa_token' => '2 Faktor Token', + 'submit' => 'Potvrdi', + 'close' => 'Zatvori', + 'settings' => 'Postavke', + 'configuration' => 'Postavke', + 'sftp' => 'SFTP', + 'databases' => 'Databaze', + 'memo' => 'Memo', + 'created' => 'Kreirano', + 'expires' => 'Istječe', + 'public_key' => 'Token', + 'api_access' => 'Api pristup', + 'never' => 'nikad', + 'sign_out' => 'Odjava', + 'admin_control' => 'Administrator Kontrola', + 'required' => 'Potrebno', + 'port' => 'Port', + 'username' => 'Ime', + 'database' => 'Databaza', + 'new' => 'Novo', + 'danger' => 'Opasno', + 'create' => 'Kreiraj', + 'select_all' => 'Odaberi sve', + 'select_none' => 'Odaberi ništa', + 'alias' => 'Drugo ime', + 'primary' => 'Glavni', + 'make_primary' => 'Označi kao glavni', + 'none' => 'Ništa', + 'cancel' => 'Odustani', + 'created_at' => 'Stvoreno', + 'action' => 'Akcija', + 'data' => 'Podaci', + 'queued' => 'U redu čekanja', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/hr/validation.php b/lang/hr/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/hr/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/hu/activity.php b/lang/hu/activity.php new file mode 100644 index 000000000..3df65f4e7 --- /dev/null +++ b/lang/hu/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Sikertelen bejelenzkezés', + 'success' => 'Bejelentkezve', + 'password-reset' => 'Jelszó helyreállítás', + 'reset-password' => 'Jelszó helyreállítási kérelem', + 'checkpoint' => 'Két-faktoros hitelesítési kérelem', + 'recovery-token' => 'Két-faktoros helyreállítási kulcs használata', + 'token' => 'Sikeres két-faktoros hitelesítés', + 'ip-blocked' => 'Blokkolt kérés a következő nem listázott IP-címről: :identifier', + 'sftp' => [ + 'fail' => 'Sikertelen SFTP bejelentkezés', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Email cím megváltoztatva :old -ról :new -ra', + 'password-changed' => 'Jelszó megváltoztatva', + ], + 'api-key' => [ + 'create' => 'Új API kulcs létrehozva :identifier', + 'delete' => 'API kulcs törölve :identifier', + ], + 'ssh-key' => [ + 'create' => 'SSH kulcs :fingerprint hozzáadva a fiókhoz', + 'delete' => 'SSH kulcs :fingerprint törölve a fiókból', + ], + 'two-factor' => [ + 'create' => 'Két-faktoros hitelesítés bekapcsolva', + 'delete' => 'Két-faktoros hitelesítés kikapcsolva', + ], + ], + 'server' => [ + 'reinstall' => 'Szerver újratelepítve', + 'console' => [ + 'command' => 'Végrehajtott ":command" parancs a szerveren', + ], + 'power' => [ + 'start' => 'Szerver elindítva', + 'stop' => 'Szerver leállítva', + 'restart' => 'Szerver újraindítva', + 'kill' => 'Szerver folyamat leállítva', + ], + 'backup' => [ + 'download' => ':name biztonsági mentés letöltve', + 'delete' => ':name biztonsági mentés törölve', + 'restore' => ':name biztonsági mentés helyreállítva. (törölt fájlok :truncate)', + 'restore-complete' => ':name biztonsági mentés helyreállítása befejezve', + 'restore-failed' => 'Nem sikerült visszaállítani a :name biztonsági mentést', + 'start' => 'Új biztonsági mentés :name', + 'complete' => ':name biztonsági mentés megjelölve befejezettként', + 'fail' => ':name biztonsági mentés sikertelennek jelölve', + 'lock' => ':name biztonsági mentés zárolva', + 'unlock' => ':name biztonsági mentés zárolása feloldva', + ], + 'database' => [ + 'create' => 'Új adatbázis létrehozva :name', + 'rotate-password' => 'Új jelszó létrehozva a(z) :name adatbázishoz', + 'delete' => ':name adatbázis törölve', + ], + 'file' => [ + 'compress_one' => ':directory:file tömörítve', + 'compress_other' => ':count tömörített fájl a :directory könyvtárban', + 'read' => 'Megtekintette a :file tartalmát', + 'copy' => 'Másolatot készített a :file -ról', + 'create-directory' => 'Könyvtár létrehozva :directory:name', + 'decompress' => 'Kicsomagolva :files a :directory könyvtárban', + 'delete_one' => ':directory:files.0 törölve', + 'delete_other' => ':count fájl törölve a :directory könyvtárban', + 'download' => ':file letölve', + 'pull' => 'Egy távoli fájl letöltve a :url -ról a :directory könyvtárba', + 'rename_one' => ':directory:files.0 átnevezve :directory:files.0.to -ra', + 'rename_other' => ':count fájl átnevezve a :directory könyvtárban', + 'write' => 'Új tartalom hozzáadva a :file -hoz', + 'upload' => 'Elkezdte egy fájl feltöltését', + 'uploaded' => ':direcotry:file feltöltve', + ], + 'sftp' => [ + 'denied' => 'SFTP hozzáférés megtagadva hiányzó jogosultságok miatt', + 'create_one' => 'Létrehozva :files.0', + 'create_other' => 'Létrehozva :count új fájl', + 'write_one' => ':files.0 tartalma módosítva', + 'write_other' => ':count fájl tartalma módosítva', + 'delete_one' => 'Törölve :files.0', + 'delete_other' => 'Törölve :count db fájl', + 'create-directory_one' => ':files.0 könyvtár létrehozva', + 'create-directory_other' => ':count darab könyvtár létrehozva', + 'rename_one' => 'Átnevezve :files.0.from -ról :files.0.to -ra', + 'rename_other' => 'Átnevezett vagy áthelyezett :count darab fájlt', + ], + 'allocation' => [ + 'create' => ':allocation allokáció hozzáadva a szerverhez', + 'notes' => 'Jegyzet frissítve :allocation -ról :new -ra', + 'primary' => ':allocation beállítása elsődlegesként', + 'delete' => ':allocation allokáció törölve', + ], + 'schedule' => [ + 'create' => ':name ütemezés létrehozva', + 'update' => ':name ütemezés frissítve', + 'execute' => ':name ütemezés manuálisan futtatva', + 'delete' => ':name ütemezés törölve', + ], + 'task' => [ + 'create' => 'Új ":action" feladat létrehozva a :name ütemezéshez', + 'update' => '":action" feladat frissítve a :name ütemezésnél', + 'delete' => '":action" feladat törölve a :name ütemezésnél', + ], + 'settings' => [ + 'rename' => 'Szerver átnevezve :old -ról :new -ra', + 'description' => 'Szerver leírás módosítva :old -ról :new -ra', + ], + 'startup' => [ + 'edit' => ':variable módosítva :old -ról :new -ra', + 'image' => 'Docker image frissítve ennél a szervernél :old -ról :new -ra', + ], + 'subuser' => [ + 'create' => ':email hozzáadva al- felhasználóként', + 'update' => ':email al-fiók jogosultságai frissítve', + 'delete' => ':email al-fiók eltávolítva', + ], + ], +]; diff --git a/lang/hu/admin/eggs.php b/lang/hu/admin/eggs.php new file mode 100644 index 000000000..d4ac160de --- /dev/null +++ b/lang/hu/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Sikeresen importáltad ezt az Egg-et és a hozzátartozó változókat.', + 'updated_via_import' => 'Ez az Egg frissítve lett a megadott fájl segítségével.', + 'deleted' => 'Sikeresen törölted a kívánt Egg-et a panelből.', + 'updated' => 'Az Egg konfigurációja sikeresen frissítve lett.', + 'script_updated' => 'Az Egg telepítési scriptje frissítve lett, és szerver telepítésekor lefut.', + 'egg_created' => 'Sikeresen tojtál egy új tojást. Újra kell indítanod minden futó daemon-t az Egg alkalmazásához.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'A ":változó" változó törlésre került, és az újratelepítés után már nem lesz elérhető a szerverek számára.', + 'variable_updated' => 'A ":változó" változót frissítettük. A változások alkalmazásához újra kell telepítenie az ezt a változót használó szervereket.', + 'variable_created' => 'Az új változót sikeresen létrehoztuk és hozzárendeltük ehhez az Egg-hez..', + ], + ], +]; diff --git a/lang/hu/admin/node.php b/lang/hu/admin/node.php new file mode 100644 index 000000000..e46e78703 --- /dev/null +++ b/lang/hu/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'A megadott FQDN vagy IP-cím nem felel meg érvényes IP-címnek.', + 'fqdn_required_for_ssl' => 'Az SSL használatához ehhez a csomóponthoz egy teljesen minősített tartománynévre van szükség, amely nyilvános IP-címet eredményez.', + ], + 'notices' => [ + 'allocations_added' => 'Sikeresen hozzáadtad a allokációkat ehhez a node-hoz.', + 'node_deleted' => 'Sikeresen törölted a node-ot.', + 'node_created' => 'Sikeresen létrehoztál egy új node-ot. A daemon-t automatikusan konfigurálhatod a "Konfiguráció" fülön. Mielőtt új szervert készítenél, legalább egy IP címet és portot kell allokálnod.', + 'node_updated' => 'Node információk frissítve. Ha a daemon beállításait módosítottad, újra kell indítani a daemont a módosítások érvénybe léptetéséhez.', + 'unallocated_deleted' => 'Törölted a :ip összes ki nem osztott portját.', + ], +]; diff --git a/lang/hu/admin/server.php b/lang/hu/admin/server.php new file mode 100644 index 000000000..d11e2f69f --- /dev/null +++ b/lang/hu/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Megpróbáltad törölni az allokációt, de nincs másik alapértelmezett allokáció hozzáadva a szerverhez.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Szerver sikeresen eltávolítva.', + 'server_created' => 'Szerver sikeresen létrehozva. Várj néhány percet, amíg a daemon teljesen feltelepíti a szervert.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'Legalább egy node-ot konfigurálni kell szerverek hozzáadásához.', + 'transfer_nodes_required' => 'Legalább két node-nak kell lennie szerverek költöztetéséhez.', + 'transfer_started' => 'Szerver költöztetés elindítva.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/hu/admin/user.php b/lang/hu/admin/user.php new file mode 100644 index 000000000..7d026ebb4 --- /dev/null +++ b/lang/hu/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Nem törölhető olyan felhasználó, amihez aktív szerver van társítva. Kérlek előbb töröld a szerverét a folytatáshoz.', + 'user_is_self' => 'A saját felhasználói fiókod nem törölheted.', + ], + 'notices' => [ + 'account_created' => 'Felhasználói fiók sikeresen létrehozva.', + 'account_updated' => 'Felhasználói fiók sikeresen frissítve.', + ], +]; diff --git a/lang/hu/auth.php b/lang/hu/auth.php new file mode 100644 index 000000000..d8bfa614f --- /dev/null +++ b/lang/hu/auth.php @@ -0,0 +1,27 @@ + 'Bejelentkezés', + 'go_to_login' => 'Ugrás a bejelentkezéshez', + 'failed' => 'A megadott adatokkal nem található felhasználó.', + + 'forgot_password' => [ + 'label' => 'Elfelejtetted a jelszavad?', + 'label_help' => 'Add meg az email címed a jelszavad visszaállításához.', + 'button' => 'Fiók visszaállítása', + ], + + 'reset_password' => [ + 'button' => 'Visszaállítás és bejelentkezés', + ], + + 'two_factor' => [ + 'label' => '2-Faktoros kulcs', + 'label_help' => 'Ez a fiók egy második szintű hitelesítést igényel a folytatáshoz. Kérjük, add meg a hitelesítő alkalmazásod által generált kódot a bejelentkezés befejezéséhez.', + 'checkpoint_failed' => 'A két-faktoros hitelesítés kulcsa érvénytelen.', + ], + + 'throttle' => 'Túl sok bejelentkezési próbálkozás. Kérlek próbáld újra :seconds másodperc múlva.', + 'password_requirements' => 'A jelszónak legalább 8 karakter hosszúnak kell lennie.', + '2fa_must_be_enabled' => 'A panel használatához két-faktoros hitelesítés engedélyezése szükséges.', +]; diff --git a/lang/hu/command/messages.php b/lang/hu/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/hu/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/hu/dashboard/account.php b/lang/hu/dashboard/account.php new file mode 100644 index 000000000..0da2e974e --- /dev/null +++ b/lang/hu/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Email címed frissítése', + 'updated' => 'Az email címed frissítve lett.', + ], + 'password' => [ + 'title' => 'Jelszóváltoztatás', + 'requirements' => 'Az új jelszavadnak legalább 8 karakter hosszúnak kell lennie.', + 'updated' => 'A jelszavad frissítve lett.', + ], + 'two_factor' => [ + 'button' => 'Két-faktoros hitelesítés beállítása', + 'disabled' => 'A két-faktoros hitelesítés ki van kapcsolva a fiókodnál. Bejelentkezéskor nem szükséges már megadnod a két-faktoros kulcsot.', + 'enabled' => 'Két-faktoros hitelesítés be van kapcsolva a fiókodnál! Ezentúl bejelentkezésnél meg kell adnod a két-faktoros kulcsot, amit a hitelesítő alkalmazás generál.', + 'invalid' => 'A megadott kulcs érvénytelen.', + 'setup' => [ + 'title' => 'Két-faktoros hitelesítés beállítása', + 'help' => 'Nem tudod bescannelni a kódot? Írd be az alábbi kulcsot az alkalmazásba:', + 'field' => 'Kulcs megadása', + ], + 'disable' => [ + 'title' => 'Két-faktoros hitelesítés kikapcsolása', + 'field' => 'Kulcs megadása', + ], + ], +]; diff --git a/lang/hu/dashboard/index.php b/lang/hu/dashboard/index.php new file mode 100644 index 000000000..58f60cc4b --- /dev/null +++ b/lang/hu/dashboard/index.php @@ -0,0 +1,8 @@ + 'Szerverek keresése...', + 'no_matches' => 'Nem található szerver a megadott feltételekkel.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memória', +]; diff --git a/lang/hu/exceptions.php b/lang/hu/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/hu/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/hu/pagination.php b/lang/hu/pagination.php new file mode 100644 index 000000000..5e00d52fb --- /dev/null +++ b/lang/hu/pagination.php @@ -0,0 +1,17 @@ + '« Előző', + 'next' => 'Következő »', +]; diff --git a/lang/hu/passwords.php b/lang/hu/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/hu/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/hu/server/users.php b/lang/hu/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/hu/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/hu/strings.php b/lang/hu/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/hu/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/hu/validation.php b/lang/hu/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/hu/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/id/activity.php b/lang/id/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/id/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/id/admin/eggs.php b/lang/id/admin/eggs.php new file mode 100644 index 000000000..133ac5e76 --- /dev/null +++ b/lang/id/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Berhasil mengimport Egg dan variabel terkaitnya.', + 'updated_via_import' => 'Egg ini telah diperbarui menggunakan file yang disediakan.', + 'deleted' => 'Berhasil menghapus Egg dari Panel.', + 'updated' => 'Konfigurasi Egg ini telah berhasil diperbarui.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/id/admin/node.php b/lang/id/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/id/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/id/admin/server.php b/lang/id/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/id/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/id/admin/user.php b/lang/id/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/id/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/id/auth.php b/lang/id/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/id/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/id/command/messages.php b/lang/id/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/id/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/id/dashboard/account.php b/lang/id/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/id/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/id/dashboard/index.php b/lang/id/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/id/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/id/exceptions.php b/lang/id/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/id/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/id/pagination.php b/lang/id/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/id/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/id/passwords.php b/lang/id/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/id/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/id/server/users.php b/lang/id/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/id/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/id/strings.php b/lang/id/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/id/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/id/validation.php b/lang/id/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/id/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/it/activity.php b/lang/it/activity.php new file mode 100644 index 000000000..42a53ac0c --- /dev/null +++ b/lang/it/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Accesso non riuscito', + 'success' => 'Accesso effettuato', + 'password-reset' => 'Reimposta Password', + 'reset-password' => 'Richiedi reimpostazione della password', + 'checkpoint' => 'Autenticazione a due fattori necessaria', + 'recovery-token' => 'Token di recupero a due fattori utilizzato', + 'token' => 'Verifica a due fattori risolta', + 'ip-blocked' => 'Richiesta bloccata dall\'indirizzo IP non elencato per :identifier', + 'sftp' => [ + 'fail' => 'Accesso SFTP non riuscito', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Email modificata da :old a :new', + 'password-changed' => 'Password modificata', + ], + 'api-key' => [ + 'create' => 'Creata una nuova chiave API :identifier', + 'delete' => 'Chiave API eliminata :identifier', + ], + 'ssh-key' => [ + 'create' => 'Chiave SSH :fingerprint aggiunta all\'account', + 'delete' => 'Chiave SSH :impronta rimossa dall\'account', + ], + 'two-factor' => [ + 'create' => 'Autenticazione a due fattori attivata', + 'delete' => 'Autenticazione a due fattori disattivata', + ], + ], + 'server' => [ + 'reinstall' => 'Server reinstallato', + 'console' => [ + 'command' => 'Eseguito ":command" sul server', + ], + 'power' => [ + 'start' => 'Server avviato', + 'stop' => 'Server arrestato', + 'restart' => 'Server riavviato', + 'kill' => 'Processo del server terminato', + ], + 'backup' => [ + 'download' => 'Backup :name scaricato', + 'delete' => 'Backup :name eliminato', + 'restore' => 'Ripristinato il backup :name (file eliminati: :truncate)', + 'restore-complete' => 'Ripristino completato del backup :name', + 'restore-failed' => 'Impossibile completare il ripristino del backup :name', + 'start' => 'Avviato un nuovo backup :name', + 'complete' => 'Contrassegnato il backup :name come completato', + 'fail' => 'Contrassegnato il backup :name come fallito', + 'lock' => 'Bloccato il backup :name', + 'unlock' => 'Sbloccato il backup :name', + ], + 'database' => [ + 'create' => 'Creato un nuovo database :name', + 'rotate-password' => 'Password ruotata per il database :name', + 'delete' => 'Database eliminato :name', + ], + 'file' => [ + 'compress_one' => 'Compresso :directory:file', + 'compress_other' => 'File :count compressi in :directory', + 'read' => 'Visualizzato il contenuto di :file', + 'copy' => 'Creato una copia di :file', + 'create-directory' => 'Cartella creata :directory:name', + 'decompress' => 'Decompresso :files in :directory', + 'delete_one' => 'Eliminato :directory:files.0', + 'delete_other' => 'Eliminati :count file in :directory', + 'download' => 'Scaricato :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/it/admin/eggs.php b/lang/it/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/it/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/it/admin/node.php b/lang/it/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/it/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/it/admin/server.php b/lang/it/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/it/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/it/admin/user.php b/lang/it/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/it/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/it/auth.php b/lang/it/auth.php new file mode 100644 index 000000000..7e759f91a --- /dev/null +++ b/lang/it/auth.php @@ -0,0 +1,27 @@ + 'Login', + 'go_to_login' => 'Vai all\'accesso', + 'failed' => 'Non è stato trovato alcun account corrispondente a queste credenziali.', + + 'forgot_password' => [ + 'label' => 'Password Dimenticata?', + 'label_help' => 'Inserisci l\'indirizzo email del tuo account per ricevere le istruzioni per reimpostare la password.', + 'button' => 'Recupera Account', + ], + + 'reset_password' => [ + 'button' => 'Reimposta e Accedi', + ], + + 'two_factor' => [ + 'label' => 'Token a due fattori', + 'label_help' => 'Questo account richiede un secondo livello di autenticazione per continuare. Inserisci il codice generato dal tuo dispositivo per completare il login.', + 'checkpoint_failed' => 'Il token di autenticazione a due fattori non è valido.', + ], + + 'throttle' => 'Troppi tentativi di accesso. Riprova tra :seconds secondi.', + 'password_requirements' => 'La password deve essere di almeno 8 caratteri e deve essere unica per questo sito.', + '2fa_must_be_enabled' => 'L\'amministratore ha richiesto che l\'autenticazione a due fattori sia abilitata per il tuo account per poter utilizzare il pannello.', +]; diff --git a/lang/it/command/messages.php b/lang/it/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/it/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/it/dashboard/account.php b/lang/it/dashboard/account.php new file mode 100644 index 000000000..78eadb53e --- /dev/null +++ b/lang/it/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Aggiorna la tua email', + 'updated' => 'Il tuo indirizzo email e stato aggiornato.', + ], + 'password' => [ + 'title' => 'Cambia la tua password', + 'requirements' => 'La tua nuova password deve essere lunga almeno 8 caratteri.', + 'updated' => 'La password è stata aggiornata.', + ], + 'two_factor' => [ + 'button' => 'Configura l\'autenticazione a due fattori', + 'disabled' => 'L\'autenticazione a due fattori è stata disabilitata sul tuo account. Non ti sarà più richiesto di fornire un token durante l\'accesso.', + 'enabled' => 'L\'autenticazione a due fattori è stata abilitata sul tuo account! D\'ora in poi, quando accedi, ti sarà richiesto di fornire il codice generato dal tuo dispositivo.', + 'invalid' => 'Il token fornito non è valido.', + 'setup' => [ + 'title' => 'Imposta l\'autenticazione a due fattori', + 'help' => 'Non puoi scansionare il codice? Inserisci il codice qui sotto nella tua applicazione:', + 'field' => 'Inserisci il token', + ], + 'disable' => [ + 'title' => 'Disabilita l\'autenticazione a due fattori', + 'field' => 'Inserisci il token', + ], + ], +]; diff --git a/lang/it/dashboard/index.php b/lang/it/dashboard/index.php new file mode 100644 index 000000000..6262c6d00 --- /dev/null +++ b/lang/it/dashboard/index.php @@ -0,0 +1,8 @@ + 'Ricerca server...', + 'no_matches' => 'Non sono stati trovati server che corrispondono ai criteri di ricerca forniti.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memoria RAM', +]; diff --git a/lang/it/exceptions.php b/lang/it/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/it/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/it/pagination.php b/lang/it/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/it/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/it/passwords.php b/lang/it/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/it/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/it/server/users.php b/lang/it/server/users.php new file mode 100644 index 000000000..8e51138dc --- /dev/null +++ b/lang/it/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Consente l\'accesso al websocket per questo server.', + 'control_console' => 'Consente all\'utente di inviare dati alla console del server.', + 'control_start' => 'Consente all\'utente di avviare l\'istanza del server.', + 'control_stop' => 'Consente all\'utente di arrestare l\'istanza del server.', + 'control_restart' => 'Consente all\'utente di riavviare l\'istanza del server.', + 'control_kill' => 'Permette all\'utente di terminare l\'istanza del server.', + 'user_create' => 'Consente all\'utente di creare nuovi account utente per il server.', + 'user_read' => 'Permette all\'utente di visualizzare gli utenti associati a questo server.', + 'user_update' => 'Permette all\'utente di modificare altri utenti associati a questo server.', + 'user_delete' => 'Permette all\'utente di eliminare altri utenti associati a questo server.', + 'file_create' => 'Permette all\'utente di creare nuovi file e cartelle.', + 'file_read' => 'Consente all\'utente di vedere i file e le cartelle associati a questa istanza del server, così come di visualizzare il loro contenuto.', + 'file_update' => 'Consente all\'utente di aggiornare i file e le cartelle associati al server.', + 'file_delete' => 'Consente all\'utente di eliminare file e cartelle.', + 'file_archive' => 'Permette all\'utente di creare archivi di file e decomprimere gli archivi esistenti.', + 'file_sftp' => 'Consente all\'utente di eseguire le azioni di file sopra indicate utilizzando un client SFTP.', + 'allocation_read' => 'Consente l\'accesso alle pagine di gestione delle allocazioni del server.', + 'allocation_update' => 'Consente all\'utente di apportare modifiche alle allocazioni del server.', + 'database_create' => 'Permette all\'utente di creare un nuovo database per il server.', + 'database_read' => 'Permette all\'utente di visualizzare i database del server.', + 'database_update' => 'Consente all\'utente di apportare modifiche a un database. Se l\'utente non dispone dell\'autorizzazione "Mostra Password" non sarà in grado di modificare la password.', + 'database_delete' => 'Consente all\'utente di eliminare un\'istanza del database.', + 'database_view_password' => 'Consente a un utente di visualizzare una password del database nel sistema.', + 'schedule_create' => 'Consente a un utente di creare una nuova pianificazione per il server.', + 'schedule_read' => 'Consente all\'utente di visualizzare le pianificazioni per un server.', + 'schedule_update' => 'Consente all\'utente di apportare modifiche a una pianificazione server esistente.', + 'schedule_delete' => 'Consente all\'utente di eliminare una programmazione per il server.', + ], +]; diff --git a/lang/it/strings.php b/lang/it/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/it/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/it/validation.php b/lang/it/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/it/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/ja/activity.php b/lang/ja/activity.php new file mode 100644 index 000000000..86ba11df9 --- /dev/null +++ b/lang/ja/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'ログインに失敗しました。', + 'success' => 'ログインしました。', + 'password-reset' => 'パスワードを再設定しました。', + 'reset-password' => 'パスワードの再設定が要求されました。', + 'checkpoint' => '二段階認証が要求されました。', + 'recovery-token' => '二段階認証の回復トークンを使用しました。', + 'token' => '二段階認証を有効化しました。', + 'ip-blocked' => '「:identifier」にないIPアドレスからのリクエストをブロックしました。', + 'sftp' => [ + 'fail' => 'SFTPのログインに失敗しました。', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'メールアドレスを「:old」から「:new」に変更しました。', + 'password-changed' => 'パスワードを変更しました。', + ], + 'api-key' => [ + 'create' => 'APIキー「:identifier」を作成しました。', + 'delete' => 'APIキー「:identifier」を削除しました。', + ], + 'ssh-key' => [ + 'create' => 'SSHキー「:identifier」を追加しました。', + 'delete' => 'SSHキー「:identifier」を削除しました。', + ], + 'two-factor' => [ + 'create' => '二段階認証を有効化しました。', + 'delete' => '二段階認証を無効化しました。', + ], + ], + 'server' => [ + 'reinstall' => 'サーバーを再インストールしました。', + 'console' => [ + 'command' => 'サーバーで「:command」を実行しました。', + ], + 'power' => [ + 'start' => 'サーバーを起動しました。', + 'stop' => 'サーバーを停止しました。', + 'restart' => 'サーバーを再起動しました。', + 'kill' => 'サーバーを強制停止しました。', + ], + 'backup' => [ + 'download' => 'バックアップ「:name」をダウンロードしました。', + 'delete' => 'バックアップ「:name」を削除しました。', + 'restore' => 'バックアップ「:name」を復元しました。(削除されたファイル: :truncate)', + 'restore-complete' => 'バックアップ「:name」から復元しました。', + 'restore-failed' => 'バックアップ「:name」からの復元に失敗しました。', + 'start' => 'バックアップ「:name」を開始しました。', + 'complete' => 'バックアップ「:name」が完了しました。', + 'fail' => 'バックアップ「:name」に失敗しました。', + 'lock' => 'バックアップ「:name」をロックしました。', + 'unlock' => 'バックアップ「:name」のロックを解除しました。', + ], + 'database' => [ + 'create' => 'データベース「:name」を作成しました。', + 'rotate-password' => 'データベース「:name」のパスワードを変更しました。', + 'delete' => 'データベース「:name」を削除しました。', + ], + 'file' => [ + 'compress_one' => 'ファイル「:directory:files」を圧縮しました。', + 'compress_other' => '「:directory」内の:count個のファイルを圧縮しました。', + 'read' => 'ファイル「:file」の内容を表示しました。', + 'copy' => 'ファイル「:file」を複製しました。', + 'create-directory' => 'ディレクトリ「:directory:name」を作成しました。', + 'decompress' => 'ディレクトリ「:directory」内の「:files」を展開しました。', + 'delete_one' => 'ファイル「:directory:file.0」を削除しました。', + 'delete_other' => 'ディレクトリ「:directory」内の:count個のファイルを削除しました。', + 'download' => 'ファイル「:file」をダウンロードしました。', + 'pull' => '「:url」から「:directory」にダウンロードしました。', + 'rename_one' => '「:directory:files.0.from」から「:directory:files.0.to」にファイル名を変更しました。', + 'rename_other' => '「:directory」内の:count個のファイル名を変更しました。', + 'write' => 'ファイル「:file」の内容を変更しました。', + 'upload' => 'ファイルをアップロードしました。', + 'uploaded' => 'ファイル「:directory:file」をアップロードしました。', + ], + 'sftp' => [ + 'denied' => 'SFTPアクセスをブロックしました。', + 'create_one' => 'ファイル「:files.0」を作成しました。', + 'create_other' => ':count個のファイルを作成しました。', + 'write_one' => '「:files.0」の内容を変更しました。', + 'write_other' => ':count個のファイルの内容を変更しました。', + 'delete_one' => 'ファイル「:files.0」を削除しました。', + 'delete_other' => ':count個のファイルを削除しました。', + 'create-directory_one' => 'ディレクトリ「:files.0」を作成しました。', + 'create-directory_other' => ':count個のディレクトリを作成しました。', + 'rename_one' => '「:files.0.from」から「:files.0.to」に名前を変更しました。', + 'rename_other' => ':count個のファイル名を変更しました。', + ], + 'allocation' => [ + 'create' => 'ポート「:allocation」を割り当てました。', + 'notes' => 'ポート「:allocation」のメモを「:old」から「:new」に更新しました。', + 'primary' => 'ポート「:allocation」をプライマリとして割り当てました。', + 'delete' => 'ポート「:allocation」を削除しました。', + ], + 'schedule' => [ + 'create' => 'スケジュール「:name」を作成しました。', + 'update' => 'スケジュール「:name」を更新しました。', + 'execute' => 'スケジュール「:name」を手動で実行しました。', + 'delete' => 'スケジュール「:name」を削除しました。', + ], + 'task' => [ + 'create' => 'スケジュール「:name」にタスク「:action」を作成しました。', + 'update' => 'スケジュール「:name」のタスク「:action」を更新しました。', + 'delete' => 'スケジュール「:name」のタスクを削除しました。', + ], + 'settings' => [ + 'rename' => 'サーバー名を「:old」から「:new」に変更しました。', + 'description' => 'サーバー説明を「:old」から「:new」に変更しました。', + ], + 'startup' => [ + 'edit' => '変数「:variable」を「:old」から「:new」に変更しました。', + 'image' => 'Dockerイメージを「:old」から「:new」に更新しました。', + ], + 'subuser' => [ + 'create' => 'サブユーザー「:email」を追加しました。', + 'update' => 'サブユーザー「:email」の権限を変更しました。', + 'delete' => 'サブユーザー「:email」を削除しました。', + ], + ], +]; diff --git a/lang/ja/admin/eggs.php b/lang/ja/admin/eggs.php new file mode 100644 index 000000000..7791ad4c3 --- /dev/null +++ b/lang/ja/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'この卵と関連する変数を正常にインポートしました。', + 'updated_via_import' => '指定されたファイルを使用してこの卵を更新しました。', + 'deleted' => '要求された卵をパネルから削除しました。', + 'updated' => '卵の設定が更新されました。', + 'script_updated' => 'Eggのインストールスクリプトが更新され、サーバーがインストールされるたびに実行されます。', + 'egg_created' => '新しい卵が生成されました。この新しい卵を適用するには、実行中のデーモンを再起動する必要があります。', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => '変数 ":variable" が削除され、再構築されると、サーバーで使用できなくなります。', + 'variable_updated' => '変数 ":variable" が更新されました。変更を適用するには、この変数を使用しているサーバーを再構築する必要があります。', + 'variable_created' => '新しい変数が作成され、この卵に割り当てられました。', + ], + ], +]; diff --git a/lang/ja/admin/node.php b/lang/ja/admin/node.php new file mode 100644 index 000000000..8c7f5b6fc --- /dev/null +++ b/lang/ja/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => '提供された FQDN または IP アドレスは、有効な IP アドレスには解決しません。', + 'fqdn_required_for_ssl' => 'このノードにSSLを使用するには、ドメイン名が必要です。', + ], + 'notices' => [ + 'allocations_added' => 'このノードに割り当てを追加しました。', + 'node_deleted' => 'ノードがパネルから削除されました。', + 'node_created' => '正常に新しいノードを作成しました。「設定」タブでデーモンを自動的に設定できます。 サーバーを追加する前に、最初に少なくとも1つのIPアドレスとポートを割り当てる必要があります。', + 'node_updated' => 'ノード情報が更新されました。デーモンの設定が変更された場合は、変更を反映するために再起動する必要があります。', + 'unallocated_deleted' => ':ip に割り当てられていないポートをすべて削除しました。', + ], +]; diff --git a/lang/ja/admin/server.php b/lang/ja/admin/server.php new file mode 100644 index 000000000..ff62b4ccc --- /dev/null +++ b/lang/ja/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'このサーバーのデフォルトの割り当てを削除しようとしていますが、使用するフォールバック割り当てはありません。', + 'marked_as_failed' => 'このサーバーは以前のインストールに失敗しています。この状態で現在の状態を切り替えることはできません。', + 'bad_variable' => ':name 変数の検証エラーが発生しました。', + 'daemon_exception' => 'HTTP/:code応答コードを生成するデーモンと通信しようとしたときに例外が発生しました。この例外はログ収集されました。(リクエスト id: :request_id)', + 'default_allocation_not_found' => '要求されたデフォルトの割り当てがこのサーバーの割り当てに見つかりませんでした。', + ], + 'alerts' => [ + 'startup_changed' => 'このサーバーの起動設定が更新されました。このサーバーの卵が変更された場合、再インストールが行われます。', + 'server_deleted' => 'サーバーがシステムから削除されました。', + 'server_created' => 'サーバーはパネルに正常に作成されました。デーモンがこのサーバーを完全にインストールするまで数分間お待ちください。', + 'build_updated' => 'このサーバーのビルド詳細が更新されました。一部の変更を有効にするには再起動が必要な場合があります。', + 'suspension_toggled' => 'サーバーの保留状態が :status に変更されました。', + 'rebuild_on_boot' => 'このサーバーはDockerコンテナの再構築が必要です。サーバーが次回起動されたときに行われます。', + 'install_toggled' => 'このサーバーのインストールステータスが切り替わりました。', + 'server_reinstalled' => 'このサーバーは今から再インストールを開始するためにキューに入れられています。', + 'details_updated' => 'サーバーの詳細が更新されました。', + 'docker_image_updated' => 'このサーバーで使用するデフォルトの Docker イメージを変更しました。この変更を適用するには再起動が必要です。', + 'node_required' => 'このパネルにノードを追加する前に、少なくとも1つのロケーションを設定する必要があります。', + 'transfer_nodes_required' => 'サーバーを転送するには、少なくとも2つのノードが設定されている必要があります。', + 'transfer_started' => 'サーバー転送を開始しました。', + 'transfer_not_viable' => '選択したノードには、このサーバに対応するために必要なディスク容量またはメモリが足りません。', + ], +]; diff --git a/lang/ja/admin/user.php b/lang/ja/admin/user.php new file mode 100644 index 000000000..2ed7743a9 --- /dev/null +++ b/lang/ja/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'アクティブなサーバーを持つユーザーは削除できません。続行する前にサーバーを削除してください。', + 'user_is_self' => '自分のユーザーアカウントは削除できません。', + ], + 'notices' => [ + 'account_created' => 'アカウントを作成しました。', + 'account_updated' => 'アカウントが更新されました。', + ], +]; diff --git a/lang/ja/auth.php b/lang/ja/auth.php new file mode 100644 index 000000000..b19630781 --- /dev/null +++ b/lang/ja/auth.php @@ -0,0 +1,27 @@ + 'ログイン', + 'go_to_login' => 'ログイン画面に移動', + 'failed' => '入力された情報に一致するアカウントが見つかりませんでした。', + + 'forgot_password' => [ + 'label' => 'パスワードを忘れた場合', + 'label_help' => 'パスワードを再設定する手順を受け取るには、アカウントのメールアドレスを入力してください。', + 'button' => 'アカウントの回復', + ], + + 'reset_password' => [ + 'button' => '再設定しログイン', + ], + + 'two_factor' => [ + 'label' => '二段階認証のトークン', + 'label_help' => '続行するには、6桁の認証コードが必要です。お使いのデバイスで生成されたコードを入力してください。', + 'checkpoint_failed' => '二段階認証のコードが無効です。', + ], + + 'throttle' => 'ログイン試行回数が多すぎます。:seconds秒後にもう一度お試しください。', + 'password_requirements' => 'パスワードは8文字以上で、推測されにくいパスワードを使用してください。', + '2fa_must_be_enabled' => '管理者は、このPanelの使用に二段階認証を必須にしています。', +]; diff --git a/lang/ja/command/messages.php b/lang/ja/command/messages.php new file mode 100644 index 000000000..6e51ea18d --- /dev/null +++ b/lang/ja/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'ユーザー名、ユーザーID、またはメールアドレスを入力してください', + 'select_search_user' => '削除するユーザーID(再検索するには\'0\'を入力してください)', + 'deleted' => 'ユーザーをパネルから削除しました。', + 'confirm_delete' => 'グループからこのユーザを削除しますか?', + 'no_users_found' => '指定された検索条件に対するユーザーが見つかりませんでした。', + 'multiple_found' => '指定されたユーザーに対して複数のアカウントが見つかりました。--no-interaction フラグのため、ユーザーを削除できません。', + 'ask_admin' => 'このユーザーは管理者ですか?', + 'ask_email' => 'メールアドレス', + 'ask_username' => 'ユーザー名', + 'ask_name_first' => '名', + 'ask_name_last' => '姓', + 'ask_password' => 'パスワード', + 'ask_password_tip' => 'ランダムなパスワードでアカウントを作成したい場合は、このコマンド(CTRL+C) を実行し、`--no-password` フラグを渡してください。', + 'ask_password_help' => 'パスワードは8文字以上で、少なくとも1つの大文字と数字が含まれている必要があります。', + '2fa_help_text' => [ + 'このコマンドが有効になっている場合、ユーザーのアカウントの二段階認証を無効にします。 これは、ユーザーがアカウントからロックアウトされている場合にのみ、アカウント回復コマンドとして使用する必要があります。', + 'この動作を行わない場合は、CTRL+C を押してこのプロセスを終了します。', + ], + '2fa_disabled' => '二段階認証が:emailで無効になりました。', + ], + 'schedule' => [ + 'output_line' => '`:schedule` (:hash) で最初のタスクのジョブを送信しています。', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'サービスバックアップファイル:fileを削除しています。', + ], + 'server' => [ + 'rebuild_failed' => 'ノード":node"の":name"(#:id)の再構築リクエストがエラーで失敗しました: :message', + 'reinstall' => [ + 'failed' => 'ノード ":node" の ":name" (#:id) の再インストールリクエストがエラーで失敗しました: :message', + 'confirm' => 'サーバーのグループに対して再インストールしようとしています。続行しますか?', + ], + 'power' => [ + 'confirm' => ':countサーバーに対して:actionを実行しようとしています。続行しますか?', + 'action_failed' => 'ノード ":node" の ":name" (#:id) の電源アクションリクエストはエラーで失敗しました: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTPホスト (例: smtp.gmail.com)', + 'ask_smtp_port' => 'SMTPポート', + 'ask_smtp_username' => 'SMTPユーザ名', + 'ask_smtp_password' => 'SMTPパスワード', + 'ask_mailgun_domain' => 'Mailgunドメイン', + 'ask_mailgun_endpoint' => 'Mailgun エンドポイント', + 'ask_mailgun_secret' => 'Mailgunシークレット', + 'ask_mandrill_secret' => 'Mandrillシークレット', + 'ask_postmark_username' => 'Postmark APIキー', + 'ask_driver' => 'メールを送信するためにどのドライバーを使用する必要がありますか?', + 'ask_mail_from' => 'メールアドレスのメール送信元', + 'ask_mail_name' => 'メールアドレスの表示先名', + 'ask_encryption' => '暗号化の方法', + ], + ], +]; diff --git a/lang/ja/dashboard/account.php b/lang/ja/dashboard/account.php new file mode 100644 index 000000000..c855f1881 --- /dev/null +++ b/lang/ja/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'メールアドレスの更新', + 'updated' => 'メールアドレスが更新されました。', + ], + 'password' => [ + 'title' => 'パスワードの変更', + 'requirements' => '新しいパスワードは8文字以上である必要があります。', + 'updated' => 'パスワードが更新されました。', + ], + 'two_factor' => [ + 'button' => '2段階認証の設定', + 'disabled' => '二段階認証があなたのアカウントで無効になっています。ログイン時にトークンを提供するように求められなくなります。', + 'enabled' => '二段階認証がアカウントで有効になりました! これからログインする際には、デバイスによって生成されたコードを入力する必要があります。', + 'invalid' => '入力されたトークンは無効です。', + 'setup' => [ + 'title' => '二段階認証のセットアップ', + 'help' => 'コードをスキャンできませんか?以下のコードをアプリケーションに入力してください:', + 'field' => 'トークンを入力', + ], + 'disable' => [ + 'title' => '二段階認証を無効にする', + 'field' => 'トークンを入力', + ], + ], +]; diff --git a/lang/ja/dashboard/index.php b/lang/ja/dashboard/index.php new file mode 100644 index 000000000..3c49cbe18 --- /dev/null +++ b/lang/ja/dashboard/index.php @@ -0,0 +1,8 @@ + 'サーバーを検索', + 'no_matches' => '検索条件に一致するサーバーが見つかりませんでした。', + 'cpu_title' => 'CPU', + 'memory_title' => 'メモリ', +]; diff --git a/lang/ja/exceptions.php b/lang/ja/exceptions.php new file mode 100644 index 000000000..2e9bf78f1 --- /dev/null +++ b/lang/ja/exceptions.php @@ -0,0 +1,55 @@ + 'HTTP/:code応答コードを生成するデーモンと通信しようとしたときに例外が発生しました。この例外はログ収集されました。', + 'node' => [ + 'servers_attached' => '削除するには、ノードにサーバーがリンクされていない必要があります。', + 'daemon_off_config_updated' => 'デーモンの設定が更新されました。しかし、デーモンの設定ファイルを自動的に更新しようとする際にエラーが発生しました。 これらの変更を適用するには、デーモンの設定ファイル(config.yml)を手動で更新する必要があります。', + ], + 'allocations' => [ + 'server_using' => '現在サーバーは割り当てられています。割り当てはサーバーが現在割り当てられていない場合にのみ削除できます。', + 'too_many_ports' => '一度に1000以上のポートを追加することはできません。', + 'invalid_mapping' => ':port のために提供されたマッピングは無効で、処理することができませんでした。', + 'cidr_out_of_range' => 'CIDR表記では/25から/32までのマスクのみ使用できます。', + 'port_out_of_range' => '割り当てのポートは 1024 以上、65535 以下である必要があります。', + ], + 'egg' => [ + 'delete_has_servers' => 'アクティブなサーバーがアタッチされたEggはパネルから削除できません。', + 'invalid_copy_id' => 'スクリプトをコピーするために選択されたEggが存在しないか、スクリプト自体をコピーしています。', + 'has_children' => 'このEggは、1つ以上の他のEggの親になっています。このEggを削除する前に、それらのEggを削除してください。', + ], + 'variables' => [ + 'env_not_unique' => '環境変数「:name」はこの卵に固有でなければなりません。', + 'reserved_name' => '環境変数「:name」は保護されているため、変数に割り当てることはできません。', + 'bad_validation_rule' => '検証ルール ":rule" は、このアプリケーションの有効なルールではありません。', + ], + 'importer' => [ + 'json_error' => 'JSON ファイルの解析中にエラーが発生しました: :error', + 'file_error' => '指定された JSON ファイルは無効です。', + 'invalid_json_provided' => '指定された JSON ファイルは認識可能な形式ではありません。', + ], + 'subusers' => [ + 'editing_self' => '自分のサブユーザーアカウントの編集は許可されていません。', + 'user_is_owner' => 'このサーバーのサブユーザーとしてサーバーの所有者を追加することはできません。', + 'subuser_exists' => 'そのメールアドレスを持つユーザーは、このサーバーのサブユーザーとしてすでに割り当てられています。', + ], + 'databases' => [ + 'delete_has_databases' => 'アクティブなデータベースがリンクされているデータベースサーバーは削除できません。', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'チェーンタスクの最大インターバルは15分です。', + ], + 'locations' => [ + 'has_nodes' => 'アクティブなノードがアタッチされている場所は削除できません。', + ], + 'users' => [ + 'node_revocation_failed' => 'Node #:nodeのキーの取り消しに失敗しました。:error', + ], + 'deployment' => [ + 'no_viable_nodes' => '自動デプロイメントのために指定された要件を満たすノードは見つかりませんでした。', + 'no_viable_allocations' => '自動デプロイの要件を満たす割り当ては見つかりませんでした。', + ], + 'api' => [ + 'resource_not_found' => 'リクエストされたリソースはこのサーバーに存在しません。', + ], +]; diff --git a/lang/ja/pagination.php b/lang/ja/pagination.php new file mode 100644 index 000000000..3c1e11379 --- /dev/null +++ b/lang/ja/pagination.php @@ -0,0 +1,17 @@ + '« 前', + 'next' => '次 »', +]; diff --git a/lang/ja/passwords.php b/lang/ja/passwords.php new file mode 100644 index 000000000..2d2215cba --- /dev/null +++ b/lang/ja/passwords.php @@ -0,0 +1,19 @@ + 'パスワードは6文字以上で確認と一致しなければなりません。', + 'reset' => 'パスワードを再設定しました。', + 'sent' => 'パスワードの再設定URLをメールアドレス宛に送信しました。', + 'token' => 'このパスワードの再設定トークンは無効です。', + 'user' => '入力されたメールアドレスのユーザーは見つかりません。', +]; diff --git a/lang/ja/server/users.php b/lang/ja/server/users.php new file mode 100644 index 000000000..1918affcc --- /dev/null +++ b/lang/ja/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'このサーバーの websocket へのアクセスを許可します。', + 'control_console' => 'ユーザーがサーバーコンソールにデータを送信することを許可します。', + 'control_start' => 'ユーザーがサーバーインスタンスを開始することを許可します。', + 'control_stop' => 'ユーザーがサーバーインスタンスを停止することを許可します。', + 'control_restart' => 'ユーザーがサーバーインスタンスを再起動することを許可します。', + 'control_kill' => 'ユーザーがサーバーインスタンスを強制終了することを許可します。', + 'user_create' => 'ユーザーがサーバーの新しいユーザーアカウントを作成することを許可します。', + 'user_read' => 'このサーバーに関連付けられているユーザーを表示する権限をユーザーに許可します。', + 'user_update' => 'このサーバーに関連付けられている他のユーザーを変更することをユーザーに許可します。', + 'user_delete' => 'このサーバーに関連付けられている他のユーザーの削除を許可します。', + 'file_create' => '新しいファイルとディレクトリを作成する権限をユーザーに許可します。', + 'file_read' => 'ユーザーがこのサーバーインスタンスに関連付けられているファイルやフォルダを表示したり、その内容を表示することを許可します。', + 'file_update' => 'ユーザーがサーバーに関連付けられているファイルとフォルダを更新することを許可します。', + 'file_delete' => 'ユーザーがファイルとディレクトリを削除することを許可します。', + 'file_archive' => 'ユーザーがファイルを圧縮、展開を許可します。', + 'file_sftp' => 'SFTPクライアントを使用して上記のファイル操作を実行することを許可します。', + 'allocation_read' => 'サーバー割り当て管理ページへのアクセスを許可します。', + 'allocation_update' => 'サーバーの割り当てを変更する権限をユーザーに許可します。', + 'database_create' => 'ユーザーがサーバーの新しいデータベースを作成することを許可します。', + 'database_read' => 'ユーザーがサーバーデータベースを表示することを許可します。', + 'database_update' => 'ユーザーがデータベースを変更する許可を与えます。 ユーザーが「パスワードを表示」権限を持っていない場合、パスワードを変更することはできません。', + 'database_delete' => 'ユーザーがデータベースインスタンスを削除することを許可します。', + 'database_view_password' => 'ユーザーがシステム内のデータベースパスワードを表示することを許可します。', + 'schedule_create' => 'ユーザーがサーバーの新しいスケジュールを作成することを許可します', + 'schedule_read' => 'ユーザーがサーバーのスケジュールを表示することを許可します。', + 'schedule_update' => '既存のサーバーのスケジュールを変更することをユーザーに許可します。', + 'schedule_delete' => 'ユーザーがサーバのスケジュールを削除することを許可します。', + ], +]; diff --git a/lang/ja/strings.php b/lang/ja/strings.php new file mode 100644 index 000000000..b2b0e6a29 --- /dev/null +++ b/lang/ja/strings.php @@ -0,0 +1,95 @@ + 'メール', + 'email_address' => 'メールアドレス', + 'user_identifier' => 'ユーザー名またはメールアドレス', + 'password' => 'パスワード', + 'new_password' => '新しいパスワード', + 'confirm_password' => '新しいパスワードの確認', + 'login' => 'ログイン', + 'home' => 'ホーム', + 'servers' => 'サーバー', + 'id' => 'ID', + 'name' => '名前', + 'node' => 'ノード', + 'connection' => '接続', + 'memory' => 'メモリ', + 'cpu' => 'CPU', + 'disk' => 'ディスク', + 'status' => '状態', + 'search' => '検索', + 'suspended' => '一時停止中', + 'account' => 'アカウント', + 'security' => 'セキュリティ', + 'ip' => 'IPアドレス', + 'last_activity' => '最後のアクティビティ', + 'revoke' => '取り消す', + '2fa_token' => '認証トークン', + 'submit' => '送信', + 'close' => '閉じる', + 'settings' => '設定', + 'configuration' => '構成', + 'sftp' => 'SFTP', + 'databases' => 'データベース', + 'memo' => 'メモ', + 'created' => '作成', + 'expires' => '期限', + 'public_key' => 'トークン', + 'api_access' => 'APIアクセス', + 'never' => 'しない', + 'sign_out' => 'ログアウト', + 'admin_control' => '管理者コントロール', + 'required' => '必須', + 'port' => 'ポート', + 'username' => 'ユーザー名', + 'database' => 'データベース', + 'new' => '新規', + 'danger' => '危険', + 'create' => '作成', + 'select_all' => 'すべて選択', + 'select_none' => '選択なし', + 'alias' => 'エイリアス', + 'primary' => 'プライマリ', + 'make_primary' => 'プライマリに変更', + 'none' => 'なし', + 'cancel' => 'キャンセル', + 'created_at' => '作成日', + 'action' => 'アクション', + 'data' => 'データ', + 'queued' => '処理待ち', + 'last_run' => '前回実行', + 'next_run' => '次回実行', + 'not_run_yet' => '未実行', + 'yes' => 'はい', + 'no' => 'いいえ', + 'delete' => '削除', + '2fa' => '二段階認証', + 'logout' => 'ログアウト', + 'admin_cp' => '管理者コントロールパネル', + 'optional' => 'オプション', + 'read_only' => '読み取り専用', + 'relation' => '関連', + 'owner' => '所有者', + 'admin' => '管理者', + 'subuser' => 'サブユーザー', + 'captcha_invalid' => '指定されたCAPTCHAは無効です。', + 'tasks' => 'タスク', + 'seconds' => '秒', + 'minutes' => '分', + 'under_maintenance' => 'メンテナンス中', + 'days' => [ + 'sun' => '日曜日', + 'mon' => '月曜日', + 'tues' => '火曜日', + 'wed' => '水曜日', + 'thurs' => '木曜日', + 'fri' => '金曜日', + 'sat' => '土曜日', + ], + 'last_used' => '前回使用', + 'enable' => '有効', + 'disable' => '無効', + 'save' => '保存', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/ja/validation.php b/lang/ja/validation.php new file mode 100644 index 000000000..e9e98d8bf --- /dev/null +++ b/lang/ja/validation.php @@ -0,0 +1,106 @@ + ':attributeを承認してください。', + 'active_url' => ':attributeは、有効なURLではありません。', + 'after' => ':attributeには、:dateより後の日付を指定してください。', + 'after_or_equal' => ':attribute は :date と同じ日付かそれ以降でなければいけません。', + 'alpha' => ':attributeには、アルファベッドのみ使用できます。', + 'alpha_dash' => ':attributeには、英数字(\'A-Z\',\'a-z\',\'0-9\')とハイフン(-)が使用できます。', + 'alpha_num' => ':attributeには、英数字(\'A-Z\',\'a-z\',\'0-9\')が使用できます。', + 'array' => ':attributeには、配列を指定してください。', + 'before' => ':attribute は :date よりも前の日付である必要があります。', + 'before_or_equal' => ':attributeには、:date以前の日付を指定してください。', + 'between' => [ + 'numeric' => ':attribute は :min から :max キロバイトである必要があります。', + 'file' => ':attributeには、:min KBから:max KBまでのサイズのファイルを指定してください。', + 'string' => ':attributeは、:min文字から:max文字にしてください。', + 'array' => ':attributeの項目は、:min個から:max個にしてください。', + ], + 'boolean' => ':attribute はtrueかfalseである必要があります。', + 'confirmed' => ':attribute の確認が一致しません。', + 'date' => ':attribute が正しい日付ではありません。', + 'date_format' => ':attribute は :format のフォーマットと一致しません。', + 'different' => ':attributeと:otherは異なる必要があります。', + 'digits' => ':attributeは:digits桁である必要があります。', + 'digits_between' => ':attribute は :min から :max 桁である必要があります。', + 'dimensions' => ':attribute は無効な画像サイズです。', + 'distinct' => ':attributeの値が重複しています。', + 'email' => ':attribute はメールアドレスの形式ではありません。', + 'exists' => '選択した :attributeは 無効です。', + 'file' => ':attribute はファイルである必要があります。', + 'filled' => ':attribute の項目は必ず入力する必要があります。', + 'image' => ':attribute は画像である必要があります。', + 'in' => '選択した :attributeは 無効です。', + 'in_array' => ':attributeが:otherに存在しません。', + 'integer' => ':attribute は整数である必要があります。', + 'ip' => ':attributeは正しいIPアドレスである必要があります。', + 'json' => ':attributeは有効なJSON文字列である必要があります。', + 'max' => [ + 'numeric' => ':attributeは:max以下である必要があります。', + 'file' => ':attributeは:maxキロバイト以下である必要があります。', + 'string' => ':attribute は :max 文字以下である必要があります。', + 'array' => ':attributeは:max個のアイテム以下である必要があります。', + ], + 'mimes' => ':attributeは:valuesのファイル形式である必要があります。', + 'mimetypes' => ':attributeは:valuesのファイル形式である必要があります。', + 'min' => [ + 'numeric' => ':attribute は :min 以上である必要があります。', + 'file' => ':attribute は最低 :min キロバイト以上である必要があります。', + 'string' => ':attribute は最低 :min 文字以上である必要があります。', + 'array' => ':attributeは:min個以上である必要があります。', + ], + 'not_in' => '選択した :attributeは 無効です。', + 'numeric' => ':attributeは数字である必要があります。', + 'present' => ':attribute の項目は必ず入力する必要があります。', + 'regex' => ':attributeの形式が無効です。', + 'required' => ':attribute は必須です。', + 'required_if' => ':other の項目が :value の場合、:attribute を入力する必要があります。', + 'required_unless' => ':other の項目が :value でない場合、:attribute を入力する必要があります。', + 'required_with' => ':valuesが指定されている場合、:attributeは必須です。', + 'required_with_all' => ':valuesが指定されている場合、:attributeは必須です。', + 'required_without' => ':valuesが設定されていない場合、:attributeは必須です。', + 'required_without_all' => ':valuesが一つも存在しない場合、:attributeの項目は必須です。', + 'same' => ':attribute と :other は一致している必要があります。', + 'size' => [ + 'numeric' => ':attribute のサイズは :size である必要があります。', + 'file' => ':attribute のサイズは :size キロバイトである必要があります。', + 'string' => ':attribute は :size 文字である必要があります。', + 'array' => ':attribute は :size 個である必要があります。', + ], + 'string' => ':attribute は文字列である必要があります。', + 'timezone' => ':attributeは有効なゾーンである必要があります。', + 'unique' => ':attribute は既に使用されています。', + 'uploaded' => ':attribute のアップロードに失敗しました。', + 'url' => ':attribute の形式が無効です。', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env 変数', + 'invalid_password' => '入力されたパスワードは無効です。', + ], +]; diff --git a/lang/ko/activity.php b/lang/ko/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/ko/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/ko/admin/eggs.php b/lang/ko/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/ko/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/ko/admin/node.php b/lang/ko/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/ko/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/ko/admin/server.php b/lang/ko/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/ko/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/ko/admin/user.php b/lang/ko/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/ko/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/ko/auth.php b/lang/ko/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/ko/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/ko/command/messages.php b/lang/ko/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/ko/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/ko/dashboard/account.php b/lang/ko/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/ko/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/ko/dashboard/index.php b/lang/ko/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/ko/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/ko/exceptions.php b/lang/ko/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/ko/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/ko/pagination.php b/lang/ko/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/ko/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/ko/passwords.php b/lang/ko/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/ko/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/ko/server/users.php b/lang/ko/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/ko/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/ko/strings.php b/lang/ko/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/ko/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/ko/validation.php b/lang/ko/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/ko/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/nl/activity.php b/lang/nl/activity.php new file mode 100644 index 000000000..8e1d5726b --- /dev/null +++ b/lang/nl/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Inloggen mislukt', + 'success' => 'Ingelogd', + 'password-reset' => 'Wachtwoord resetten', + 'reset-password' => 'Wachtwoord reset aangevraagd', + 'checkpoint' => 'Tweestapsverificatie aangevraagd', + 'recovery-token' => 'Token voor tweestapsverificatie herstel gebruikt', + 'token' => 'Tweestapsverificatie voltooid', + 'ip-blocked' => 'Geblokkeerd verzoek van niet in de lijst opgenomen IP-adres voor :identifier', + 'sftp' => [ + 'fail' => 'Mislukte SFTP login', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'E-mailadres gewijzigd van :old naar :new', + 'password-changed' => 'Wachtwoord gewijzigd', + ], + 'api-key' => [ + 'create' => 'Nieuwe API-sleutel aangemaakt :identifier', + 'delete' => 'API-sleutel verwijderd :identifier', + ], + 'ssh-key' => [ + 'create' => 'SSH sleutel :fingerprint aan account toegevoegd', + 'delete' => 'SSH sleutel :fingerprint verwijderd van account', + ], + 'two-factor' => [ + 'create' => 'Tweestapsverificatie ingeschakeld', + 'delete' => 'Tweestapsverificatie uitgeschakeld', + ], + ], + 'server' => [ + 'reinstall' => 'Opnieuw geinstalleerde server', + 'console' => [ + 'command' => '":command" is uitgevoerd op de server', + ], + 'power' => [ + 'start' => 'De server is gestart', + 'stop' => 'De server is gestopt', + 'restart' => 'De server is herstart', + 'kill' => 'De server is gekilled', + ], + 'backup' => [ + 'download' => ':name back-up is gedownload', + 'delete' => 'De :name back-up verwijderd', + 'restore' => 'De :name back-up hersteld (verwijderde bestanden: :truncate)', + 'restore-complete' => 'Herstel van de :name back-up voltooid', + 'restore-failed' => 'Gefaald om de backup :name te herstellen', + 'start' => 'Het maken van backup :name is gestart', + 'complete' => 'De back-up :name gemarkeerd als voltooid', + 'fail' => 'De backup :name has failed', + 'lock' => 'Backup :name vergrendeld', + 'unlock' => 'Backup :name ontgrendeld', + ], + 'database' => [ + 'create' => 'Database :name gemaakt', + 'rotate-password' => 'Wachtwoord geroteerd voor database :name', + 'delete' => 'Database :name verwijderd', + ], + 'file' => [ + 'compress_one' => 'Gecomprimeerd :directory:bestand', + 'compress_other' => 'Gecomprimeerd :count bestanden in :directory', + 'read' => 'De inhoud van :file is bekeken', + 'copy' => 'Kopie gemaakt van :file', + 'create-directory' => 'Map :directory:name aangemaakt', + 'decompress' => 'Uitgepakt :files in :directory', + 'delete_one' => 'Verwijderd :directory:files.0', + 'delete_other' => 'Verwijderde :count bestanden in :directory', + 'download' => ':file gedownload', + 'pull' => 'Een extern bestand gedownload van :url naar :directory', + 'rename_one' => ':directory:files.0.from naar :directory:files.0.to hernoemd', + 'rename_other' => ':count bestanden in :directory hernoemd', + 'write' => 'Nieuwe inhoud geschreven naar :file', + 'upload' => 'Bestandsupload is gestart', + 'uploaded' => ':directory:file geüpload', + ], + 'sftp' => [ + 'denied' => 'Geblokkeerde SFTP toegang vanwege machtigingen', + 'create_one' => ':files.0 aangemaakt', + 'create_other' => ':count nieuwe bestanden aangemaakt', + 'write_one' => 'De inhoud van :files.0 gewijzigd', + 'write_other' => 'De inhoud van :count bestanden gewijzigd', + 'delete_one' => ':files.0 verwijderd', + 'delete_other' => ':count bestanden verwijderd', + 'create-directory_one' => 'Map :files.0 aangemaakt', + 'create-directory_other' => ':count mappen aangemaakt', + 'rename_one' => ':files.0.from naar :files.0.to hernoemd', + 'rename_other' => ':count bestanden hernoemd of verplaatst', + ], + 'allocation' => [ + 'create' => ':allocation aan de server toegevoegd', + 'notes' => 'De notitie voor :allocation van ":old" is gewijzigd naar ":new"', + 'primary' => ':allocation is als de primaire server toewijzing ingesteld', + 'delete' => ':allocation toewijzing verwijderd', + ], + 'schedule' => [ + 'create' => 'Taak :name aangemaakt', + 'update' => 'Taak :name bewerkt', + 'execute' => 'Taak :name handmatig uitgevoerd', + 'delete' => 'Taak :name verwijderd', + ], + 'task' => [ + 'create' => 'Nieuwe ":action" opdracht aangemaakt voor de taak :name', + 'update' => '":action" opdracht aangepast voor de taak :name', + 'delete' => 'Opdracht verwijderd de taak :name', + ], + 'settings' => [ + 'rename' => 'Server hernoemd van :old naar :new', + 'description' => 'De beschrijving van de server veranderd van :old naar :new', + ], + 'startup' => [ + 'edit' => 'De :variable variabele van ":old" naar ":new" gewijzigd', + 'image' => 'Docker image van de server is aangepast van :old naar :new', + ], + 'subuser' => [ + 'create' => ':email toegevoegd als medegebruiker', + 'update' => 'Permissies van medegebruiker :email gewijzigd', + 'delete' => ':email verwijderd als medegebruiker', + ], + ], +]; diff --git a/lang/nl/admin/eggs.php b/lang/nl/admin/eggs.php new file mode 100644 index 000000000..8386da35b --- /dev/null +++ b/lang/nl/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Het importeren van deze egg en de bijbehorende variabelen is geslaagd.', + 'updated_via_import' => 'Deze egg is bijgewerkt met behulp van het opgegeven bestand.', + 'deleted' => 'De aangevraagde egg is met succes uit het paneel verwijderd.', + 'updated' => 'Egg configuratie is met succes bijgewerkt.', + 'script_updated' => 'Egg install script is bijgewerkt en wordt uitgevoerd wanneer er servers worden geïnstalleerd.', + 'egg_created' => 'Een nieuw egg is met succes toegevoegd. U moet elke lopende daemon opnieuw opstarten om deze nieuwe egg toe te passen.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'De variabele ":variable" is verwijderd en zal niet meer beschikbaar zijn voor servers nadat deze opnieuw zijn opgebouwd.', + 'variable_updated' => 'De variabele ":variable" is bijgewerkt. Je moet elke server opnieuw opbouwen met deze variabele om wijzigingen toe te passen.', + 'variable_created' => 'Er is een nieuwe variabele aangemaakt en toegewezen aan deze egg.', + ], + ], +]; diff --git a/lang/nl/admin/node.php b/lang/nl/admin/node.php new file mode 100644 index 000000000..7aeb8c611 --- /dev/null +++ b/lang/nl/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'De opgegeven FQDN of IP adres kan niet gekoppeld worden aan een geldig IP-adres.', + 'fqdn_required_for_ssl' => 'Een volledig domein naam welke naar een openbaar IP-adres wijst is nodig om SSL te gebruiken op deze node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocaties zijn succesvol toegevoegd aan deze node.', + 'node_deleted' => 'De node is succesvol verwijderd van het paneel.', + 'node_created' => 'De node is succesvol aangemaakt. Je kan automatisch de daemon configureren op deze machine door het tabje \'Configuratie\' te bezoeken. Voordat je servers kan aanmaken, moet je minimaal één IP-adres en poort toewijzen.', + 'node_updated' => 'Node informatie is bijgewerkt. Als de daemon instellingen zijn aangepast, dien je de daemon te herstarten om wijzigingen toe te passen.', + 'unallocated_deleted' => 'Alle niet toegewezen poorten zijn verwijderd voor: ip', + ], +]; diff --git a/lang/nl/admin/server.php b/lang/nl/admin/server.php new file mode 100644 index 000000000..ba847100a --- /dev/null +++ b/lang/nl/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Je probeert om een standaard toewijzing te verwijderen van de server, maar er is geen alternatieve toewijzing aanwezig.', + 'marked_as_failed' => 'De server heeft een fout gedetecteerd bij een voorgaande installatie. De huidige status kan niet worden veranderd in deze status.', + 'bad_variable' => 'Er was een validatie fout met de :name variabele.', + 'daemon_exception' => 'Er was een fout opgereden tijdens de poging om te communiceren met de daemon, met als resultaat een HTTP/:code code. Deze exceptie is opgeslagen. (aanvraag id: :request_id)', + 'default_allocation_not_found' => 'De aangevraagde standaard toewijzing is niet gevonden in de toewijzingen van deze server.', + ], + 'alerts' => [ + 'startup_changed' => 'De start configuratie van deze server is bijgewerkt. Als de egg van de server is veranderd zal een herinstallatie nu plaatsvinden.', + 'server_deleted' => 'De server is succesvol verwijderd van het systeem.', + 'server_created' => 'De server is succesvol aangemaakt op het paneel. Gelieve een paar minuten wachten op de daemon totdat de server volledig is geïnstalleerd.', + 'build_updated' => 'De build details voor deze server zijn bijgewerkt. Voor sommige wijzigingen is een herstart nodig.', + 'suspension_toggled' => 'De opschorting status van de server is veranderd naar :status.', + 'rebuild_on_boot' => 'Deze server is gemarkeerd als een opnieuw opbouwen van een Docker Container. Dit zal gebeuren bij de volgende start van de server.', + 'install_toggled' => 'De installatie status voor deze server is veranderd.', + 'server_reinstalled' => 'Deze server is in de wachtrij gezet voor een herinstallatie, deze wordt nu gestart.', + 'details_updated' => 'Server details zijn succesvol bijgewerkt.', + 'docker_image_updated' => 'De standaard Docker image die voor deze server gebruikt wordt is veranderd. Een herstart is vereist om deze wijziging toe te passen.', + 'node_required' => 'Er moet ten minste één node geconfigureerd zijn voordat u een server aan dit paneel kunt toevoegen.', + 'transfer_nodes_required' => 'U moet ten minste twee nodes geconfigureerd hebben voordat u servers kunt overzetten.', + 'transfer_started' => 'De overzetting van de server is gestart.', + 'transfer_not_viable' => 'De node die u selecteerde heeft niet de vereiste schijfruimte of geheugen beschikbaar om deze server erop te laten draaien.', + ], +]; diff --git a/lang/nl/admin/user.php b/lang/nl/admin/user.php new file mode 100644 index 000000000..11abdba97 --- /dev/null +++ b/lang/nl/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'De gebruiker kan niet worden verwijderd omdat er actieve servers aan dit account gekoppeld zijn. Gelieve de servers welke gekoppeld zijn aan dit account, te verwijderen voordat je doorgaat.', + 'user_is_self' => 'Je kunt je eigen gebruikersaccount niet verwijderen.', + ], + 'notices' => [ + 'account_created' => 'Het account is succesvol aangemaakt.', + 'account_updated' => 'Het account is succesvol bijgewerkt.', + ], +]; diff --git a/lang/nl/auth.php b/lang/nl/auth.php new file mode 100644 index 000000000..ac697bacf --- /dev/null +++ b/lang/nl/auth.php @@ -0,0 +1,27 @@ + 'Inloggen', + 'go_to_login' => 'Ga naar inloggen', + 'failed' => 'Er werd geen account gevonden dat overeenkomt met deze inloggegevens.', + + 'forgot_password' => [ + 'label' => 'Wachtwoord Vergeten?', + 'label_help' => 'Voer het e-mailadres van uw account in om instructies te ontvangen over het opnieuw instellen van uw wachtwoord.', + 'button' => 'Account herstellen', + ], + + 'reset_password' => [ + 'button' => 'Herstel en log in', + ], + + 'two_factor' => [ + 'label' => 'Tweestapsverificatie code', + 'label_help' => 'Dit account heeft tweestapsverificatie aanstaan. Voer de door uw apparaat gegenereerde code in om deze login te voltooien.', + 'checkpoint_failed' => 'De tweestapsverificatie code was ongeldig.', + ], + + 'throttle' => 'Te veel inlogpogingen. Probeer het over :seconds seconden opnieuw.', + 'password_requirements' => 'Het wachtwoord moet minimaal 8 tekens lang zijn en moet uniek zijn voor deze site.', + '2fa_must_be_enabled' => 'De beheerder heeft vereist dat tweestapsverificatie voor je account is ingeschakeld om het paneel te kunnen gebruiken.', +]; diff --git a/lang/nl/command/messages.php b/lang/nl/command/messages.php new file mode 100644 index 000000000..5c93f92a8 --- /dev/null +++ b/lang/nl/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Voer een gebruikersnaam, gebruikers-ID of e-mailadres in', + 'select_search_user' => 'ID van te verwijderende gebruiker (Vul \'0\' in om opnieuw te zoeken)', + 'deleted' => 'Gebruiker succesvol verwijderd uit het paneel.', + 'confirm_delete' => 'Weet u zeker dat u deze gebruiker wilt verwijderen uit het paneel?', + 'no_users_found' => 'Er zijn geen gebruikers gevonden voor de opgegeven zoekterm.', + 'multiple_found' => 'Er zijn meerdere accounts voor de gebruiker gevonden, het is niet mogelijk om een gebruiker te verwijderen vanwege de --no-interactie vlag.', + 'ask_admin' => 'Is deze gebruiker een beheerder?', + 'ask_email' => 'E-mailadres', + 'ask_username' => 'Gebruikersnaam', + 'ask_name_first' => 'Voornaam', + 'ask_name_last' => 'Achternaam', + 'ask_password' => 'Wachtwoord', + 'ask_password_tip' => 'Als je een account wilt aanmaken met een willekeurig wachtwoord dat naar de gebruiker wordt gestuurd, voer dit commando opnieuw uit (CTRL+C) en geef de `--no-password` parameter op.', + 'ask_password_help' => 'Wachtwoorden moeten minstens 8 tekens lang zijn en minstens één hoofdletter en één cijfer bevatten.', + '2fa_help_text' => [ + 'Dit commando zal tweestapsverificatie voor een gebruikersaccount uitschakelen als het is ingeschakeld. Dit moet alleen worden gebruikt als een account herstel commando als de gebruiker buiten hun account is gesloten.', + 'Als dit niet is wat je wilde doen, druk dan op CTRL+C om dit proces af te sluiten.', + ], + '2fa_disabled' => 'Tweestapsverificatie is uitgeschakeld voor :email.', + ], + 'schedule' => [ + 'output_line' => 'Verzenden van de eerste taak voor `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Verwijderen service back-up bestand :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Herbouw verzoek voor ":name" (#:id) op node ":node" is mislukt met fout: :message', + 'reinstall' => [ + 'failed' => 'Opnieuw installeren voor ":name" (#:id) op node ":node" is mislukt met fout: :message', + 'confirm' => 'U staat op het punt een groep servers opnieuw te installeren. Wilt u doorgaan?', + ], + 'power' => [ + 'confirm' => 'U staat op het punt een :action uit te voeren tegen :count servers. Wilt u doorgaan?', + 'action_failed' => 'Power actie verzoek voor ":name" (#:id) op node ":node" is mislukt met fout: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (bijv. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Poort', + 'ask_smtp_username' => 'SMTP Gebruikersnaam', + 'ask_smtp_password' => 'SMTP Wachtwoord', + 'ask_mailgun_domain' => 'Mailgun Domein', + 'ask_mailgun_endpoint' => 'Mailgun Adres', + 'ask_mailgun_secret' => 'Mailgun Wachtwoord', + 'ask_mandrill_secret' => 'Mandrill Wachtwoord', + 'ask_postmark_username' => 'Postmark API Sleutel', + 'ask_driver' => 'Welke driver moet worden gebruikt voor het verzenden van e-mails?', + 'ask_mail_from' => 'E-mailadres waar e-mails vandaan moeten komen', + 'ask_mail_name' => 'Naam waar e-mails van moeten verschijnen', + 'ask_encryption' => 'Te gebruiken encryptiemethode', + ], + ], +]; diff --git a/lang/nl/dashboard/account.php b/lang/nl/dashboard/account.php new file mode 100644 index 000000000..1551aa976 --- /dev/null +++ b/lang/nl/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'E-mailadres wijzigen', + 'updated' => 'Het e-mailadres is succesvol gewijzigd.', + ], + 'password' => [ + 'title' => 'Wachtwoord wijzigen', + 'requirements' => 'Je nieuwe wachtwoord moet minstens 8 tekens bevatten.', + 'updated' => 'Het wachtwoord is succesvol gewijzigd.', + ], + 'two_factor' => [ + 'button' => 'Tweestapsverificatie configureren', + 'disabled' => 'Tweestapsverificatie is uitgeschakeld voor je account. Je wordt niet meer gevraagd om een code op te geven bij het inloggen.', + 'enabled' => 'Tweestapsverificatie is ingeschakeld op je account! Vanaf nu moet je bij het inloggen de code opgeven die door je apparaat wordt gegenereerd.', + 'invalid' => 'De opgegeven code is ongeldig.', + 'setup' => [ + 'title' => 'Tweestapsverificatie instellen', + 'help' => 'Kan de code niet worden gescand? Voer de onderstaande code in je applicatie:', + 'field' => 'Code invoeren', + ], + 'disable' => [ + 'title' => 'Tweestapsverificatie uitschakelen', + 'field' => 'Code invoeren', + ], + ], +]; diff --git a/lang/nl/dashboard/index.php b/lang/nl/dashboard/index.php new file mode 100644 index 000000000..78db2377f --- /dev/null +++ b/lang/nl/dashboard/index.php @@ -0,0 +1,8 @@ + 'Zoeken naar servers...', + 'no_matches' => 'Er zijn geen servers gevonden die voldoen aan de opgegeven zoekcriteria.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Geheugen', +]; diff --git a/lang/nl/exceptions.php b/lang/nl/exceptions.php new file mode 100644 index 000000000..6e2fe678f --- /dev/null +++ b/lang/nl/exceptions.php @@ -0,0 +1,55 @@ + 'Er is een fout opgetreden tijdens het communiceren met de daemon wat resulteert in een HTTP/:code response code. Deze fout is opgeslagen.', + 'node' => [ + 'servers_attached' => 'Een node moet geen actieve servers meer hebben voordat deze kan worden verwijderd.', + 'daemon_off_config_updated' => 'De daemonconfiguratie is bijgewerkt, er is echter een fout opgetreden bij het automatisch bijwerken van het configuratiebestand op de Daemon. U moet handmatig het configuratiebestand bijwerken (config.yml) voor de daemon om deze veranderingen toe te passen.', + ], + 'allocations' => [ + 'server_using' => 'Een server is momenteel toegewezen aan deze toewijzing. Een toewijzing kan alleen worden verwijderd als er momenteel geen server is toegewezen.', + 'too_many_ports' => 'Meer dan 1000 poorten binnen één bereik toevoegen wordt niet ondersteund.', + 'invalid_mapping' => 'De opgegeven toewijzing voor :port was ongeldig en kon niet worden verwerkt.', + 'cidr_out_of_range' => 'CIDR notatie staat alleen subnet masks toe tussen /25 en /32.', + 'port_out_of_range' => 'De poorten in een toewijzing moeten groter zijn dan 1024 en minder dan of gelijk zijn aan 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'Een egg met actieve servers gekoppeld kan niet worden verwijderd uit het paneel.', + 'invalid_copy_id' => 'De egg dat geselecteerd is om een script van te kopiëren bestaat niet, of kopieert een script zelf.', + 'has_children' => 'Deze egg is het hoofd van een of meer eggs. Verwijder deze eggs voor het verwijderen van deze egg.', + ], + 'variables' => [ + 'env_not_unique' => 'De omgevingsvariabele :name moet uniek zijn voor deze egg.', + 'reserved_name' => 'De omgevingsvariabele :name is beveiligd en kan niet worden toegewezen aan een variabele.', + 'bad_validation_rule' => 'De validatieregel ":rule" is geen geldige regel voor deze toepassing.', + ], + 'importer' => [ + 'json_error' => 'Er is een fout opgetreden bij het parsen van het JSON-bestand: :error.', + 'file_error' => 'Het opgegeven JSON-bestand is niet geldig.', + 'invalid_json_provided' => 'Het opgegeven JSON-bestand heeft geen formaat dat kan worden herkend.', + ], + 'subusers' => [ + 'editing_self' => 'Het bewerken van uw eigen medegebruikers account is niet toegestaan.', + 'user_is_owner' => 'U kunt niet de servereigenaar toevoegen als een medegebruiker voor deze server.', + 'subuser_exists' => 'Een gebruiker met dit e-mailadres is al toegewezen als medegebruiker voor deze server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Kan geen database host-server verwijderen die actieve databases gelinkt heeft.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'De maximale interval tijd voor een geketende taak is 15 minuten.', + ], + 'locations' => [ + 'has_nodes' => 'Kan een locatie niet verwijderen die actieve nodes heeft gekoppeld.', + ], + 'users' => [ + 'node_revocation_failed' => 'Intrekken van sleutels op node #:nodeis mislukt. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'Er konden geen nodes worden gevonden die voldoen aan de vereisten voor automatische implementatie.', + 'no_viable_allocations' => 'Er konden geen nodes worden gevonden die voldoen aan de vereisten voor automatische implementatie.', + ], + 'api' => [ + 'resource_not_found' => 'Het opgevraagde onderdeel bestaat niet op deze server.', + ], +]; diff --git a/lang/nl/pagination.php b/lang/nl/pagination.php new file mode 100644 index 000000000..8d6a62f7c --- /dev/null +++ b/lang/nl/pagination.php @@ -0,0 +1,17 @@ + '« Vorige', + 'next' => 'Volgende »', +]; diff --git a/lang/nl/passwords.php b/lang/nl/passwords.php new file mode 100644 index 000000000..b260c5457 --- /dev/null +++ b/lang/nl/passwords.php @@ -0,0 +1,19 @@ + 'Wachtwoorden moeten minstens zes tekens bevatten en overeenkomen met de bevestiging.', + 'reset' => 'Je wachtwoord is opnieuw ingesteld!', + 'sent' => 'We hebben je een wachtwoord reset link gemaild!', + 'token' => 'Dit wachtwoord reset token is ongeldig.', + 'user' => 'We kunnen geen gebruiker met dat e-mailadres vinden.', +]; diff --git a/lang/nl/server/users.php b/lang/nl/server/users.php new file mode 100644 index 000000000..9e0a47f80 --- /dev/null +++ b/lang/nl/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Geeft toegang tot de websocket voor deze server.', + 'control_console' => 'Geeft de gebruiker toegang tot het versturen van data in de server console.', + 'control_start' => 'Geeft de gebruiker toegang tot het starten van de server.', + 'control_stop' => 'Geeft de gebruiker toegang tot het stoppen van de server.', + 'control_restart' => 'Geeft de gebruiker toegang tot het herstarten van de server.', + 'control_kill' => 'Geeft de gebruiker toegang tot het forceer stoppen van de server.', + 'user_create' => 'Geeft de gebruiker toegang tot het maken van medegebruikers voor de server.', + 'user_read' => 'Geeft de gebruiker toegang tot het weergeven van medegebruikers op de server.', + 'user_update' => 'Geeft de gebruiker toegang tot het aanpassen van medegebruikers die gekoppeld zijn aan de server.', + 'user_delete' => 'Geeft de gebruiker toegang tot het verwijderen van medegebruikers die gekoppeld zijn aan server.', + 'file_create' => 'Geeft de gebruiker toegang tot het aanmaken van nieuwe bestanden en mappen op de server.', + 'file_read' => 'Geeft de gebruiker toegang tot het weergeven van bestaande bestanden en mappen op de server, evenals de inhoud ervan bekijken.', + 'file_update' => 'Geeft de gebruiker toegang tot het aanpassen van bestaande bestanden en mappen op de server.', + 'file_delete' => 'Geeft de gebruiker toegang tot het verwijderen van bestanden en mappen op de server.', + 'file_archive' => 'Geeft de gebruiker toegang tot het aanmaken van nieuwe bestandsarchieven en het uitpakken van bestaande bestandsarchieven op de server.', + 'file_sftp' => 'Geeft de gebruiker toegang tot de bovenstaande acties via de SFTP-client van de server.', + 'allocation_read' => 'Geeft de gebruiker toegang tot de toewijzingspagina\'s van de server.', + 'allocation_update' => 'Geeft de gebruiker toegang tot het aanpassen van toewijzingen van de server.', + 'database_create' => 'Geeft de gebruiker toegang tot het aanmaken van databases voor de server.', + 'database_read' => 'Geeft de gebruiker toegang tot het weergeven van databases voor de server.', + 'database_update' => 'Geeft de gebruiker toegang tot het aanpassen van databases voor de server. Als de gebruiker niet de "Bekijk wachtwoord" permissie heeft, kan het wachtwoord niet gewijzigd worden.', + 'database_delete' => 'Geeft de gebruiker toegang tot het verwijderen van databases voor de server.', + 'database_view_password' => 'Geeft de gebruiker toegang tot het weergeven van database wachtwoorden voor de server.', + 'schedule_create' => 'Geeft de gebruiker toegang tot het aanmaken van taken voor de server.', + 'schedule_read' => 'Geeft de gebruiker toegang tot het bekijken van taken voor de server.', + 'schedule_update' => 'Geeft de gebruiker toegang tot het bewerken van bestaande taken voor de server.', + 'schedule_delete' => 'Geeft de gebruiker toegang tot het verwijderen van taken voor de server.', + ], +]; diff --git a/lang/nl/strings.php b/lang/nl/strings.php new file mode 100644 index 000000000..bfc650bf2 --- /dev/null +++ b/lang/nl/strings.php @@ -0,0 +1,95 @@ + 'E-mail', + 'email_address' => 'E-mailadres', + 'user_identifier' => 'Gebruikersnaam of e-mail', + 'password' => 'Wachtwoord', + 'new_password' => 'Nieuw wachtwoord', + 'confirm_password' => 'Bevestig nieuw wachtwoord', + 'login' => 'Inloggen', + 'home' => 'Startpagina', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Naam', + 'node' => 'Node', + 'connection' => 'Verbinding', + 'memory' => 'Geheugen', + 'cpu' => 'CPU', + 'disk' => 'Schijf', + 'status' => 'Status', + 'search' => 'Zoeken', + 'suspended' => 'Opgeheven', + 'account' => 'Account', + 'security' => 'Beveiliging', + 'ip' => 'IP adres', + 'last_activity' => 'Laatste Activiteit', + 'revoke' => 'Intrekken', + '2fa_token' => 'Authenticatietoken', + 'submit' => 'Bevestigen', + 'close' => 'Sluiten', + 'settings' => 'Instellingen', + 'configuration' => 'Configuratie', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Notitie', + 'created' => 'Aangemaakt', + 'expires' => 'Vervalt', + 'public_key' => 'Token', + 'api_access' => 'Api toegang', + 'never' => 'nooit', + 'sign_out' => 'Afmelden', + 'admin_control' => 'Admin Beheer', + 'required' => 'Vereist', + 'port' => 'Poort', + 'username' => 'Gebruikersnaam', + 'database' => 'Database', + 'new' => 'Nieuw', + 'danger' => 'Gevaar', + 'create' => 'Aanmaken', + 'select_all' => 'Alles Selecteren', + 'select_none' => 'Selecteer Geen', + 'alias' => 'Alias', + 'primary' => 'Primaire', + 'make_primary' => 'Primair maken', + 'none' => 'Geen', + 'cancel' => 'Annuleren', + 'created_at' => 'Gemaakt Op', + 'action' => 'Actie', + 'data' => 'Gegevens', + 'queued' => 'In wachtrij', + 'last_run' => 'Laatst uitgevoerd', + 'next_run' => 'Volgende uitvoering', + 'not_run_yet' => 'Nog niet uitgevoerd', + 'yes' => 'Ja', + 'no' => 'Nee', + 'delete' => 'Verwijderen', + '2fa' => 'Tweestapsverificatie', + 'logout' => 'Uitloggen', + 'admin_cp' => 'Admin Controle Paneel', + 'optional' => 'Optioneel', + 'read_only' => 'Alleen lezen', + 'relation' => 'Relatie', + 'owner' => 'Eigenaar', + 'admin' => 'Beheerder', + 'subuser' => 'Medegebruiker', + 'captcha_invalid' => 'De uitgevoerde captcha is ongeldig.', + 'tasks' => 'Taken', + 'seconds' => 'Seconden', + 'minutes' => 'Minuten', + 'under_maintenance' => 'In onderhoud', + 'days' => [ + 'sun' => 'Zondag', + 'mon' => 'Maandag', + 'tues' => 'Dinsdag', + 'wed' => 'Woensdag', + 'thurs' => 'Donderdag', + 'fri' => 'Vrijdag', + 'sat' => 'Zaterdag', + ], + 'last_used' => 'Laatst gebruikt', + 'enable' => 'Inschakelen', + 'disable' => 'Uitschakelen', + 'save' => 'Opslaan', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/nl/validation.php b/lang/nl/validation.php new file mode 100644 index 000000000..a45a02dac --- /dev/null +++ b/lang/nl/validation.php @@ -0,0 +1,106 @@ + ':attribute moet geaccepteerd worden.', + 'active_url' => ':attribute is geen geldige URL.', + 'after' => ':attribute moet een datum zijn later dan :date.', + 'after_or_equal' => ':attribute moet een datum na of gelijk aan :date zijn.', + 'alpha' => ':attribute mag alleen letters bevatten.', + 'alpha_dash' => ':attribute mag enkel letters, cijfers of koppeltekens bevatten.', + 'alpha_num' => ':attribute mag alleen letters en nummers bevatten.', + 'array' => ':attribute moet een array zijn.', + 'before' => ':attribute moet een datum voor :date zijn.', + 'before_or_equal' => ':attribute moet een datum zijn voor of gelijk aan :date.', + 'between' => [ + 'numeric' => ':attribute moet tussen :min en :max zijn.', + 'file' => ':attribute moet tussen de :min en :max kilobytes zijn.', + 'string' => ':attribute moet tussen :min en :max karakters zijn.', + 'array' => ':attribute moet tussen de :min en :max items bevatten.', + ], + 'boolean' => ':attribute moet ja of nee zijn.', + 'confirmed' => ':attribute bevestiging komt niet overeen.', + 'date' => ':attribute is geen geldige datum.', + 'date_format' => ':attribute komt niet overeen met het formaat :format.', + 'different' => ':attribute en :other moeten verschillend zijn.', + 'digits' => ':attribute moet :digits cijfers lang zijn.', + 'digits_between' => ':attribute moet tussen de :min en :max cijfers bevatten.', + 'dimensions' => ':attribute heeft ongeldige afbeelding afmetingen.', + 'distinct' => ':attribute heeft een dubbele waarde.', + 'email' => ':attribute is geen geldig e-mailadres.', + 'exists' => ':attribute is ongeldig.', + 'file' => ':attribute moet een bestand zijn.', + 'filled' => ':attribute is verplicht.', + 'image' => ':attribute moet een afbeelding zijn.', + 'in' => 'De geselecteerde :attribute is ongeldig.', + 'in_array' => ':attribute veld bestaat niet in :other.', + 'integer' => ':attribute moet een getal zijn.', + 'ip' => ':attribute moet een geldig IP-adres zijn.', + 'json' => ':attribute moet een geldige JSON string zijn.', + 'max' => [ + 'numeric' => ':attribute mag niet groter zijn dan :max.', + 'file' => ':attribute mag niet groter zijn dan :max kilobytes.', + 'string' => ':attribute mag niet uit meer dan :max karakters bestaan.', + 'array' => ':attribute mag niet meer dan :max items bevatten.', + ], + 'mimes' => ':attribute moet een bestand zijn van het bestandstype :values.', + 'mimetypes' => ':attribute moet een bestand zijn van het bestandstype :values.', + 'min' => [ + 'numeric' => ':attribute moet minimaal :min zijn.', + 'file' => ':attribute moet minstens :min kilobytes groot zijn.', + 'string' => ':attribute moet tenminste :min karakters bevatten.', + 'array' => ':attribute moet minimaal :min items bevatten.', + ], + 'not_in' => 'De geselecteerde :attribute is ongeldig.', + 'numeric' => ':attribute moet een nummer zijn.', + 'present' => ':attribute moet bestaan.', + 'regex' => ':attribute formaat is ongeldig.', + 'required' => ':attribute is verplicht.', + 'required_if' => ':attribute is verplicht indien :other gelijk is aan :value.', + 'required_unless' => ':attribute is verplicht tenzij :other gelijk is aan :values.', + 'required_with' => ':attribute is verplicht in combinatie met :values.', + 'required_with_all' => ':attribute is verplicht in combinatie met :values.', + 'required_without' => ':attribute is verplicht als :values niet ingevuld is.', + 'required_without_all' => ':attribute is verplicht als :values niet ingevuld zijn.', + 'same' => ':attribute en :other moeten overeenkomen.', + 'size' => [ + 'numeric' => ':attribute moet :size zijn.', + 'file' => ':attribute moet :size kilobytes zijn.', + 'string' => ':attribute moet :size karakters zijn.', + 'array' => ':attribute moet :size items bevatten.', + ], + 'string' => ':attribute moet een tekenreeks zijn.', + 'timezone' => ':attribute moet een geldige tijdzone zijn.', + 'unique' => ':attribute is al in gebruik.', + 'uploaded' => ':attribute kon niet worden geüpload.', + 'url' => ':attribute formaat is ongeldig.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variabele', + 'invalid_password' => 'Het opgegeven wachtwoord is ongeldig voor dit account.', + ], +]; diff --git a/lang/no/activity.php b/lang/no/activity.php new file mode 100644 index 000000000..62062ac5b --- /dev/null +++ b/lang/no/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Innlogging feilet', + 'success' => 'Logget inn', + 'password-reset' => 'Tilbakestill passord', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Endret passord', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstallete server', + 'console' => [ + 'command' => 'Utføre ":command" på serveren', + ], + 'power' => [ + 'start' => 'Startet serveren', + 'stop' => 'Stoppet serveren', + 'restart' => 'Restartet serveren', + 'kill' => 'Drepte serverprosessen', + ], + 'backup' => [ + 'download' => 'Lastet ned :name sikkerhetskopi', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Slettet databasen :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Opprettet en kopi av :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Slettet :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Lastet ned :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Startet filopplasting', + 'uploaded' => 'Lastet opp :katalog:file', + ], + 'sftp' => [ + 'denied' => 'Tilgang til SFTP er blokkert på grunn av tilgangsstyring', + 'create_one' => 'Opprettet :files.0', + 'create_other' => 'Opprettet :count nye filer', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Slettet :files.0', + 'delete_other' => 'Slettet :count filer', + 'create-directory_one' => 'Opprettet :files.0 mappen', + 'create-directory_other' => 'Opprettet :count mapper', + 'rename_one' => 'Endret navn på :files.0.from til :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/no/admin/eggs.php b/lang/no/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/no/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/no/admin/node.php b/lang/no/admin/node.php new file mode 100644 index 000000000..d68305e3a --- /dev/null +++ b/lang/no/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'FQDN eller IP-adressen som er gitt, går ikke til en gyldig IP-adresse.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/no/admin/server.php b/lang/no/admin/server.php new file mode 100644 index 000000000..5dbd23e62 --- /dev/null +++ b/lang/no/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'Det oppstod en valideringsfeil med :name variabelen.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Serveren er slettet fra systemet.', + 'server_created' => 'Serveren ble opprettet i panelet. Vennligst tillat tjerneren noen minutter å installere denne serveren..', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'Serveren er satt i kø for en reinstallasjon som begynner nå.', + 'details_updated' => 'Serverdetaljer har blitt oppdatert.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Serveroverføringen har startet.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/no/admin/user.php b/lang/no/admin/user.php new file mode 100644 index 000000000..33ea534e1 --- /dev/null +++ b/lang/no/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Kan ikke slette din egen brukerkonto.', + ], + 'notices' => [ + 'account_created' => 'Kontoen er opprettet.', + 'account_updated' => 'Kontoen har blitt oppdatert.', + ], +]; diff --git a/lang/no/auth.php b/lang/no/auth.php new file mode 100644 index 000000000..507f539e1 --- /dev/null +++ b/lang/no/auth.php @@ -0,0 +1,27 @@ + 'Logg inn', + 'go_to_login' => 'Gå til pålogging', + 'failed' => 'Ingen konto som samsvarer med disse opplysningene ble funnet.', + + 'forgot_password' => [ + 'label' => 'Glemt passord?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Gjenopprett konto', + ], + + 'reset_password' => [ + 'button' => 'Tilbakestill og logg inn', + ], + + 'two_factor' => [ + 'label' => 'Tofaktorautentiserings kode', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'Tofaktorautentiseringskoden var ugyldig.', + ], + + 'throttle' => 'For mange påloggingsforsøk. Prøv igjen om :seconds sekunder.', + 'password_requirements' => 'Passordet må være minst 8 tegn langt og bør være unikt for denne siden.', + '2fa_must_be_enabled' => 'Administratoren krever at tofaktorautentisering aktiveres på din konto for å kunne bruke panelet.', +]; diff --git a/lang/no/command/messages.php b/lang/no/command/messages.php new file mode 100644 index 000000000..09c828166 --- /dev/null +++ b/lang/no/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Skriv inn brukernavn, bruker-ID, eller epostadresse', + 'select_search_user' => 'ID for brukeren som skal slettes (Angi \'0\' for å søke på nytt)', + 'deleted' => 'Brukeren ble slettet fra panelet.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Er denne brukeren en administrator?', + 'ask_email' => 'E-postadresse', + 'ask_username' => 'Brukernavn', + 'ask_name_first' => 'Fornavn', + 'ask_name_last' => 'Etternavn', + 'ask_password' => 'Passord', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP-vert (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP-port', + 'ask_smtp_username' => 'SMTP brukernavn', + 'ask_smtp_password' => 'SMTP passord', + 'ask_mailgun_domain' => 'Mailgun domene', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API nøkkel', + 'ask_driver' => 'Hvilken driver skal brukes for å sende e-post?', + 'ask_mail_from' => 'E-postadresse som e-poster skal bruke som avsender', + 'ask_mail_name' => 'Navnet på e-posten, epostene skal komme fra', + 'ask_encryption' => 'Krypteringsmetode som skal brukes', + ], + ], +]; diff --git a/lang/no/dashboard/account.php b/lang/no/dashboard/account.php new file mode 100644 index 000000000..ff52388c9 --- /dev/null +++ b/lang/no/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Oppdater e-postadressen din', + 'updated' => 'Din epost har blitt oppdatert', + ], + 'password' => [ + 'title' => 'Endre passoret ditt', + 'requirements' => 'Ditt nye passord må ha minst 8 tegn', + 'updated' => 'Ditt passord er oppdatert.', + ], + 'two_factor' => [ + 'button' => 'Konfigurer tofaktorautentisering', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'Koden som ble oppgitt var ugyldig', + 'setup' => [ + 'title' => 'Sett opp tofaktorautentisering', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Skriv inn autentiserings-kode', + ], + 'disable' => [ + 'title' => 'Deaktiver tofaktorautentisering', + 'field' => 'Skriv inn autentiserings-kode', + ], + ], +]; diff --git a/lang/no/dashboard/index.php b/lang/no/dashboard/index.php new file mode 100644 index 000000000..e345b1bbc --- /dev/null +++ b/lang/no/dashboard/index.php @@ -0,0 +1,8 @@ + 'Søk etter servere...', + 'no_matches' => 'Det ble ikke funnet noen servere som matcher søkekriteriene', + 'cpu_title' => 'CPU', + 'memory_title' => 'Minne', +]; diff --git a/lang/no/exceptions.php b/lang/no/exceptions.php new file mode 100644 index 000000000..f9a65b744 --- /dev/null +++ b/lang/no/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'JSON-filen som ble oppgitt er ugyldig.', + 'invalid_json_provided' => 'JSON-filen som er angitt er ikke i et format som kan gjenkjennes.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'Den forespurte ressursen finnes ikke på denne serveren.', + ], +]; diff --git a/lang/no/pagination.php b/lang/no/pagination.php new file mode 100644 index 000000000..372946c67 --- /dev/null +++ b/lang/no/pagination.php @@ -0,0 +1,17 @@ + '« Forrige', + 'next' => 'Neste »', +]; diff --git a/lang/no/passwords.php b/lang/no/passwords.php new file mode 100644 index 000000000..73f86df60 --- /dev/null +++ b/lang/no/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Ditt passord har blitt tilbakestilt!', + 'sent' => 'Vi har sendt deg en e-post med en tilbakestillingslink for ditt passord!', + 'token' => 'Koden for å nullstille passordet er ugyldig.', + 'user' => 'Vi kan ikke finne en bruker med den e-postadressen.', +]; diff --git a/lang/no/server/users.php b/lang/no/server/users.php new file mode 100644 index 000000000..8879cf4ca --- /dev/null +++ b/lang/no/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Gir tilgang til websocketen for denne serveren.', + 'control_console' => 'Tillater brukeren å sende data til server konsollet.', + 'control_start' => 'Tillater brukeren å starte serverinstansen.', + 'control_stop' => 'Tillater brukeren å stoppe serverinstansen.', + 'control_restart' => 'Tillater brukeren å restarte serverinstansen.', + 'control_kill' => 'Tillater brukeren å drepe serveren.', + 'user_create' => 'Tillater brukeren å opprette nye brukerkontoer for serveren.', + 'user_read' => 'Tillater bruker å se brukere tilknyttet denne serveren.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/no/strings.php b/lang/no/strings.php new file mode 100644 index 000000000..523b218d1 --- /dev/null +++ b/lang/no/strings.php @@ -0,0 +1,95 @@ + 'E-post', + 'email_address' => 'E-postadresse', + 'user_identifier' => 'Brukernavn eller e-post', + 'password' => 'Passord', + 'new_password' => 'Nytt passord', + 'confirm_password' => 'Bekreft nytt passord', + 'login' => 'Logg inn', + 'home' => 'Hjem', + 'servers' => 'Servere', + 'id' => 'ID', + 'name' => 'Navn', + 'node' => 'Node', + 'connection' => 'Tilkobling', + 'memory' => 'Minne', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Søk', + 'suspended' => 'Suspendert', + 'account' => 'Konto', + 'security' => 'Sikkerhet', + 'ip' => 'IP adresse', + 'last_activity' => 'Siste aktivitet', + 'revoke' => 'Tilbakekall', + '2fa_token' => 'Autentiseringskode', + 'submit' => 'Lagre', + 'close' => 'Lukk', + 'settings' => 'Innstillinger', + 'configuration' => 'Konfigurasjon', + 'sftp' => 'SFTP', + 'databases' => 'Databaser', + 'memo' => 'Memo', + 'created' => 'Opprettet', + 'expires' => 'Utløper', + 'public_key' => 'Kode', + 'api_access' => 'Api-tilgang', + 'never' => 'aldri', + 'sign_out' => 'Logg av', + 'admin_control' => 'Administratorkontroll', + 'required' => 'Obligatorisk', + 'port' => 'Port', + 'username' => 'Brukernavn', + 'database' => 'Database', + 'new' => 'Ny', + 'danger' => 'Fare', + 'create' => 'Opprett', + 'select_all' => 'Velg alle', + 'select_none' => 'Velg Ingen', + 'alias' => 'Kallenavn', + 'primary' => 'Primær', + 'make_primary' => 'Gjør til primær', + 'none' => 'Ingen', + 'cancel' => 'Avbryt', + 'created_at' => 'Opprettet', + 'action' => 'Handling', + 'data' => 'Data', + 'queued' => 'Lagt i kø', + 'last_run' => 'Sist kjørt', + 'next_run' => 'Neste kjøring', + 'not_run_yet' => 'Ikke kjørt ennå', + 'yes' => 'Ja', + 'no' => 'Nei', + 'delete' => 'Slett', + '2fa' => '2FA', + 'logout' => 'Logg ut', + 'admin_cp' => 'Admin kontrollpanel', + 'optional' => 'Valgfritt', + 'read_only' => 'Skrivebeskyttet', + 'relation' => 'Relasjon', + 'owner' => 'Eier', + 'admin' => 'Administrator', + 'subuser' => 'Underbruker', + 'captcha_invalid' => 'Den oppgitte captchaen er ugyldig.', + 'tasks' => 'Oppgaver', + 'seconds' => 'Sekunder', + 'minutes' => 'Minutter', + 'under_maintenance' => 'Under vedlikehold', + 'days' => [ + 'sun' => 'Søndag', + 'mon' => 'Mandag', + 'tues' => 'Tirsdag', + 'wed' => 'Onsdag', + 'thurs' => 'Torsdag', + 'fri' => 'Fredag', + 'sat' => 'Lørdag', + ], + 'last_used' => 'Sist brukt', + 'enable' => 'Aktiver', + 'disable' => 'Deaktiver', + 'save' => 'Lagre', + 'copyright' => '® 2024 - :year Pelican*', +]; diff --git a/lang/no/validation.php b/lang/no/validation.php new file mode 100644 index 000000000..7bbf10181 --- /dev/null +++ b/lang/no/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => ':attribute er ikke en gyldig dato.', + 'date_format' => ':attribute samsvarer ikke med formatet :format.', + 'different' => ':attribute og :other må være forskjellige.', + 'digits' => ':attribute må være :digits sifre.', + 'digits_between' => ':attribute må være mellom :min og :max siffer.', + 'dimensions' => ':attribute har ugyldig bildedimensjoner.', + 'distinct' => ':attribute har en duplikat verdi.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => ':attribute må være en fil.', + 'filled' => ':attribute feltet er påkrevd.', + 'image' => ':attribute må være et bilde.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => ':attribute må være ett helt tall.', + 'ip' => ':attribute må være en gyldig IP-adresse.', + 'json' => ':attribute må være en gyldig JSON streng.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => ':attribute formatet er ugyldig.', + 'required' => ':attribute feltet er påkrevd.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => ':attribute må være :size.', + 'file' => ':attribute må være :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variabel', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/pl/activity.php b/lang/pl/activity.php new file mode 100644 index 000000000..2994dbea0 --- /dev/null +++ b/lang/pl/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Nie udało się zalogować', + 'success' => 'Zalogowano', + 'password-reset' => 'Zmień Hasło', + 'reset-password' => 'Zażądano zresetowania hasła', + 'checkpoint' => 'Zażądano uwierzytelnienia dwuetapowego', + 'recovery-token' => 'Użyto tokena odzyskiwania uwierzytelnienia dwuetapowego', + 'token' => 'Udane uwierzytelnienie dwuetapowe', + 'ip-blocked' => 'Zablokowano żądanie z nieuwzględnionego adresu IP dla :identifer', + 'sftp' => [ + 'fail' => 'Nie udało się zalogować do SFTP', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Zmieniono adres e-mail z :old na :new', + 'password-changed' => 'Hasło zostało zmienione', + ], + 'api-key' => [ + 'create' => 'Stwórz nowy klucz API :identifier', + 'delete' => 'Usuń klucz API :identifier', + ], + 'ssh-key' => [ + 'create' => 'Dodano klucz SSH :fingerprint do konta', + 'delete' => 'Usunięto klucz SSH :fingerprint z konta', + ], + 'two-factor' => [ + 'create' => 'Włączono autoryzację dwuetapową', + 'delete' => 'Wyłączona autoryzacja dwuetapowa', + ], + ], + 'server' => [ + 'reinstall' => 'Zainstalowano ponownie serwer', + 'console' => [ + 'command' => 'Wykonano ":command" na serwerze', + ], + 'power' => [ + 'start' => 'Uruchomiono serwer', + 'stop' => 'Zatrzymano serwer', + 'restart' => 'Zrestartowano serwer', + 'kill' => 'Zatrzymano proces serwera', + ], + 'backup' => [ + 'download' => 'Pobrano kopię zapasową o nazwie :name', + 'delete' => 'Usunięto kopię zapasową :name', + 'restore' => 'Przywrócono kopię zapasową o nazwie :name (usunięte pliki: :truncate)', + 'restore-complete' => 'Zakończono przywracanie kopii zapasowej o nazwie :name', + 'restore-failed' => 'Nie udało się zakończyć przywracania kopii zapasowej o nazwie :name', + 'start' => 'Rozpoczęto tworzenie kopii zapasowej :name', + 'complete' => 'Tworzenie kopii zapasowej :name zakończyło się pomyślnie', + 'fail' => 'Tworzenie kopii zapasowej :name nie powiodło się', + 'lock' => 'Zablokowano kopie zapasową :name', + 'unlock' => 'Odblokowano kopię zapasową :name', + ], + 'database' => [ + 'create' => 'Utwórz nową bazę danych :name', + 'rotate-password' => 'Zmieniono hasło dla bazy danych o nazwie :name', + 'delete' => 'Usunięto bazę danych o nazwie :name', + ], + 'file' => [ + 'compress_one' => 'Skompresowano :directory:file', + 'compress_other' => 'Skompresowano :count plików w katalogu :directory', + 'read' => 'Sprawdzono zawartość pliku :file', + 'copy' => 'Utworzono kopię pliku :file', + 'create-directory' => 'Utworzono katalog :directory:name', + 'decompress' => 'Rozpakowano :files w :directory', + 'delete_one' => 'Usunięto :directory:files.0', + 'delete_other' => 'Usunięto :count plików w katalogu :directory', + 'download' => 'Pobrano plik: :file', + 'pull' => 'Pobrano pliki z :url do :directory', + 'rename_one' => 'Zmieniono nazwę :directory:files.0.from na :directory:files.0.to', + 'rename_other' => 'Zmieniono nazwy :count plików w katalogu :directory.', + 'write' => 'Dokonano zapisu nowej zawartości do pliku :file', + 'upload' => 'Rozpoczęto przesyłanie pliku', + 'uploaded' => 'Przesłano :directory:file', + ], + 'sftp' => [ + 'denied' => 'Dostęp SFTP został zablokowany z powodu braku uprawnień', + 'create_one' => 'Utworzono :files.0', + 'create_other' => 'Utworzono :count nowych plików', + 'write_one' => 'Zmodyfikowano zawartość pliku :files.0', + 'write_other' => 'Zmodyfikowano zawartość :count plików', + 'delete_one' => 'Usunięto :files.0', + 'delete_other' => 'Usunięto :count plików', + 'create-directory_one' => 'Utworzono katalog :files.0', + 'create-directory_other' => 'Utworzono :count katalogów', + 'rename_one' => 'Zmieniono nazwę :files.0.from na :files.0.to', + 'rename_other' => 'Zmieniono nazwę lub przeniesiono :count plików', + ], + 'allocation' => [ + 'create' => 'Dodano :allocation do serwera', + 'notes' => 'Zaktualizowano informacje dla :allocation z ":old" na ":new".', + 'primary' => 'Ustawiono :allocation jako główną alokację serwera.', + 'delete' => 'Usunięto alokację :allocation', + ], + 'schedule' => [ + 'create' => 'Utworzono harmonogram o nazwie :name', + 'update' => 'Zaktualizowano harmonogram o nazwie :name', + 'execute' => 'Ręcznie wykonano harmonogram o nazwie :name', + 'delete' => 'Usunięto harmonogram o nazwie :name', + ], + 'task' => [ + 'create' => 'Utworzono nowe zadanie ":action" dla harmonogramu o nazwie :name', + 'update' => 'Zaktualizowano zadanie ":action" dla harmonogramu o nazwie :name.', + 'delete' => 'Usunięto zadanie dla harmonogramu o nazwie :name.', + ], + 'settings' => [ + 'rename' => 'Zmieniono nazwę serwera z :old na :new', + 'description' => 'Zmieniono opis serwera z :old na :new', + ], + 'startup' => [ + 'edit' => 'Zmieniono zmienną :variable z ":old" na ":new".', + 'image' => 'Zaktualizowano obraz Docker dla serwera z :old na :new.', + ], + 'subuser' => [ + 'create' => 'Dodano :email jako drugiego użytkownika.', + 'update' => 'Zaktualizowano uprawnienia dla użytkownika :email', + 'delete' => 'Usunięto :email jako współpracownika.', + ], + ], +]; diff --git a/lang/pl/admin/eggs.php b/lang/pl/admin/eggs.php new file mode 100644 index 000000000..f9bf363d7 --- /dev/null +++ b/lang/pl/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Pomyślnie zaimportowano to jądro i związane z nim zmienne.', + 'updated_via_import' => 'To jądro zostało zaktualizowane przy użyciu dostarczonego pliku.', + 'deleted' => 'Pomyślnie usunięto żądane jądro z Panelu.', + 'updated' => 'Konfiguracja jądra została pomyślnie zaktualizowana.', + 'script_updated' => 'Skrypt instalacyjny jądra został zaktualizowany i zostanie uruchomiony za każdym razem, gdy serwery zostaną zainstalowane.', + 'egg_created' => 'Nowe jądro zostało dodane. Musisz zrestartować wszystkie uruchomione Daemon\'y, aby zastosować nowe jądro.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'Zmienna ":variable" została usunięta i nie będzie już dostępna dla serwerów po przebudowie.', + 'variable_updated' => 'Zmienna ":variable" została zaktualizowana. Musisz przebudować serwery za pomocą tej zmiennej, aby zastosować zmiany.', + 'variable_created' => 'Nowa zmienna została pomyślnie stworzona i przypisana do tego jądra.', + ], + ], +]; diff --git a/lang/pl/admin/node.php b/lang/pl/admin/node.php new file mode 100644 index 000000000..7023a8852 --- /dev/null +++ b/lang/pl/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'Podany adres FQDN lub IP nie jest poprawnym adresem IP.', + 'fqdn_required_for_ssl' => 'Aby używać SSL dla tego węzła, wymagana jest pełna nazwa domeny, która nawiązuje do publicznego adresu IP.', + ], + 'notices' => [ + 'allocations_added' => 'Pomyślnie dodano alokacje do tego węzła.', + 'node_deleted' => 'Pomyślnie usunięto węzeł z panelu.', + 'node_created' => 'Pomyślnie utworzono nowy węzeł. Możesz automatycznie skonfigurować demona na tej maszynie, odwiedzając zakładkę \'Konfiguracja\'. Przed dodaniem serwerów musisz najpierw przydzielić co najmniej jeden adres IP i port.', + 'node_updated' => 'Informacje o węźle zostały zaktualizowane. Jeśli jakiekolwiek ustawienia demona zostały zmienione, konieczne będzie jego ponowne uruchomienie, aby te zmiany zaczęły obowiązywać', + 'unallocated_deleted' => 'Usunięto wszystkie nieprzydzielone porty dla :ip', + ], +]; diff --git a/lang/pl/admin/server.php b/lang/pl/admin/server.php new file mode 100644 index 000000000..ed7129c92 --- /dev/null +++ b/lang/pl/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Chcesz usunąć domyślną alokację dla tego serwera, ale nie ma alternatywnej alokacji do wykorzystania.', + 'marked_as_failed' => 'Ten serwer został zidentyfikowany jako mający nieudaną wcześniejszą instalację. Nie można zmienić jego aktualnego statusu w tej sytuacji.', + 'bad_variable' => 'Wystąpił błąd walidacji zmiennych :name', + 'daemon_exception' => 'Wystąpił błąd podczas próby komunikacji z demonem, co spowodowało kod odpowiedzi HTTP/:code. Ten błąd został zarejestrowany. (ID żądania: :request_id)', + 'default_allocation_not_found' => 'Nie znaleziono żądanej domyślnej alokacji w alokacjach tego serwera.', + ], + 'alerts' => [ + 'startup_changed' => 'Zaktualizowano konfigurację startową tego serwera. Jeśli nastąpiła zmiana jajka dla tego serwera, zostanie przeprowadzona ponowna instalacja w tym momencie.', + 'server_deleted' => 'Serwer został pomyślnie usunięty z systemu.', + 'server_created' => 'Serwer został pomyślnie utworzony w panelu. Proszę poczekać kilka minut, aby demon zakończył instalację tego serwera.', + 'build_updated' => 'Zaktualizowano szczegóły konfiguracji dla tego serwera. Pewne zmiany mogą wymagać ponownego uruchomienia, aby zacząć obowiązywać.', + 'suspension_toggled' => 'Status zawieszenia serwera został zmieniony na :status', + 'rebuild_on_boot' => 'Ten serwer został oznaczony jako wymagający ponownej budowy kontenera Docker. Zostanie to wykonane przy następnym uruchomieniu serwera.', + 'install_toggled' => 'Status instalacji dla tego serwera został zmieniony.', + 'server_reinstalled' => 'Ten serwer został umieszczony w kolejce do ponownej instalacji, która rozpoczyna się w tym momencie.', + 'details_updated' => 'Szczegóły serwera zostały pomyślnie zaktualizowane.', + 'docker_image_updated' => 'Pomyślnie zmieniono domyślny obraz Docker do użycia dla tego serwera. Konieczne jest ponowne uruchomienie, aby zastosować tę zmianę.', + 'node_required' => 'Musisz mieć skonfigurowany co najmniej jeden węzeł, zanim będziesz mógł dodać serwer do tego panelu.', + 'transfer_nodes_required' => 'Musisz mieć skonfigurowanych co najmniej dwa węzły, zanim będziesz mógł przenosić serwery.', + 'transfer_started' => 'Rozpoczęto transfer serwera.', + 'transfer_not_viable' => 'Wybrany węzeł nie ma wystarczającej ilości dostępnej przestrzeni dyskowej ani pamięci, aby pomieścić ten serwer.', + ], +]; diff --git a/lang/pl/admin/user.php b/lang/pl/admin/user.php new file mode 100644 index 000000000..be1e9d366 --- /dev/null +++ b/lang/pl/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Nie można usunąć użytkownika, który ma przypisane do swojego konta aktywne serwery. Proszę usunąć serwery przypisane do tego konta przed kontynuowaniem.', + 'user_is_self' => 'Nie można usunąć własnego konta użytkownika.', + ], + 'notices' => [ + 'account_created' => 'Konto zostało pomyślnie utworzone.', + 'account_updated' => 'Konto zostało pomyślnie zaktualizowane.', + ], +]; diff --git a/lang/pl/auth.php b/lang/pl/auth.php new file mode 100644 index 000000000..4dd3f0fb8 --- /dev/null +++ b/lang/pl/auth.php @@ -0,0 +1,27 @@ + 'Zaloguj', + 'go_to_login' => 'Przejdź do logowania', + 'failed' => 'Nie znaleziono konta pasującego do tych danych.', + + 'forgot_password' => [ + 'label' => 'Nie pamiętasz hasła?', + 'label_help' => 'Wprowadź swój adres e-mail, aby otrzymać instrukcje resetowania hasła.', + 'button' => 'Odzyskaj konto', + ], + + 'reset_password' => [ + 'button' => 'Zresetuj i zaloguj się', + ], + + 'two_factor' => [ + 'label' => 'Token logowania 2-etapowego', + 'label_help' => 'To konto wymaga uwierzytelniania 2-etapowego, aby kontynuować. Wprowadź wygenerowany kod, aby dokończyć logowanie.', + 'checkpoint_failed' => 'Kod uwierzytelniania 2-etapowego jest nieprawidłowy.', + ], + + 'throttle' => 'Zbyt wiele prób logowania. Spróbuj ponownie za :seconds sekund.', + 'password_requirements' => 'Hasło musi mieć co najmniej 8 znaków.', + '2fa_must_be_enabled' => 'Administrator zażądał włączenia uwierzytelniania dwuetapowego dla Twojego konta, by móc korzystać z Panelu.', +]; diff --git a/lang/pl/command/messages.php b/lang/pl/command/messages.php new file mode 100644 index 000000000..b159d5a96 --- /dev/null +++ b/lang/pl/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Wprowadź nazwę użytkownika, identyfikator użytkownika lub adres e-mail', + 'select_search_user' => 'ID użytkownika do usunięcia (Wpisz \'0\' aby wyszukać ponownie)', + 'deleted' => 'Użytkownik został pomyślnie usunięty z Panelu.', + 'confirm_delete' => 'Czy na pewno chcesz usunąć tego użytkownika z Panelu?', + 'no_users_found' => 'Nie znaleziono użytkowników dla podanego terminu wyszukiwania.', + 'multiple_found' => 'Znaleziono wiele kont dla podanego użytkownika, nie można usunąć użytkownika z powodu flagi --no-interaction', + 'ask_admin' => 'Czy ten użytkownik jest administratorem?', + 'ask_email' => 'Adres E-mail', + 'ask_username' => 'Nazwa Użytkownika', + 'ask_name_first' => 'Imię', + 'ask_name_last' => 'Nazwisko', + 'ask_password' => 'Hasło', + 'ask_password_tip' => 'Jeśli chcesz utworzyć konto z losowym hasłem wysłanym e-mailem do użytkownika, ponownie uruchom tę komendę (CTRL+C) i przekaż flagę `--no-password`.', + 'ask_password_help' => 'Hasła muszą mieć co najmniej 8 znaków i zawierać co najmniej jedną wielką literę oraz cyfrę.', + '2fa_help_text' => [ + 'Ta komenda wyłączy uwierzytelnianie dwuskładnikowe dla konta użytkownika, jeśli jest włączone. Powinna być używana tylko jako polecenie odzyskiwania konta, jeśli użytkownik jest zablokowany na swoim koncie.', + 'Jeśli to nie jest to, co chciałeś zrobić, naciśnij CTRL+C, aby zakończyć ten proces.', + ], + '2fa_disabled' => 'Uwierzytelnianie dwuskładnikowe zostało wyłączone dla :email', + ], + 'schedule' => [ + 'output_line' => 'Wysyłanie żądania dla pierwszego zadania w `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Usuwanie pliku kopii zapasowej usługi :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Żądanie przebudowy dla ":name" (#:id) na węźle ":node" nie powiodło się z błędem: :message', + 'reinstall' => [ + 'failed' => 'Żądanie ponownej instalacji dla ":name" (#:id) na węźle ":node" nie powiodło się z błędem: :message', + 'confirm' => 'Przed Tobą ponowna instalacja na grupie serwerów. Czy chcesz kontynuować?', + ], + 'power' => [ + 'confirm' => 'Zamierzasz wykonać :action przeciwko :count serwerom. Czy chcesz kontynuować?', + 'action_failed' => 'Żądanie akcji zasilania dla ":name" (#:id) na węźle ":node" nie powiodło się z błędem: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'Serwer SMTP (np. smtp.gmail.com)', + 'ask_smtp_port' => 'Port SMTP', + 'ask_smtp_username' => 'Nazwa użytkownika SMTP', + 'ask_smtp_password' => 'Hasło SMTP', + 'ask_mailgun_domain' => 'Serwer Mailgun', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Sekret Mailgun', + 'ask_mandrill_secret' => 'Sekret Mandrill', + 'ask_postmark_username' => 'Klucz API Postmark', + 'ask_driver' => 'Który sterownik powinien być używany do wysyłania e-maili?', + 'ask_mail_from' => 'Adres e-mail, z którego mają pochodzić wiadomości e-mail', + 'ask_mail_name' => 'Nazwa, z której powinny się pojawić wiadomości e-mail', + 'ask_encryption' => 'Metoda szyfrowania do użycia', + ], + ], +]; diff --git a/lang/pl/dashboard/account.php b/lang/pl/dashboard/account.php new file mode 100644 index 000000000..ec13c62f8 --- /dev/null +++ b/lang/pl/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Zaktualizuj swój e-mail', + 'updated' => 'Twój adres e-mail został zaktualizowany.', + ], + 'password' => [ + 'title' => 'Zmień swoje hasło', + 'requirements' => 'Twoje nowe hasło powinno mieć co najmniej 8 znaków.', + 'updated' => 'Twoje hasło zostało zaktualizowane.', + ], + 'two_factor' => [ + 'button' => 'Skonfiguruj uwierzytelnianie dwuetapowe', + 'disabled' => 'Uwierzytelnianie dwuetapowe zostało wyłączone na Twoim koncie. Nie będziesz już proszony o podanie tokenu podczas logowania.', + 'enabled' => 'Uwierzytelnianie dwuetapowe zostało włączone na Twoim koncie! Od teraz podczas logowania będziesz musiał podać kod wygenerowany przez swoje urządzenie.', + 'invalid' => 'Podany token jest nieprawidłowy.', + 'setup' => [ + 'title' => 'Skonfiguruj uwierzytelnianie dwuetapowe.', + 'help' => 'Nie udało Ci się zeskanować kodu? Wprowadź poniższy kod do swojej aplikacji:', + 'field' => 'Wprowadź token', + ], + 'disable' => [ + 'title' => 'Wyłącz uwierzytelnianie dwuetapowe', + 'field' => 'Wprowadź token', + ], + ], +]; diff --git a/lang/pl/dashboard/index.php b/lang/pl/dashboard/index.php new file mode 100644 index 000000000..a94a163b6 --- /dev/null +++ b/lang/pl/dashboard/index.php @@ -0,0 +1,8 @@ + 'Wyszukaj serwery...', + 'no_matches' => 'Nie znaleziono żadnych serwerów spełniających podane kryteria wyszukiwania.', + 'cpu_title' => 'Procesor', + 'memory_title' => 'Pamięć', +]; diff --git a/lang/pl/exceptions.php b/lang/pl/exceptions.php new file mode 100644 index 000000000..d821676b1 --- /dev/null +++ b/lang/pl/exceptions.php @@ -0,0 +1,55 @@ + 'Wystąpił wyjątek podczas próby komunikacji z demonem skutkujący kodem odpowiedzi HTTP/:code. Wyjątek ten został zarejestrowany.', + 'node' => [ + 'servers_attached' => 'Aby usunąć ten węzeł, nie możesz mieć podłączonych do niego serwerów.', + 'daemon_off_config_updated' => 'Konfiguracja deamona została zaktualizowana, jednak wystąpił błąd podczas próby automatycznej aktualizacji pliku konfiguracyjnego deamona. Aby zastosować te zmiany, należy ręcznie zaktualizować plik konfiguracyjny (config.yml).', + ], + 'allocations' => [ + 'server_using' => 'Serwer jest obecnie przypisany do tej alokacji. Alokację można usunąć tylko wtedy, gdy żaden serwer nie jest do niej przypisany.', + 'too_many_ports' => 'Dodawanie więcej niż 1000 portów w jednym zakresie nie jest obsługiwane.', + 'invalid_mapping' => 'Mapowanie podane dla :port było nieprawidłowe i nie mogło zostać przetworzone.', + 'cidr_out_of_range' => 'Notacja CIDR dopuszcza tylko maski od /25 do /32.', + 'port_out_of_range' => 'Porty w alokacji muszą być większe niż 1024 i mniejsze lub równe 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'Jajo z aktywnymi serwerami przypisanymi do niego nie może zostać usunięte z Panelu.', + 'invalid_copy_id' => 'Jajo wybrane do skopiowania skryptu albo nie istnieje, albo samo posiada kopię skryptu.', + 'has_children' => 'Jajo jest nadrzędne dla jednego lub więcej innych jajek. Proszę najpierw usunąć te jajka przed usunięciem tego.', + ], + 'variables' => [ + 'env_not_unique' => 'Zmienna środowiskowa :name musi być unikalna dla tego jajka.', + 'reserved_name' => 'Zmienna środowiskowa :name jest chroniona i nie może być przypisana do zmiennej.', + 'bad_validation_rule' => 'Reguła walidacji ":rule" nie jest prawidłową regułą dla tej aplikacji.', + ], + 'importer' => [ + 'json_error' => 'Wystąpił błąd podczas próby analizy pliku JSON: :error', + 'file_error' => 'Podany plik JSON jest nieprawidłowy.', + 'invalid_json_provided' => 'Podany plik JSON nie jest w formacie, który może być rozpoznany.', + ], + 'subusers' => [ + 'editing_self' => 'Edytowanie własnego konta podużytkownika jest niedozwolone.', + 'user_is_owner' => 'Nie można dodać właściciela serwera jako podużytkownika tego serwera.', + 'subuser_exists' => 'Użytkownik z tym adresem e-mail jest już przypisany jako podużytkownik dla tego serwera.', + ], + 'databases' => [ + 'delete_has_databases' => 'Nie można usunąć serwera hosta bazy danych, z którym powiązane są aktywne bazy danych.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'Maksymalny odstęp czasu dla zadania, które zostało zablokowane wynosi 15 minut.', + ], + 'locations' => [ + 'has_nodes' => 'Nie można usunąć lokalizacji, do której dołączone są aktywne węzły.', + ], + 'users' => [ + 'node_revocation_failed' => 'Nie udało się odwołać kluczy na węźle #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'Nie znaleziono węzłów spełniających wymagania dla automatycznego wdrażania.', + 'no_viable_allocations' => 'Nie znaleziono portów spełniających wymagania dla automatycznego wdrażania.', + ], + 'api' => [ + 'resource_not_found' => 'Żądany zasób nie istnieje na tym serwerze.', + ], +]; diff --git a/lang/pl/pagination.php b/lang/pl/pagination.php new file mode 100644 index 000000000..29ddd85bf --- /dev/null +++ b/lang/pl/pagination.php @@ -0,0 +1,17 @@ + '« Powrót', + 'next' => 'Dalej »', +]; diff --git a/lang/pl/passwords.php b/lang/pl/passwords.php new file mode 100644 index 000000000..f53b792db --- /dev/null +++ b/lang/pl/passwords.php @@ -0,0 +1,19 @@ + 'Hasło musi zawierać co najmniej 6 znaków.', + 'reset' => 'Twoje hasło zostało zresetowane!', + 'sent' => 'Wysłaliśmy ci wiadomość e-mail z linkiem do zresetowania hasła!', + 'token' => 'Kod potwierdzający resetowanie hasła jest nieprawidłowy.', + 'user' => 'Nie znaleziono użytkownika o takim adresie e-mail.', +]; diff --git a/lang/pl/server/users.php b/lang/pl/server/users.php new file mode 100644 index 000000000..a414f250b --- /dev/null +++ b/lang/pl/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Umożliwia dostęp do websocket dla tego serwera.', + 'control_console' => 'Pozwala użytkownikowi na wysyłanie danych do konsoli serwera.', + 'control_start' => 'Pozwala użytkownikowi na uruchomienie serwera.', + 'control_stop' => 'Pozwala użytkownikowi na zatrzymanie serwera.', + 'control_restart' => 'Pozwala użytkownikowi na ponowne uruchomienie serwera.', + 'control_kill' => 'Pozwala użytkownikowi na natychmiastowe zatrzymanie serwera.', + 'user_create' => 'Pozwala użytkownikowi na tworzenie nowych kont użytkowników dla serwera.', + 'user_read' => 'Pozwala użytkownikowi na wyświetlanie użytkowników powiązanych z tym serwerem.', + 'user_update' => 'Pozwala użytkownikowi modyfikować innych użytkowników powiązanych z tym serwerem.', + 'user_delete' => 'Pozwala użytkownikowi na usunięcie innych użytkowników powiązanych z tym serwerem.', + 'file_create' => 'Zezwala użytkownikowi na tworzenie nowych plików i katalogów.', + 'file_read' => 'Pozwala użytkownikowi na wyświetlanie plików i folderów powiązanych z tą instancją serwera, a także na wyświetlanie ich zawartości.', + 'file_update' => 'Pozwala użytkownikowi aktualizować pliki i foldery powiązane z serwerem.', + 'file_delete' => 'Pozwala użytkownikowi na usuwanie plików i katalogów.', + 'file_archive' => 'Pozwala użytkownikowi na tworzenie archiwów plików i rozpakowywanie istniejących archiwów.', + 'file_sftp' => 'Umożliwia użytkownikowi wykonywanie powyższych czynności na plikach przy użyciu klienta SFTP.', + 'allocation_read' => 'Umożliwia dostęp do stron zarządzania alokacją serwera.', + 'allocation_update' => 'Zezwala użytkownikowi na modyfikowanie alokacji serwera.', + 'database_create' => 'Pozwala użytkownikowi na tworzenie nowej bazy danych.', + 'database_read' => 'Zezwala użytkownikowi na przeglądanie baz danych serwera.', + 'database_update' => 'Zezwala użytkownikowi na dokonywanie modyfikacji w bazie danych. Jeśli użytkownik nie ma uprawnień "View Password", nie będzie mógł modyfikować hasła.', + 'database_delete' => 'Zezwala użytkownikowi na usunięcie instancji bazy danych.', + 'database_view_password' => 'Zezwala użytkownikowi na wyświetlanie hasła do bazy danych w systemie.', + 'schedule_create' => 'Umożliwia użytkownikowi utworzenie nowego harmonogramu zadań dla serwera.', + 'schedule_read' => 'Umożliwia użytkownikowi przeglądanie harmonogramów zadań serwera.', + 'schedule_update' => 'Zezwala użytkownikowi na dokonywanie modyfikacji istniejącego harmonogramu zadań serwera.', + 'schedule_delete' => 'Umożliwia użytkownikowi usunięcie harmonogramu zadań serwera.', + ], +]; diff --git a/lang/pl/strings.php b/lang/pl/strings.php new file mode 100644 index 000000000..3638ed471 --- /dev/null +++ b/lang/pl/strings.php @@ -0,0 +1,95 @@ + 'E-mail', + 'email_address' => 'Adres e-mail', + 'user_identifier' => 'Nazwa użytkownika lub e-mail', + 'password' => 'Hasło', + 'new_password' => 'Nowe hasło', + 'confirm_password' => 'Potwierdź nowe hasło', + 'login' => 'Logowanie', + 'home' => 'Strona główna', + 'servers' => 'Serwery', + 'id' => 'ID', + 'name' => 'Nazwa', + 'node' => 'Węzeł', + 'connection' => 'Połączenie', + 'memory' => 'Pamięć', + 'cpu' => 'Procesor', + 'disk' => 'Dysk', + 'status' => 'Stan', + 'search' => 'Wyszukaj', + 'suspended' => 'Zawieszony', + 'account' => 'Konto', + 'security' => 'Bezpieczeństwo', + 'ip' => 'Adres IP', + 'last_activity' => 'Ostatnia aktywność', + 'revoke' => 'Unieważnij', + '2fa_token' => 'Token uwierzytelniania', + 'submit' => 'Zatwierdź', + 'close' => 'Zamknij', + 'settings' => 'Ustawienia', + 'configuration' => 'Konfiguracja', + 'sftp' => 'SFTP', + 'databases' => 'Bazy danych', + 'memo' => 'Notatka', + 'created' => 'Data utworzenia', + 'expires' => 'Wygasa', + 'public_key' => 'Token', + 'api_access' => 'Dostęp do API', + 'never' => 'nigdy', + 'sign_out' => 'Wyloguj się', + 'admin_control' => 'Ustawienia administratora', + 'required' => 'Wymagane', + 'port' => 'Port', + 'username' => 'Użytkownik', + 'database' => 'Baza danych', + 'new' => 'Nowy', + 'danger' => 'Niebezpieczeństwo', + 'create' => 'Utwórz', + 'select_all' => 'Zaznacz wszystko', + 'select_none' => 'Odznacz wszystko', + 'alias' => 'Alias', + 'primary' => 'Podstawowy', + 'make_primary' => 'Ustaw jako główny', + 'none' => 'Brak', + 'cancel' => 'Anuluj', + 'created_at' => 'Data utworzenia', + 'action' => 'Akcje', + 'data' => 'Data', + 'queued' => 'W kolejce', + 'last_run' => 'Ostatnie uruchomienie', + 'next_run' => 'Następne uruchomienie', + 'not_run_yet' => 'Jeszcze nie uruchomiono', + 'yes' => 'Tak', + 'no' => 'Nie', + 'delete' => 'Usuń', + '2fa' => 'Uwierzytelnianie dwustopniowe', + 'logout' => 'Wyloguj się', + 'admin_cp' => 'Panel administracyjny', + 'optional' => 'Opcjonalnie', + 'read_only' => 'Tylko do odczytu', + 'relation' => 'Relacja', + 'owner' => 'Właściciel', + 'admin' => 'Administrator', + 'subuser' => 'Podużytkownik', + 'captcha_invalid' => 'Podany kod captcha jest nieprawidłowy.', + 'tasks' => 'Zadania', + 'seconds' => 'Sekundy', + 'minutes' => 'Minuty', + 'under_maintenance' => 'Przerwa Techniczna', + 'days' => [ + 'sun' => 'Niedziela', + 'mon' => 'Poniedziałek', + 'tues' => 'Wtorek', + 'wed' => 'Środa', + 'thurs' => 'Czwartek', + 'fri' => 'Piątek', + 'sat' => 'Sobota', + ], + 'last_used' => 'Ostatnio używane', + 'enable' => 'Włącz', + 'disable' => 'Wyłącz', + 'save' => 'Zapisz', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/pl/validation.php b/lang/pl/validation.php new file mode 100644 index 000000000..e507ecae6 --- /dev/null +++ b/lang/pl/validation.php @@ -0,0 +1,106 @@ + ':attribute musi zostać zaakceptowany.', + 'active_url' => ':attribute jest nieprawidłowym adresem URL.', + 'after' => ':attribute musi być późniejszą datą w stosunku do :date.', + 'after_or_equal' => ':attribute musi być datą późniejszą lub tą samą co :date.', + 'alpha' => ':attribute może zawierać wyłącznie litery.', + 'alpha_dash' => ':attribute może zawierać tylko litery, cyfry i myślniki.', + 'alpha_num' => ':attribute może zawierać jedynie litery oraz cyfry.', + 'array' => ':attribute musi być array\'em.', + 'before' => ':attribute musi być datą przed :date.', + 'before_or_equal' => ':attribute musi być datą przed albo równą dacie :date.', + 'between' => [ + 'numeric' => ':attribute musi być w zakresie od :min do :max.', + 'file' => 'Waga :attribute musi wynosić pomiędzy :min, a :max kilobajtów.', + 'string' => 'Długość :attribute musi wynosić pomiędzy :min, a :max znaków', + 'array' => ':attribute musi zawierać pomiędzy :min a :max elementów.', + ], + 'boolean' => ':attribute musi być true lub false.', + 'confirmed' => 'Potwierdzenie :attribute nie jest zgodne.', + 'date' => ':attribute nie jest prawidłową datą.', + 'date_format' => ':attribute musi mieć format :format.', + 'different' => ':attribute i :other muszą się różnić.', + 'digits' => ':attribute musi składać się z :digits cyfr.', + 'digits_between' => ':attribute musi mieć od :min do :max cyfr.', + 'dimensions' => ':attribute ma niepoprawne wymiary.', + 'distinct' => 'Pole :attribute zawiera zduplikowaną wartość.', + 'email' => ':attribute musi być prawidłowym adresem email.', + 'exists' => 'Wybrany :attribute jest nieprawidłowy.', + 'file' => ':attrivute musi być plikiem.', + 'filled' => 'Pole :attribute jest wymagane.', + 'image' => ':attribute musi być obrazem.', + 'in' => 'Wybrany :attribute jest nieprawidłowy.', + 'in_array' => 'Pole :attribute nie istnieje w :other.', + 'integer' => ':attribute musi być liczbą.', + 'ip' => ':attribute musi być prawidłowym adresem IP.', + 'json' => ':attribute musi być prawidłowym ciągiem JSON.', + 'max' => [ + 'numeric' => ':attribute nie może być większa niż :max.', + 'file' => 'Wielkość :attribute nie może być większa niż :max kilobajtów.', + 'string' => ':attribute nie może być dłuższy niż :max znaków.', + 'array' => ':attribute nie może mieć więcej niż :max elementów.', + ], + 'mimes' => ':attribute musi być plikiem typu: :values.', + 'mimetypes' => ':attribute musi być plikiem typu: :values.', + 'min' => [ + 'numeric' => ':attribute musi mieć co najmniej :min.', + 'file' => ':attribute musi mieć co najmniej :min kilobajtów.', + 'string' => ':attribute musi mieć przynajmniej :min znaków.', + 'array' => ':attribute musi mieć co najmniej :min elementów.', + ], + 'not_in' => 'Wybrany :attribute jest nieprawidłowy.', + 'numeric' => ':attribute musi być liczbą.', + 'present' => 'Pole :attribute musi być wypełnione.', + 'regex' => 'Format :attribute jest niewłaściwy.', + 'required' => 'Pole :attribute jest wymagane.', + 'required_if' => 'Pole :attribute jest wymagane, gdy :other jest :value.', + 'required_unless' => ':attribute jest wymagany jeżeli :other nie znajduje się w :values.', + 'required_with' => 'Pole :attribute jest wymagane gdy :values jest obecny.', + 'required_with_all' => 'Pole :attribute jest wymagane gdy :values jest obecny.', + 'required_without' => 'Pole :attribute jest wymagane gdy :values nie jest podana.', + 'required_without_all' => 'Pole :attribute jest wymagane, gdy żadna z :values nie jest obecna.', + 'same' => 'Pole :attribute oraz :other muszą być takie same.', + 'size' => [ + 'numeric' => 'Atrybut :attribute musi mieć wartość :size.', + 'file' => 'Pole :attribute musi mieć :size kilobajtów.', + 'string' => ':attribute musi mieć :size znaków.', + 'array' => ':attribute musi zawierać :size elementów.', + ], + 'string' => ':attribute musi być typu string.', + 'timezone' => ':attribute musi być prawidłową strefą.', + 'unique' => ':attribute został już pobrany.', + 'uploaded' => 'Nie udało się przesłać :attribute.', + 'url' => 'Format :attribute jest niewłaściwy.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => 'Zmienna :env', + 'invalid_password' => 'Podane hasło jest nieprawidłowe.', + ], +]; diff --git a/lang/pt/activity.php b/lang/pt/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/pt/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/pt/admin/eggs.php b/lang/pt/admin/eggs.php new file mode 100644 index 000000000..8f8e5e8cd --- /dev/null +++ b/lang/pt/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'As eggs e as suas variáveis de ambiente foram importadas com sucesso.', + 'updated_via_import' => 'Essa egg foi atualizada usando o arquivo fornecido.', + 'deleted' => 'A egg solicitada foi removida com sucesso do Painel.', + 'updated' => 'As configurações da egg foi atualizada com sucesso.', + 'script_updated' => 'O script de instação da egg foi atualizado e poderá ser executado quando os servidores forem instalados.', + 'egg_created' => 'Um novo egg \'foi criado com sucesso. Reinicie os daemons em execução para aplicar essa nova egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'A variável ":variable" foi removida com sucesso e não estará mais disponível para os servidores após a reinstalação.', + 'variable_updated' => 'A variável ":variable" foi atualizada. Reinstale os servidores utilizando essa variável para as aplicações serem alteradas.', + 'variable_created' => 'Essa variável foi criada com sucesso e vinculada com a egg.', + ], + ], +]; diff --git a/lang/pt/admin/node.php b/lang/pt/admin/node.php new file mode 100644 index 000000000..d536c2ec5 --- /dev/null +++ b/lang/pt/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'O FQDN ou endereço IP providenciado não é valido.', + 'fqdn_required_for_ssl' => 'É necessário de um FQDN para ser utilizado o SSL.', + ], + 'notices' => [ + 'allocations_added' => 'As alocações foram adicionadas com sucesso no node.', + 'node_deleted' => 'O node foi removido com sucesso do painel.', + 'node_created' => 'O node foi criado com sucesso. Você pode automaticamente configurar esse node na máquina entrando na aba Configurações. Antes de adicionar os servidores, é necessário criar uma alocação com endereço IP da máquina e a porta.', + 'node_updated' => 'As informações do node foi atualizada. Caso foi feito uma configuração na máquina do node, será necessário reiniciar para aplicar as alterações.', + 'unallocated_deleted' => 'Foram removidos todas as portas não alocadas para :ip', + ], +]; diff --git a/lang/pt/admin/server.php b/lang/pt/admin/server.php new file mode 100644 index 000000000..b85580786 --- /dev/null +++ b/lang/pt/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Você não pode remover uma alocação de um servidor sem possuir outras alocações.', + 'marked_as_failed' => 'Este servidor falhou durante uma instalação anterior. O status atual não pode ser alterado nesse estado.', + 'bad_variable' => 'Ocorreu um erro de validação na varável :name.', + 'daemon_exception' => 'Ocorreu um erro ao tentar se comunicar com a máquina, resultando um status code HTTP/:code. Esse problema foi gerado com request id :request_id', + 'default_allocation_not_found' => 'A alocação padrão não foi encontrado nas alocações dos servidores.', + ], + 'alerts' => [ + 'startup_changed' => 'A configuração de inicialização foi atualizada com sucesso. Caso a egg deste servidor tenha sido atualizado, reinstale o servidor.', + 'server_deleted' => 'Este servidor foi removido do sistema com sucesso.', + 'server_created' => 'O servidor foi criado com sucesso no painel. Aguarde alguns minutos a máquina terminar de instalar o servidor.', + 'build_updated' => 'As configurações de build foram atualizadas. Será necessário reiniciar o servidor para aplicar algumas alterações.', + 'suspension_toggled' => 'O status de suspensão do servidor foi alterada para :status', + 'rebuild_on_boot' => 'Esse servidor foi alterado para reinstalar o Docker Container. Isso será aplicado na próxima vez que o servidor for iniciado.', + 'install_toggled' => 'O status de instalação foi ativado para esse servidor.', + 'server_reinstalled' => 'Este servidor foi colocado na fila para reinstalação a partir de agora.', + 'details_updated' => 'Os detalhes do servidor foram atualizadas.', + 'docker_image_updated' => 'A imagem do docker foi atualizada para ser utilizado neste servidor com sucesso. É necessário reiniciar o servidor para aplicar as alterações.', + 'node_required' => 'É necessário de um node configurado antes de adicionar esse servidor ao painel.', + 'transfer_nodes_required' => 'É necessário de pelo menos dois nodes para transferir os servidores.', + 'transfer_started' => 'A transferência de servidores começou.', + 'transfer_not_viable' => 'O node selecionado não há espaço em disco ou memória suficiente para acomodar esse servidor.', + ], +]; diff --git a/lang/pt/admin/user.php b/lang/pt/admin/user.php new file mode 100644 index 000000000..f1093029a --- /dev/null +++ b/lang/pt/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Não é possível excluir este usuário porque ele possui servidores ativos na conta. Remova os servidores na conta antes de continuar.', + 'user_is_self' => 'Não é possível excluir a sua própria conta.', + ], + 'notices' => [ + 'account_created' => 'A conta foi criada com sucesso.', + 'account_updated' => 'A conta foi atualizada com sucesso.', + ], +]; diff --git a/lang/pt/auth.php b/lang/pt/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/pt/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/pt/command/messages.php b/lang/pt/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/pt/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/pt/dashboard/account.php b/lang/pt/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/pt/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/pt/dashboard/index.php b/lang/pt/dashboard/index.php new file mode 100644 index 000000000..abcda4e6b --- /dev/null +++ b/lang/pt/dashboard/index.php @@ -0,0 +1,8 @@ + 'Procure por servidores.', + 'no_matches' => 'Não foi possível encontrar servidores que batem com os requisitos de busca.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memória', +]; diff --git a/lang/pt/exceptions.php b/lang/pt/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/pt/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/pt/pagination.php b/lang/pt/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/pt/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/pt/passwords.php b/lang/pt/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/pt/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/pt/server/users.php b/lang/pt/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/pt/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/pt/strings.php b/lang/pt/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/pt/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/pt/validation.php b/lang/pt/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/pt/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/ro/activity.php b/lang/ro/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/ro/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/ro/admin/eggs.php b/lang/ro/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/ro/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/ro/admin/node.php b/lang/ro/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/ro/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/ro/admin/server.php b/lang/ro/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/ro/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/ro/admin/user.php b/lang/ro/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/ro/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/ro/auth.php b/lang/ro/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/ro/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/ro/command/messages.php b/lang/ro/command/messages.php new file mode 100644 index 000000000..457947d29 --- /dev/null +++ b/lang/ro/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Introduceți un nume de utilizator, ID utilizator sau adresă de e-mail', + 'select_search_user' => 'ID-ul utilizatorului pentru șters (Introduceți \'0\' pentru a căuta din nou)', + 'deleted' => 'Utilizatorul a fost șters din Panou cu succes.', + 'confirm_delete' => 'Sunteți sigur ca doriți sa ștergeți utilizatorul din Panou?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/ro/dashboard/account.php b/lang/ro/dashboard/account.php new file mode 100644 index 000000000..f0ae0d5ba --- /dev/null +++ b/lang/ro/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Actualizează emailul', + 'updated' => 'Adresa ta de email a fost actualizată.', + ], + 'password' => [ + 'title' => 'Schimbă-ți parola', + 'requirements' => 'Noua ta parolă ar trebui să aibă cel puțin 8 caractere.', + 'updated' => 'Parola ta a fost actualizată.', + ], + 'two_factor' => [ + 'button' => 'Configurează autentificarea cu doi factori', + 'disabled' => 'Autentificarea cu doi factori a fost dezactivată din contul tău Nu vei mai fi solicitat să furnizezi un token la autentificare.', + 'enabled' => 'Autentificarea cu doi factori a fost activată în contul tău! De acum înainte, când te conectezi, va trebui să introduci codul generat de pe dispozitivul tău.', + 'invalid' => 'Token-ul furnizat nu a fost valid.', + 'setup' => [ + 'title' => 'Setează autentificarea cu doi factori', + 'help' => 'Nu poți scana codul? Introdu codul de mai jos din aplicație:', + 'field' => 'Introdu token-ul', + ], + 'disable' => [ + 'title' => 'Dezactivează autentificarea cu doi factori', + 'field' => 'Introdu token-ul', + ], + ], +]; diff --git a/lang/ro/dashboard/index.php b/lang/ro/dashboard/index.php new file mode 100644 index 000000000..3ae7a3f32 --- /dev/null +++ b/lang/ro/dashboard/index.php @@ -0,0 +1,8 @@ + 'Caută servere...', + 'no_matches' => 'Nu au fost găsite servere care să corespundă criteriilor de căutare furnizate.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memorie', +]; diff --git a/lang/ro/exceptions.php b/lang/ro/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/ro/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/ro/pagination.php b/lang/ro/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/ro/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/ro/passwords.php b/lang/ro/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/ro/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/ro/server/users.php b/lang/ro/server/users.php new file mode 100644 index 000000000..f9baf4f54 --- /dev/null +++ b/lang/ro/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Permite accesul la websocket pentru acest server.', + 'control_console' => 'Permite utilizatorului să trimită date către consola serverului.', + 'control_start' => 'Permite utilizatorului să pornească serverul.', + 'control_stop' => 'Permite utilizatorului să oprească serverul.', + 'control_restart' => 'Permite utilizatorului să repornească serverul.', + 'control_kill' => 'Permite utilizatorului oprească forțat serverul.', + 'user_create' => 'Permite utilizatorului să creeze noi conturi de utilizator pentru server.', + 'user_read' => 'Permite utilizatorului să vizualizeze utilizatorii asociați cu acest server.', + 'user_update' => 'Permite utilizatorului să modifice alți utilizatori asociați cu acest server.', + 'user_delete' => 'Permite utilizatorului să șteargă alți utilizatori asociați cu acest server.', + 'file_create' => 'Permite utilizatorului să creeze fişiere şi directoare noi.', + 'file_read' => 'Permite utilizatorului să vadă fișierele și dosarele asociate cu această instanță de server, precum și să vizualizeze conținutul acestora.', + 'file_update' => 'Permite utilizatorului să actualizeze fişierele şi dosarele asociate cu serverul.', + 'file_delete' => 'Permite utilizatorului să șteargă fișiere și directoare.', + 'file_archive' => 'Permite utilizatorului să creeze arhive de fișiere și să descompună arhivele existente.', + 'file_sftp' => 'Permite utilizatorului să efectueze acțiunile fișierelor de mai sus folosind un client SFTP.', + 'allocation_read' => 'Permite accesul la paginile de administrare a alocărilor de la server.', + 'allocation_update' => 'Permite utilizatorului să facă modificări la alocările serverului.', + 'database_create' => 'Permite utilizatorului să creeze o nouă bază de date pentru server.', + 'database_read' => 'Permite utilizatorului să vizualizeze bazele de date ale serverului.', + 'database_update' => 'Permite utilizatorului să facă modificări într-o bază de date. În cazul în care utilizatorul nu are permisiunea "Vizualizare parolă", de asemenea, acesta nu va putea modifica parola.', + 'database_delete' => 'Permite unui utilizator să șteargă o instanță a bazei de date.', + 'database_view_password' => 'Permite utilizatorului sa vadă parola bazei de date în sistem.', + 'schedule_create' => 'Permite unui utilizator să creeze un nou orar pentru server.', + 'schedule_read' => 'Permite unui utilizator permisiunea de a vizualiza programările pentru un server.', + 'schedule_update' => 'Permite unui utilizator să facă modificări la un program de server existent.', + 'schedule_delete' => 'Permite unui utilizator să șteargă un program pentru server.', + ], +]; diff --git a/lang/ro/strings.php b/lang/ro/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/ro/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/ro/validation.php b/lang/ro/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/ro/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/ru/activity.php b/lang/ru/activity.php new file mode 100644 index 000000000..a63b6eaa4 --- /dev/null +++ b/lang/ru/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Не удалось войти', + 'success' => 'Вход выполнен', + 'password-reset' => 'Пароль сброшен', + 'reset-password' => 'Запрошен сброс пароля', + 'checkpoint' => 'Двухфакторная аутентификация включена', + 'recovery-token' => 'Использован резервный код 2FA', + 'token' => 'Пройдена двухфакторная проверка', + 'ip-blocked' => 'Заблокирован запрос с IP адреса не внесенного в список для :identifier', + 'sftp' => [ + 'fail' => 'Не удалось войти в SFTP', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Изменена эл. почта с :old на :new', + 'password-changed' => 'Изменен пароль', + ], + 'api-key' => [ + 'create' => 'Создан новый API ключ :identifier', + 'delete' => 'Удален API ключ :identifier', + ], + 'ssh-key' => [ + 'create' => 'Добавлен SSH ключ :fingerprint в аккаунт', + 'delete' => 'SSH ключ :fingerprint удален из аккаунта', + ], + 'two-factor' => [ + 'create' => 'Включена двухфакторная авторизация', + 'delete' => 'Двухфакторная авторизация отключена', + ], + ], + 'server' => [ + 'reinstall' => 'Сервер переустановлен', + 'console' => [ + 'command' => 'Выполнено ":command" на сервере', + ], + 'power' => [ + 'start' => 'Сервер запущен', + 'stop' => 'Сервер остановлен', + 'restart' => 'Сервер перезапущен', + 'kill' => 'Процесс сервера принудительно завершен', + ], + 'backup' => [ + 'download' => 'Скачана резервная копия :name', + 'delete' => 'Удалена резервная копия :name', + 'restore' => 'Восстановлена резервная копия :name (удалены файлы: :truncate)', + 'restore-complete' => 'Восстановление резервной копии :name завершено', + 'restore-failed' => 'Не удалось восстановить резервную копию :name', + 'start' => 'Запущено резервное копирование :name', + 'complete' => 'Резервная копия :name отмечена как завершенная', + 'fail' => 'Не удалось создать резервную копию :name', + 'lock' => 'Защищена резервная копия :name', + 'unlock' => 'Разблокирована резервная копия :name', + ], + 'database' => [ + 'create' => 'Создана база данных :name', + 'rotate-password' => 'Изменен пароль для базы данных :name', + 'delete' => 'Удалена база данных :name', + ], + 'file' => [ + 'compress_one' => ':directory:file архивирован', + 'compress_other' => 'Архивировано :count файлов из директории :directory', + 'read' => 'Просмотрено содержимое :file', + 'copy' => 'Создана копия :file', + 'create-directory' => 'Создана директория :directory:name', + 'decompress' => 'Разархивировано :files файлов в :directory', + 'delete_one' => 'Удалено :directory:files.0', + 'delete_other' => 'Удалено :count файлов из :directory', + 'download' => 'Скачан :file', + 'pull' => 'Скачан файл из :url в :directory', + 'rename_one' => ':directory:files.0.from переименован в :directory:files.0.to', + 'rename_other' => 'Переименовано :count файлов в :directory', + 'write' => 'Обновлено содержание :file', + 'upload' => 'Начата загрузка файлов', + 'uploaded' => 'Загружено :directory:file', + ], + 'sftp' => [ + 'denied' => 'Подключение по SFTP заблокировано из-за отсутствия разрешений', + 'create_one' => 'Создан :files.0', + 'create_other' => 'Создано :count новых файлов', + 'write_one' => 'Изменено содержание файла :files.0', + 'write_other' => 'Изменено содержание :count файлов', + 'delete_one' => 'Удален :files.0', + 'delete_other' => 'Удалено :count файлов', + 'create-directory_one' => 'Создана директория :files.0', + 'create-directory_other' => 'Создано :count директорий', + 'rename_one' => ':files.0.from переименован в :files.0.to', + 'rename_other' => 'Переименовано или перемещено :count файлов', + ], + 'allocation' => [ + 'create' => 'Добавлен порт :allocation', + 'notes' => 'Обновлены заметки для :allocation с ":old" на ":new"', + 'primary' => ':allocation установлен как основной порт сервера', + 'delete' => 'Порт :allocation был удален', + ], + 'schedule' => [ + 'create' => 'Создано расписание :name', + 'update' => 'Изменено расписание :name', + 'execute' => 'Вручную выполнено расписание :name', + 'delete' => 'Удалено расписание :name', + ], + 'task' => [ + 'create' => 'Создана новая задача ":action" для расписания :name', + 'update' => 'Изменена задача ":action" для расписания :name', + 'delete' => 'Удалена задача в расписании :name', + ], + 'settings' => [ + 'rename' => 'Название сервера изменено с :old на :new', + 'description' => 'Описание сервера изменено с :old на :new', + ], + 'startup' => [ + 'edit' => 'Переменная :variable изменена с ":old" на ":new"', + 'image' => 'Образ Docker обновлен с :old на :new', + ], + 'subuser' => [ + 'create' => 'Добавлен подпользователь :email', + 'update' => 'Обновлены права подпользователя :email', + 'delete' => 'Подпользователь :email удален', + ], + ], +]; diff --git a/lang/ru/admin/eggs.php b/lang/ru/admin/eggs.php new file mode 100644 index 000000000..14f8651d6 --- /dev/null +++ b/lang/ru/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Яйцо и его переменные успешно импортированы.', + 'updated_via_import' => 'Яйцо успешно обновлено из файла.', + 'deleted' => 'Яйцо успешно удалено из панели.', + 'updated' => 'Конфигурация яйца успешно изменена.', + 'script_updated' => 'Скрипт установки яйца был успешно обновлен и будет выполняться при установке серверов.', + 'egg_created' => 'Яйцо успешно создано. Для применения изменений перезагрузите Wings.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'Переменная ":variable" удалена, после пересборки серверов она более не будет им доступна.', + 'variable_updated' => 'Переменная ":variable" обновлена. Для применения изменений на серверах необходимо их пересобрать.', + 'variable_created' => 'Новая переменная создана и назначена яйцу успешно.', + ], + ], +]; diff --git a/lang/ru/admin/node.php b/lang/ru/admin/node.php new file mode 100644 index 000000000..40c01df7d --- /dev/null +++ b/lang/ru/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'Введенные IP адрес или домен не преобразуются в IP-адрес.', + 'fqdn_required_for_ssl' => 'Для использования SSL на этом узле необходимо полное доменное имя, преобразующееся в действительный публичный IP-адрес.', + ], + 'notices' => [ + 'allocations_added' => 'Местоположения успешно добавлены в этот узел.', + 'node_deleted' => 'Узел успешно удален из панели.', + 'node_created' => 'Узел успешно создан. Вы можете автоматически настроить демон на нем, используя вкладку Конфигурация. Перед созданием серверов на этом узле Вы должны выделить как минимум один IP-адрес и порт.', + 'node_updated' => 'Информация об узле успешно обновлена. Если Вы изменили настройки демона, нужно будет перезагрузить его на узле для применения изменений.', + 'unallocated_deleted' => 'Удалены все не назначенные порты для :ip.', + ], +]; diff --git a/lang/ru/admin/server.php b/lang/ru/admin/server.php new file mode 100644 index 000000000..f8684d013 --- /dev/null +++ b/lang/ru/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Вы пытаетесь удалить основное выделение для этого сервера, но нет резервного выделения для использования.', + 'marked_as_failed' => 'Этот сервер был отмечен как не прошедший предыдущую установку. Текущий статус не может быть изменен в этом состоянии.', + 'bad_variable' => 'Произошла ошибка проверки переменной :name.', + 'daemon_exception' => 'Возникло исключение при попытке связи с демоном, что привело к коду ответа HTTP/:code. Это исключение было записано в журнал. (идентификатор запроса: :request_id)', + 'default_allocation_not_found' => 'Запрашиваемое основное выделение не найдено в выделениях этого сервера.', + ], + 'alerts' => [ + 'startup_changed' => 'Конфигурация запуска для этого сервера была обновлена. Если яйцо этого сервера было изменено, начнется переустановка.', + 'server_deleted' => 'Сервер успешно удален из системы.', + 'server_created' => 'Сервер успешно создан в панели. Пожалуйста, дайте демону несколько минут, чтобы полностью установить этот сервер.', + 'build_updated' => 'Сведения о сборке для этого сервера были обновлены. Некоторые изменения могут потребовать перезагрузки для вступления в силу.', + 'suspension_toggled' => 'Статус приостановки сервера изменен на :status.', + 'rebuild_on_boot' => 'Этот сервер отмечен как требующий перестройки контейнера Docker. Это произойдет при следующем запуске сервера.', + 'install_toggled' => 'Статус установки для этого сервера был переключен.', + 'server_reinstalled' => 'Этот сервер поставлен в очередь на переустановку, начиная сейчас.', + 'details_updated' => 'Сведения о сервере успешно обновлены.', + 'docker_image_updated' => 'Успешно изменен образ Docker по умолчанию для этого сервера. Для применения этого изменения требуется перезагрузка.', + 'node_required' => 'Перед добавлением сервера в эту панель вы должны настроить хотя бы один узел.', + 'transfer_nodes_required' => 'Перед переносом серверов необходимо настроить как минимум два узла.', + 'transfer_started' => 'Перенос сервера был начат.', + 'transfer_not_viable' => 'Выбранный вами узел не имеет достаточного дискового пространства или доступной памяти для размещения этого сервера.', + ], +]; diff --git a/lang/ru/admin/user.php b/lang/ru/admin/user.php new file mode 100644 index 000000000..a37cbd6a4 --- /dev/null +++ b/lang/ru/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Невозможно удалить пользователя с активными серверами, привязанными к его учетной записи. Пожалуйста, удалите его серверы, прежде чем продолжить.', + 'user_is_self' => 'Невозможно удалить свою учетную запись.', + ], + 'notices' => [ + 'account_created' => 'Учетная запись успешно создана!', + 'account_updated' => 'Аккаунт был успешно изменен.', + ], +]; diff --git a/lang/ru/auth.php b/lang/ru/auth.php new file mode 100644 index 000000000..72c2cfd44 --- /dev/null +++ b/lang/ru/auth.php @@ -0,0 +1,27 @@ + 'Войти', + 'go_to_login' => 'Перейти к входу', + 'failed' => 'Не удалось найти аккаунт', + + 'forgot_password' => [ + 'label' => 'Забыл пароль?', + 'label_help' => 'Введите свой адрес электронной почты для получения инструкций по сбросу пароля.', + 'button' => 'Восстановить пароль', + ], + + 'reset_password' => [ + 'button' => 'Сбросить и войти', + ], + + 'two_factor' => [ + 'label' => 'Код 2FA', + 'label_help' => 'На этом аккаунте включена двухфакторная аутентификация. Пожалуйста, введите код из приложения аутентификатора.', + 'checkpoint_failed' => 'Неверный код 2FA', + ], + + 'throttle' => 'Слишком много попыток входа. Пожалуйста, попробуйте снова через :seconds секунд.', + 'password_requirements' => 'Пароль должен быть длиной не менее 8 символов.', + '2fa_must_be_enabled' => 'Администратор потребовал, чтобы для вашей учетной записи была включена 2FA для доступа к панели.', +]; diff --git a/lang/ru/command/messages.php b/lang/ru/command/messages.php new file mode 100644 index 000000000..8584dee2d --- /dev/null +++ b/lang/ru/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Введите ID пользователя, его имя или адрес эл. Почты', + 'select_search_user' => 'ID пользователя для удаления (введите \'0\' для повторного поиска)', + 'deleted' => 'Пользователь успешно удален из панели.', + 'confirm_delete' => 'Вы уверены, что хотите удалить этого пользователя из панели?', + 'no_users_found' => 'По Вашему запросу не найдено ни одного пользователя.', + 'multiple_found' => 'По Вашему запросу найдено несколько аккаунтов пользователей. Ничего не было предпринято, так как установлен флаг --no-interaction.', + 'ask_admin' => 'Является ли пользователь администратором?', + 'ask_email' => 'Адрес эл. почты', + 'ask_username' => 'Имя пользователя', + 'ask_name_first' => 'Имя', + 'ask_name_last' => 'Фамилия', + 'ask_password' => 'Пароль', + 'ask_password_tip' => 'Если Вы хотите создать пользователя со случайным паролем, который будет отправлен ему на адрес эл. почты, выполните эту команду снова, нажав CTRL+C и добавив флаг `--no-password`.', + 'ask_password_help' => 'Пароль должен содержать минимум одну заглавную букву и число, а также иметь длину не менее 8 символов.', + '2fa_help_text' => [ + 'Эта команда отключает двухфакторную аутентификацию для учетной записи пользователя, если она включена. Это должно использоваться только в качестве команды восстановления учетной записи, если пользователь заблокирован из своей учетной записи.', + 'Если это не то, что вы хотите сделать, нажмите CTRL+C для выхода из этого процесса.', + ], + '2fa_disabled' => 'Двухфакторная аутентификация была отключена для :email.', + ], + 'schedule' => [ + 'output_line' => 'Диспетчер задания для первой задачи в папке `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Удаление файла резервной копии :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Перестройка запроса ":name" (#:id) на узле ":node" завершилась ошибкой: :message', + 'reinstall' => [ + 'failed' => 'Перестройка запроса ":name" (#:id) на узле ":node" завершилась ошибкой: :message', + 'confirm' => 'Вы собираетесь переустановить с группой серверов. Вы хотите продолжить?', + ], + 'power' => [ + 'confirm' => 'Вы собираетесь выполнить :action против :count серверов. Вы хотите продолжить?', + 'action_failed' => 'Перестройка запроса ":name" (#:id) на узле ":node" завершилась ошибкой: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP хост (например, smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Порт', + 'ask_smtp_username' => 'SMTP логин', + 'ask_smtp_password' => 'SMTP пароль', + 'ask_mailgun_domain' => 'Домен Mailgun', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun секрет', + 'ask_mandrill_secret' => 'Секрет Мандрилла', + 'ask_postmark_username' => 'Ключ API Postmark', + 'ask_driver' => 'Какой водитель следует использовать для отправки сообщений?', + 'ask_mail_from' => 'Email адреса должны быть отправлены из', + 'ask_mail_name' => 'Имя адреса электронной почты', + 'ask_encryption' => 'Метод шифрования', + ], + ], +]; diff --git a/lang/ru/dashboard/account.php b/lang/ru/dashboard/account.php new file mode 100644 index 000000000..645653ecb --- /dev/null +++ b/lang/ru/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Изменить эл. почту', + 'updated' => 'Ваш адрес эл. почты успешно изменен.', + ], + 'password' => [ + 'title' => 'Изменить пароль', + 'requirements' => 'Длина вашего нового пароля должна быть не менее 8 символов.', + 'updated' => 'Ваш пароль был изменен.', + ], + 'two_factor' => [ + 'button' => 'Настроить двухфакторную аутентификацию', + 'disabled' => 'Двухфакторная аутентификация была отключена для вашего аккаунта. Вам больше не будет предлагаться подтвердить авторизацию.', + 'enabled' => 'Двухфакторная аутентификация была включена для вашего аккаунта! Теперь при входе вам необходимо будет предоставить код, сгенерированный вашим устройством.', + 'invalid' => 'Указанный код недействителен.', + 'setup' => [ + 'title' => 'Настройка двухфакторной авторизации', + 'help' => 'Не удается просканировать код? Введите код ниже в приложение:', + 'field' => 'Введите код', + ], + 'disable' => [ + 'title' => 'Отключить двухфакторную авторизацию', + 'field' => 'Введите код', + ], + ], +]; diff --git a/lang/ru/dashboard/index.php b/lang/ru/dashboard/index.php new file mode 100644 index 000000000..6ceac4347 --- /dev/null +++ b/lang/ru/dashboard/index.php @@ -0,0 +1,8 @@ + 'Поиск серверов...', + 'no_matches' => 'Не найдено серверов, соответствующих указанным критериям поиска.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Память', +]; diff --git a/lang/ru/exceptions.php b/lang/ru/exceptions.php new file mode 100644 index 000000000..0054e46be --- /dev/null +++ b/lang/ru/exceptions.php @@ -0,0 +1,55 @@ + 'При попытке связи с узлом произошла ошибка HTTP/:code. Информация была передана администрации. (идентификатор запроса: :request_id)', + 'node' => [ + 'servers_attached' => 'Узел не должен иметь подключенных к нему серверов, чтобы быть удален.', + 'daemon_off_config_updated' => 'Конфигурация демона была обновлена, но при попытке автоматического обновления конфигурационного файла произошла ошибка. Вам нужно вручную обновить конфигурационный файл (config.yml) для применения этих изменений.', + ], + 'allocations' => [ + 'server_using' => 'Сервер в настоящее время назначается для этого размещения. Распределение может быть удалено, только если ни один сервер не назначен.', + 'too_many_ports' => 'Добавление более 1000 портов в одном диапазоне за раз не поддерживается.', + 'invalid_mapping' => 'Сопоставление, предоставленное для порта {port}, было недопустимым и не могло быть обработано.', + 'cidr_out_of_range' => 'Нотация CIDR допускает только маски между /25 и /32.', + 'port_out_of_range' => 'Порты в распределении должны быть больше 1024 и меньше или равны 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'Яйцо с подключенными к нему серверами не может быть удалено из панели.', + 'invalid_copy_id' => 'Яйцо, выбранное для копирования сценария, либо не существует, либо копирует сценарий из самого себя.', + 'has_children' => 'Это яйцо является родительским для одного или нескольких других яиц. Пожалуйста, удалите эти яйца, прежде чем удалять это яйцо.', + ], + 'variables' => [ + 'env_not_unique' => 'Переменная окружения :name должна быть уникальной для этого яйца.', + 'reserved_name' => 'Переменная окружения :name защищена и не может быть назначена переменной.', + 'bad_validation_rule' => 'Правило проверки ":rule" не является правилом для этого приложения.', + ], + 'importer' => [ + 'json_error' => 'Произошла ошибка при попытке разобрать файл JSON: :error.', + 'file_error' => 'Указанный JSON файл недействителен.', + 'invalid_json_provided' => 'Предоставленный файл JSON не имеет формата, который можно распознать.', + ], + 'subusers' => [ + 'editing_self' => 'Редактирование вашей учетной записи подпользователя запрещено.', + 'user_is_owner' => 'Вы не можете добавить владельца сервера в качестве субпользователя для этого сервера.', + 'subuser_exists' => 'Пользователь с таким адресом электронной почты уже назначен в качестве субпользователя для этого сервера.', + ], + 'databases' => [ + 'delete_has_databases' => 'Невозможно удалить сервер хоста базы данных, на котором есть активные базы данных.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'Максимальное время интервала для связанной задачи составляет 15 минут.', + ], + 'locations' => [ + 'has_nodes' => 'Невозможно удалить местоположение, в котором к нему прикреплены активные узлы.', + ], + 'users' => [ + 'node_revocation_failed' => 'Не удалось отозвать ключи на узле #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'Не найдено ни одного распределения, удовлетворяющего требованиям для автоматического развертывания на этом узле.', + ], + 'api' => [ + 'resource_not_found' => 'Запрашиваемый ресурс не существует на сервере.', + ], +]; diff --git a/lang/ru/pagination.php b/lang/ru/pagination.php new file mode 100644 index 000000000..c7a629e1b --- /dev/null +++ b/lang/ru/pagination.php @@ -0,0 +1,17 @@ + '« Назад', + 'next' => 'Вперёд »', +]; diff --git a/lang/ru/passwords.php b/lang/ru/passwords.php new file mode 100644 index 000000000..1ec3bea47 --- /dev/null +++ b/lang/ru/passwords.php @@ -0,0 +1,19 @@ + 'Длина пароля менее шести символов или пароли не совпадают.', + 'reset' => 'Ваш пароль был сброшен!', + 'sent' => 'Мы отправили ссылку для сброса пароля на ваш адрес эл. почты!', + 'token' => 'Этот токен сброса пароля недействителен.', + 'user' => 'Мы не можем найти пользователя с таким адресом электронной почты.', +]; diff --git a/lang/ru/server/users.php b/lang/ru/server/users.php new file mode 100644 index 000000000..68fad8814 --- /dev/null +++ b/lang/ru/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Позволяет доступ к веб-сокету для этого сервера.', + 'control_console' => 'Позволяет пользователю отправлять данные в консоль сервера.', + 'control_start' => 'Позволяет пользователю запустить экземпляр сервера.', + 'control_stop' => 'Позволяет пользователю остановить экземпляр сервера.', + 'control_restart' => 'Позволяет пользователю перезапустить экземпляр сервера.', + 'control_kill' => 'Позволяет пользователю прервать процесс сервера.', + 'user_create' => 'Позволяет пользователю создавать новые учетные записи пользователей для сервера.', + 'user_read' => 'Предоставляет пользователю разрешение на просмотр пользователей, связанных с этим сервером.', + 'user_update' => 'Позволяет пользователю изменять других пользователей, связанных с этим сервером.', + 'user_delete' => 'Позволяет пользователю удалять других пользователей, связанных с этим сервером.', + 'file_create' => 'Предоставляет пользователю разрешение на создание новых файлов и каталогов.', + 'file_read' => 'Позволяет пользователю видеть файлы и папки, связанные с этим экземпляром сервера, а также просматривать их содержимое.', + 'file_update' => 'Позволяет пользователю обновлять файлы и папки, связанные с сервером.', + 'file_delete' => 'Позволяет пользователю удалять файлы и каталоги.', + 'file_archive' => 'Позволяет пользователю создавать архивы файлов и распаковывать существующие архивы.', + 'file_sftp' => 'Позволяет пользователю выполнять вышеуказанные действия с файлами с использованием клиента SFTP.', + 'allocation_read' => 'Предоставляет доступ к страницам управления выделением сервера.', + 'allocation_update' => 'Предоставляет пользователю разрешение на внесение изменений в выделения сервера.', + 'database_create' => 'Предоставляет пользователю разрешение на создание новой базы данных для сервера.', + 'database_read' => 'Предоставляет пользователю разрешение на просмотр баз данных сервера.', + 'database_update' => 'Предоставляет пользователю разрешение на внесение изменений в базу данных. Если у пользователя нет разрешения "Просмотр пароля", он не сможет изменить пароль.', + 'database_delete' => 'Предоставляет пользователю разрешение на удаление экземпляра базы данных.', + 'database_view_password' => 'Позволяет пользователю просматривать пароль базы данных в системе.', + 'schedule_create' => 'Позволяет пользователю создавать новое расписание для сервера.', + 'schedule_read' => 'Предоставляет пользователю разрешение на просмотр расписаний для сервера.', + 'schedule_update' => 'Позволяет пользователю вносить изменения в существующее расписание сервера.', + 'schedule_delete' => 'Позволяет пользователю удалять расписание для сервера.', + ], +]; diff --git a/lang/ru/strings.php b/lang/ru/strings.php new file mode 100644 index 000000000..eecc08f7c --- /dev/null +++ b/lang/ru/strings.php @@ -0,0 +1,95 @@ + 'Почта', + 'email_address' => 'Почта', + 'user_identifier' => 'Имя пользователя или адрес эл. почты', + 'password' => 'Пароль', + 'new_password' => 'Новый пароль', + 'confirm_password' => 'Повторите пароль', + 'login' => 'Авторизация', + 'home' => 'Главная', + 'servers' => 'Серверы', + 'id' => 'ID', + 'name' => 'Имя', + 'node' => 'Узел', + 'connection' => 'Подключение', + 'memory' => 'Память', + 'cpu' => 'Процессор', + 'disk' => 'Диск', + 'status' => 'Статус', + 'search' => 'Поиск', + 'suspended' => 'Приостановлена', + 'account' => 'Учетная Запись', + 'security' => 'Безопасность', + 'ip' => 'IP-адрес', + 'last_activity' => 'Последняя активность', + 'revoke' => 'Отозвать', + '2fa_token' => 'Токен аутентификации', + 'submit' => 'Подтвердить', + 'close' => 'Закрыть', + 'settings' => 'Настройки', + 'configuration' => 'Конфигурация', + 'sftp' => 'SFTP', + 'databases' => 'Базы данных', + 'memo' => 'Заметка', + 'created' => 'Создан', + 'expires' => 'Истекает', + 'public_key' => 'Токен', + 'api_access' => 'Api Доступ', + 'never' => 'никогда', + 'sign_out' => 'Выйти', + 'admin_control' => 'Панель администратора', + 'required' => 'Обязательно', + 'port' => 'Порт', + 'username' => 'Имя пользователя', + 'database' => 'База данных', + 'new' => 'Создать', + 'danger' => 'Важно!', + 'create' => 'Создать', + 'select_all' => 'Выбрать всё', + 'select_none' => 'Ни один из предложенных', + 'alias' => 'Псевдоним', + 'primary' => 'Основной', + 'make_primary' => 'Сделать основным', + 'none' => 'Ничего', + 'cancel' => 'Отменить', + 'created_at' => 'Создан', + 'action' => 'Действие', + 'data' => 'Данные', + 'queued' => 'В очереди', + 'last_run' => 'Последний Запуск', + 'next_run' => 'Следующий Запуск', + 'not_run_yet' => 'Ещё Не Запущено', + 'yes' => 'Да', + 'no' => 'Нет', + 'delete' => 'Удалить', + '2fa' => '2FA', + 'logout' => 'Выйти', + 'admin_cp' => 'Панель администратора', + 'optional' => 'Необязательно', + 'read_only' => 'Только для чтения', + 'relation' => 'Отношение', + 'owner' => 'Владелец', + 'admin' => 'Администратор', + 'subuser' => 'Подпользователь', + 'captcha_invalid' => 'Проверка на робота не пройдена.', + 'tasks' => 'Задачи', + 'seconds' => 'Секунды', + 'minutes' => 'Минуты', + 'under_maintenance' => 'На Технических Работах', + 'days' => [ + 'sun' => 'Воскресенье', + 'mon' => 'Понедельник', + 'tues' => 'Вторник', + 'wed' => 'Среда', + 'thurs' => 'Четверг', + 'fri' => 'Пятница', + 'sat' => 'Суббота', + ], + 'last_used' => 'Последнее использование', + 'enable' => 'Включить', + 'disable' => 'Отключить', + 'save' => 'Сохранить', + 'copyright' => '® 2024 - :year Pelican | При поддержке PM-Kirill', +]; diff --git a/lang/ru/validation.php b/lang/ru/validation.php new file mode 100644 index 000000000..dae981ccf --- /dev/null +++ b/lang/ru/validation.php @@ -0,0 +1,106 @@ + 'Необходимо принять :attribute.', + 'active_url' => ':attribute не является верной ссылкой.', + 'after' => 'В поле :attribute должна быть дата после :date.', + 'after_or_equal' => 'Атрибут: должен быть датой после или равен дате.', + 'alpha' => ':attribute может содержать только буквы.', + 'alpha_dash' => 'Атрибут: может содержать только буквы, цифры и тире.', + 'alpha_num' => ':attribute может содержать только буквы и цифры.', + 'array' => ':attribute должен быть списком.', + 'before' => ':attribute должен быть датой до :date.', + 'before_or_equal' => 'В поле :attribute должна быть дата до или равняться :date.', + 'between' => [ + 'numeric' => ':attribute должен быть между :min и :max.', + 'file' => ':attribute должен быть от :min до :max килобайт.', + 'string' => ':attribute должен содержать :min - :max символов.', + 'array' => ':attribute должен содержать от :min и до :max.', + ], + 'boolean' => ':attribute должен иметь значение true или false.', + 'confirmed' => ':attribute подтверждение не совпадает.', + 'date' => ':attribute не является верной датой.', + 'date_format' => 'Атрибут: не соответствует формату: формат.', + 'different' => ':attribute и :other должны быть разными.', + 'digits' => ':attribute должен содержать :digits цифр.', + 'digits_between' => ':attribute должен быть между :min и :max цифр.', + 'dimensions' => 'Поле :attribute имеет недопустимые размеры изображения.', + 'distinct' => 'Поле :attribute содержит повторяющееся значение.', + 'email' => 'Значение :attribute должно быть действительным адресом электронной почты.', + 'exists' => 'Выбранный :attribute неправильный.', + 'file' => ':attribute должен быть файлом.', + 'filled' => 'Поле :attribute обязательно', + 'image' => ':attribute должен быть изображением.', + 'in' => 'Выбранный :attribute неправильный.', + 'in_array' => 'Поле :attribute не существует в :other.', + 'integer' => ':attribute должен быть целым числом.', + 'ip' => ':attribute должно быть IP-адресом.', + 'json' => 'Значение :attribute должно быть допустимой строкой JSON.', + 'max' => [ + 'numeric' => ':attribute не может быть больше чем :max.', + 'file' => ':attribute не может быть больше чем :max килобайт.', + 'string' => 'Количество символов в поле :attribute не может превышать :max.', + 'array' => ':attribute не должен содержать больше :max пунктов.', + ], + 'mimes' => ':attribute тип файла должен быть: :values.', + 'mimetypes' => ':attribute тип файла должен быть: :values.', + 'min' => [ + 'numeric' => ':attribute должен быть как минимум :min.', + 'file' => ':attribute должен быть как минимум :min килобайтов.', + 'string' => ':attribute должен быть не менее :min символов.', + 'array' => ':attribute должен быть как минимум :min пунктов.', + ], + 'not_in' => 'Выбранный :attribute неправильный.', + 'numeric' => 'Атрибут : должен быть числом.', + 'present' => ':attribute должно присутствовать.', + 'regex' => 'Выбранный формат для :attribute ошибочный.', + 'required' => 'Поле :attribute обязательно', + 'required_if' => 'Поле :attribute обязательно для заполнения, когда :other равно :value.', + 'required_unless' => 'Поле :attribute обязательно для заполнения, когда :other не равно :values.', + 'required_with' => 'Значение :attribute обязательно, когда все из следующих значений :values существуют.', + 'required_with_all' => 'Значение :attribute обязательно, когда все из следующих значений :values существуют.', + 'required_without' => ':attribute обязательное поле, когда отсутствует :values.', + 'required_without_all' => 'Поле :attribute обязателен, если ни одно из :values не присутствует.', + 'same' => 'Значение :attribute должно совпадать с :other.', + 'size' => [ + 'numeric' => 'Атрибут: должен быть: размер.', + 'file' => 'Поле :attribute должно быть размером в :size килобайт', + 'string' => 'Значение :attribute должно быть :size символов.', + 'array' => ':attribute должен содержать :size пунктов.', + ], + 'string' => ':attribute должен быть строкой.', + 'timezone' => ':attribute должно быть корректным часовым поясом.', + 'unique' => 'Такое значение поля :attribute уже существует.', + 'uploaded' => 'Не удалось загрузить :attribute.', + 'url' => 'Выбранный формат для :attribute ошибочный.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => 'переменная :env', + 'invalid_password' => 'Введенный пароль недействителен для этой учетной записи.', + ], +]; diff --git a/lang/sk/activity.php b/lang/sk/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/sk/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/sk/admin/eggs.php b/lang/sk/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/sk/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/sk/admin/node.php b/lang/sk/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/sk/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/sk/admin/server.php b/lang/sk/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/sk/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/sk/admin/user.php b/lang/sk/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/sk/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/sk/auth.php b/lang/sk/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/sk/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/sk/command/messages.php b/lang/sk/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/sk/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/sk/dashboard/account.php b/lang/sk/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/sk/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/sk/dashboard/index.php b/lang/sk/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/sk/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/sk/exceptions.php b/lang/sk/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/sk/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/sk/pagination.php b/lang/sk/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/sk/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/sk/passwords.php b/lang/sk/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/sk/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/sk/server/users.php b/lang/sk/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/sk/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/sk/strings.php b/lang/sk/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/sk/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/sk/validation.php b/lang/sk/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/sk/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/sl/activity.php b/lang/sl/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/sl/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/sl/admin/eggs.php b/lang/sl/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/sl/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/sl/admin/node.php b/lang/sl/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/sl/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/sl/admin/server.php b/lang/sl/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/sl/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/sl/admin/user.php b/lang/sl/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/sl/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/sl/auth.php b/lang/sl/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/sl/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/sl/command/messages.php b/lang/sl/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/sl/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/sl/dashboard/account.php b/lang/sl/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/sl/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/sl/dashboard/index.php b/lang/sl/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/sl/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/sl/exceptions.php b/lang/sl/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/sl/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/sl/pagination.php b/lang/sl/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/sl/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/sl/passwords.php b/lang/sl/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/sl/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/sl/server/users.php b/lang/sl/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/sl/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/sl/strings.php b/lang/sl/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/sl/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/sl/validation.php b/lang/sl/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/sl/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/sr/activity.php b/lang/sr/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/sr/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/sr/admin/eggs.php b/lang/sr/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/sr/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/sr/admin/node.php b/lang/sr/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/sr/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/sr/admin/server.php b/lang/sr/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/sr/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/sr/admin/user.php b/lang/sr/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/sr/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/sr/auth.php b/lang/sr/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/sr/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/sr/command/messages.php b/lang/sr/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/sr/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/sr/dashboard/account.php b/lang/sr/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/sr/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/sr/dashboard/index.php b/lang/sr/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/sr/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/sr/exceptions.php b/lang/sr/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/sr/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/sr/pagination.php b/lang/sr/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/sr/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/sr/passwords.php b/lang/sr/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/sr/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/sr/server/users.php b/lang/sr/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/sr/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/sr/strings.php b/lang/sr/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/sr/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/sr/validation.php b/lang/sr/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/sr/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/sv/activity.php b/lang/sv/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/sv/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/sv/admin/eggs.php b/lang/sv/admin/eggs.php new file mode 100644 index 000000000..a6912c819 --- /dev/null +++ b/lang/sv/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Lyckades importera detta ägg och dess associerade variabler.', + 'updated_via_import' => 'Detta ägg har uppdaterats med den fil som tillhandahållits.', + 'deleted' => 'Lyckades radera det begärda ägget från panelen.', + 'updated' => 'Äggkonfigurationen har uppdaterats framgångsrikt.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/sv/admin/node.php b/lang/sv/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/sv/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/sv/admin/server.php b/lang/sv/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/sv/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/sv/admin/user.php b/lang/sv/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/sv/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/sv/auth.php b/lang/sv/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/sv/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/sv/command/messages.php b/lang/sv/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/sv/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/sv/dashboard/account.php b/lang/sv/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/sv/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/sv/dashboard/index.php b/lang/sv/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/sv/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/sv/exceptions.php b/lang/sv/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/sv/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/sv/pagination.php b/lang/sv/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/sv/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/sv/passwords.php b/lang/sv/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/sv/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/sv/server/users.php b/lang/sv/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/sv/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/sv/strings.php b/lang/sv/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/sv/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/sv/validation.php b/lang/sv/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/sv/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/tr/activity.php b/lang/tr/activity.php new file mode 100644 index 000000000..ac266eae2 --- /dev/null +++ b/lang/tr/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Giriş yapılamadı', + 'success' => 'Giriş yapıldı', + 'password-reset' => 'Şifre sıfırlama', + 'reset-password' => 'Şifre sıfırlama istendi', + 'checkpoint' => 'İki faktörlü kimlik doğrulama istendi', + 'recovery-token' => 'İki faktörlü kurtarma tokeni kullanıldı', + 'token' => 'İki faktörlü doğrulama çözüldü', + 'ip-blocked' => ':identifier olarak listelenmemiş IP adresinden gelen istek engellendi', + 'sftp' => [ + 'fail' => 'SFTP girişi yapılamadı', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Email :old yerine :new ile değiştirildi', + 'password-changed' => 'Şifre değiştirildi', + ], + 'api-key' => [ + 'create' => 'API anahtarı :fingerprint hesaba eklendi', + 'delete' => 'API anahtarı :identifier kaldırıldı', + ], + 'ssh-key' => [ + 'create' => 'SSH anahtarı :fingerprint hesaba eklendi', + 'delete' => 'SSH anahtarı :fingerprint kaldırıldı', + ], + 'two-factor' => [ + 'create' => 'İki Adımlı Doğrulama etkinleştirildi', + 'delete' => 'İki Adımlı Doğrulama devre dışı bırakıldı', + ], + ], + 'server' => [ + 'reinstall' => 'Sunucu yeniden kuruldu', + 'console' => [ + 'command' => 'Sunucuda :command komutu çalıştırıldı', + ], + 'power' => [ + 'start' => 'Sunucu başlatıldı', + 'stop' => 'Sunucu durduruldu', + 'restart' => 'Sunucu yeniden başlatıldı', + 'kill' => 'Sunucu zorla kapatıldı', + ], + 'backup' => [ + 'download' => 'Yedek :name indirildi', + 'delete' => 'Yedek :name silindi', + 'restore' => 'Yedek :name yüklendi (silinen dosyalar: :truncate)', + 'restore-complete' => ':name adlı yedeğin yüklenmesi sona erdi', + 'restore-failed' => ':name adlı yedeğin yüklenmesi başarısız oldu', + 'start' => 'Yeni yedek :name başlatıldı', + 'complete' => ':name yedeği başarılı olarak kaydedildi', + 'fail' => ':name yedeklemesi başarısız olarak işaretlendi', + 'lock' => ':name yedeği kilitlendi', + 'unlock' => ':name yedeklemesinin kilidi açıldı', + ], + 'database' => [ + 'create' => ':name veritabanı oluşturuldu', + 'rotate-password' => ':name veritabanı için şifre değiştirildi', + 'delete' => ':name veritabanı silindi', + ], + 'file' => [ + 'compress_one' => ':directory:file sıkıştırıldı', + 'compress_other' => ':directory \'deki :count dosya sıkıştırıldı', + 'read' => ':files. dosyasının içeriği gösterildi', + 'copy' => ':file belgenin kopyası oluşturuldu', + 'create-directory' => ':directory:name klasör oluşturuldu.', + 'decompress' => ':files dosyası :directory içinde çıkartıldı', + 'delete_one' => ':directory:files.0 silindi', + 'delete_other' => ':directory klasöründe :count belge silindi', + 'download' => ':file indirildi', + 'pull' => ':directory klasörüne :url bağlantısından dosya indirildi', + 'rename_one' => ':directory:files.0.from :directory:files.0.to olarak yeniden adlandırıldı', + 'rename_other' => ':directory klasöründe :count dosyanın adı değiştirildi', + 'write' => ':file dosyasına yeni içerik eklendi', + 'upload' => 'Dosya yüklemesi başlatıldı', + 'uploaded' => ':directory:file yüklendi', + ], + 'sftp' => [ + 'denied' => 'SFTP erişimi izinler yüzünden engellendi', + 'create_one' => ':files.0 oluşturuldu', + 'create_other' => ':count belge oluşturuldu', + 'write_one' => ':files.0 dosyasının içeriği değiştirildi', + 'write_other' => ':count dosyanın içeriği değiştirildi', + 'delete_one' => ':files.0 silindi', + 'delete_other' => ':count dosya silindi', + 'create-directory_one' => ':files.0 klasörü oluşturuldu', + 'create-directory_other' => ':count klasör oluşturuldu', + 'rename_one' => ':directory:files.0.from :directory:files.0.to olarak yeniden adlandırıldı', + 'rename_other' => ':count belge yeniden isimlendirildi veya taşındı', + ], + 'allocation' => [ + 'create' => ':allocation lokasyonuna sunucu eklendi', + 'notes' => ':allocation notları ":old" yerine ":new" olarak güncellendi', + 'primary' => ':allocation birincil sunucu lokasyonu seçildi', + 'delete' => ':allocation lokasyonu silindi', + ], + 'schedule' => [ + 'create' => ':name programı oluşturuldu', + 'update' => ':name programı güncellendi', + 'execute' => ':name zamanlaması manuel olarak yürütüldü', + 'delete' => ':name programı silindi', + ], + 'task' => [ + 'create' => ':name planı için yeni bir ":action" görevi oluşturuldu', + 'update' => ':name zamanlaması için ":action" görevi güncellendi', + 'delete' => ':name planı için bir görev silindi', + ], + 'settings' => [ + 'rename' => 'Sunucunun adı :old\'den :new olarak değiştirildi', + 'description' => 'Sunucu açıklamasını :old yerine :new olarak değiştirdik', + ], + 'startup' => [ + 'edit' => ':variable değişkeni ":old" yerine ":new" olarak değiştirildi', + 'image' => 'Sunucunun Docker Görüntüsü :old\'den :new\'ye güncellendi', + ], + 'subuser' => [ + 'create' => 'Alt kullanıcı olarak :email eklendi', + 'update' => ':email için alt kullanıcı izinleri güncellendi', + 'delete' => ':email kullanıcısı silindi', + ], + ], +]; diff --git a/lang/tr/admin/eggs.php b/lang/tr/admin/eggs.php new file mode 100644 index 000000000..f2a1f8421 --- /dev/null +++ b/lang/tr/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Bu Egg ve ilişkili değişkenleri başarıyla içe aktarıldı.', + 'updated_via_import' => 'Bu Egg sağlanan dosya kullanılarak güncellendi.', + 'deleted' => 'İstenen Egg panelden başarıyla silindi.', + 'updated' => 'Egg konfigürasyonu başarıyla güncellendi.', + 'script_updated' => 'Egg kurulum scripti güncellendi ve sunucular kurulduğunda çalıştırılacaktır..', + 'egg_created' => 'Yeni bir Egg başarıyla eklendi. Bu yeni Egg\'i uygulamak için çalışan tüm arka plan programlarını yeniden başlatmanız gerekecek.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => '":variable" değişkeni silindi ve yeniden oluşturulduktan sonra artık sunucular tarafından kullanılamayacak.', + 'variable_updated' => '":variable" değişkeni güncellendi. Değişiklikleri uygulamak için bu değişkeni kullanarak tüm sunucuları yeniden oluşturmanız gerekecektir.', + 'variable_created' => 'Yeni değişken başarıyla oluşturuldu ve bu Egg atandı.', + ], + ], +]; diff --git a/lang/tr/admin/node.php b/lang/tr/admin/node.php new file mode 100644 index 000000000..bbefba956 --- /dev/null +++ b/lang/tr/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'Sağlanan FQDN veya IP adresi geçerli bir IP adresine çözümlenmiyor.', + 'fqdn_required_for_ssl' => 'Bu düğüm için SSL kullanmak amacıyla genel bir IP adresine çözümlenen tam nitelikli bir alan adı gereklidir.', + ], + 'notices' => [ + 'allocations_added' => 'Tahsisler bu node\'a başarıyla eklendi.', + 'node_deleted' => 'Node başarılı şekilde kaldırıldı.', + 'node_created' => 'Yeni node başarıyla oluşturuldu. \'Yapılandırma\' sekmesini ziyaret ederek bu makinedeki arka plan programını otomatik olarak yapılandırabilirsiniz. Herhangi bir sunucu ekleyebilmeniz için öncelikle en az bir IP adresi ve bağlantı noktası ayırmanız gerekir.', + 'node_updated' => 'Node bilgileri güncellendi. Herhangi bir daemon ayarı değiştirildiyse, bu değişikliklerin etkili olması için onu yeniden başlatmanız gerekecektir.', + 'unallocated_deleted' => ':ip için ayrılmamış tüm portlar silindi.', + ], +]; diff --git a/lang/tr/admin/server.php b/lang/tr/admin/server.php new file mode 100644 index 000000000..70082a56f --- /dev/null +++ b/lang/tr/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'Bu sunucunun varsayılan lokasyonunu silmeye çalışıyorsunuz ancak kullanılacak bir yedek lokasyon yok.', + 'marked_as_failed' => 'Bu sunucu önceki yüklemede başarısız olarak işaretlendi. Bu durumda mevcut durum değiştirilemez.', + 'bad_variable' => ':name değişkeninde bir hata oluştu.', + 'daemon_exception' => 'Arka plan programıyla iletişim kurmaya çalışırken bir HTTP/:code yanıt koduyla sonuçlanan bir hata oluştu. Bu haya günlüğe kaydedildi. (istek kimliği: :request_id)', + 'default_allocation_not_found' => 'İstenen varsayılan tahsis, bu sunucunun tahsislerinde bulunamadı.', + ], + 'alerts' => [ + 'startup_changed' => 'Bu sunucunun başlangıç yapılandırması güncellendi. Bu sunucunun Egg\'i değiştirildiyse şimdi yeniden yükleme gerçekleştirilecek.', + 'server_deleted' => 'Sunucu sistemden başarıyla silindi.', + 'server_created' => 'Sunucu panelde başarıyla oluşturuldu. Lütfen arka plan programının bu sunucuyu tamamen kurması için birkaç dakika bekleyin.', + 'build_updated' => 'Bu sunucunun yapı ayrıntıları güncellendi. Bazı değişikliklerin geçerli olması için yeniden başlatma gerekebilir.', + 'suspension_toggled' => 'Sunucunun askıya alınma durumu :status olarak değiştirildi.', + 'rebuild_on_boot' => 'Bu sunucu, Docker Container\'ın yeniden oluşturulmasını gerektiriyor olarak işaretlendi. Bu, sunucunun bir sonraki başlatılışında gerçekleşecektir.', + 'install_toggled' => 'Bu sunucunun kurulum durumu değiştirildi.', + 'server_reinstalled' => 'Bu sunucu şu andan itibaren yeniden kurulum için sıraya alındı.', + 'details_updated' => 'Sunucu ayrıntıları başarıyla güncellendi.', + 'docker_image_updated' => 'Bu sunucu için kullanılacak varsayılan Docker görüntüsü başarıyla değiştirildi. Bu değişikliğin uygulanması için yeniden başlatma gereklidir.', + 'node_required' => 'Bu panele sunucu ekleyebilmeniz için en az bir node yapılandırılmış olması gerekir.', + 'transfer_nodes_required' => 'Sunucuları aktarabilmeniz için en az iki node yapılandırılmış olması gerekir.', + 'transfer_started' => 'Sunucu transferi başlatılmıştır.', + 'transfer_not_viable' => 'Seçtiğiniz node, bu sunucuyu barındırmak için gerekli disk alanına veya belleğe sahip değil.', + ], +]; diff --git a/lang/tr/admin/user.php b/lang/tr/admin/user.php new file mode 100644 index 000000000..136953fd1 --- /dev/null +++ b/lang/tr/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Hesabına bağlı sunucular bulunuyor. Devam etmeden önce lütfen sunucularını silin', + 'user_is_self' => 'Kendi kullanıcı hesabınızı silemezsiniz.', + ], + 'notices' => [ + 'account_created' => 'Hesap başarıyla oluşturuldu.', + 'account_updated' => 'Hesap başarıyla güncellendi.', + ], +]; diff --git a/lang/tr/auth.php b/lang/tr/auth.php new file mode 100644 index 000000000..071a2171e --- /dev/null +++ b/lang/tr/auth.php @@ -0,0 +1,27 @@ + 'Giriş Yap', + 'go_to_login' => 'Oturum açmaya gidin', + 'failed' => 'Bu kimlik bilgileriyle eşleşen hesap bulunamadı.', + + 'forgot_password' => [ + 'label' => 'Şifremi Unuttum', + 'label_help' => 'Şifrenizi sıfırlama talimatlarını almak için e-posta adresinizi giriniz.', + 'button' => 'Hesap kurtarma', + ], + + 'reset_password' => [ + 'button' => 'Sıfırla ve Oturum Aç', + ], + + 'two_factor' => [ + 'label' => 'İki Faktörlü Doğrulama Tokeni', + 'label_help' => 'Bu hesabın devam edebilmesi için ikinci bir kimlik doğrulama katmanı gerekiyor. Bu girişi tamamlamak için lütfen cihazınız tarafından oluşturulan kodu girin.', + 'checkpoint_failed' => 'İki faktörlü kimlik doğrulama jetonu geçersiz.', + ], + + 'throttle' => 'Çok fazla hatalı giriş yaptınız. Lütfen :seconds saniye sonra tekrar deneyiniz.', + 'password_requirements' => 'Şifre en az 8 karakter uzunluğunda olmalı.', + '2fa_must_be_enabled' => 'Yönetici, Paneli kullanabilmeniz için hesabınızda 2 Faktörlü Kimlik Doğrulamanın etkinleştirilmesini zorunlu kılmıştır.', +]; diff --git a/lang/tr/command/messages.php b/lang/tr/command/messages.php new file mode 100644 index 000000000..90597de22 --- /dev/null +++ b/lang/tr/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Lütfen Kullanıcı Adı, Kullancı ID veya E-posta girin', + 'select_search_user' => 'Silinecek kullanıcının ID\'si (Yeniden aramak için \'0\' girin', + 'deleted' => 'Kullanıcı başarılı şekilde Panelden silindi.', + 'confirm_delete' => 'Bu kullanıcıyı Panelden silmek istediğinizden emin misiniz?', + 'no_users_found' => 'Arama kayıtlarına göre kullanıcı bulunamadı.', + 'multiple_found' => 'Bulunan kullanıcı için birden fazla hesap bulundu; --no-interaction işareti nedeniyle bir kullanıcı silinemedi.', + 'ask_admin' => 'Kullanıcı yönetici olarak mı eklensin?', + 'ask_email' => 'E-Posta', + 'ask_username' => 'Kullanıcı Adı', + 'ask_name_first' => 'Adı', + 'ask_name_last' => 'Soyadı', + 'ask_password' => 'Parola', + 'ask_password_tip' => 'Kullanıcıya e-postayla gönderilen rastgele bir parolayla bir hesap oluşturmak istiyorsanız, bu komutu (CTRL+C) yeniden çalıştırın ve "--no-password" işaretini iletin.', + 'ask_password_help' => 'Şifreler en az 8 karakter uzunluğunda olmalı ve en az bir büyük harf ve rakam içermelidir.', + '2fa_help_text' => [ + 'Bu komut, eğer etkinleştirilmişse, kullanıcı hesabı için 2 faktörlü kimlik doğrulamayı devre dışı bırakacaktır. Bu yalnızca kullanıcının hesabının kilitlenmesi durumunda hesap kurtarma komutu olarak kullanılmalıdır.', + 'Yapmak istediğiniz bu değilse CTRL+C tuşlarına basarak bu işlemden çıkın.', + ], + '2fa_disabled' => ':email kullanıcısına ait iki adımlı doğrulama devredışı bırakıldı.', + ], + 'schedule' => [ + 'output_line' => '`:schedule` (:hash) içindeki ilk görev için iş gönderiliyor.', + ], + 'maintenance' => [ + 'deleting_service_backup' => ':file adlı servis yedeği silindi.', + ], + 'server' => [ + 'rebuild_failed' => '":node" düğümünde ":name" (#:id) için yeniden oluşturma isteği şu hatayla başarısız oldu: :message', + 'reinstall' => [ + 'failed' => '":name" (#:id) için ":node" düğümüne yeniden yükleme isteği hatayla başarısız oldu: :message', + 'confirm' => 'Bir grup sunucuya yeniden kurulum yapmak üzeresiniz. Devam etmek istiyor musunuz?', + ], + 'power' => [ + 'confirm' => ':count sunucularına karşı bir :action gerçekleştirmek üzeresiniz. Devam etmek ister misiniz?', + 'action_failed' => '":node" düğümündeki ":name" (#:id) için güç eylemi isteği şu hatayla başarısız oldu: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Sağlayıcı (örn. smtp.google.com)', + 'ask_smtp_port' => 'SMTP Portu', + 'ask_smtp_username' => 'SMTP Kullanıcı Adı', + 'ask_smtp_password' => 'SMTP Parolası', + 'ask_mailgun_domain' => 'Mailgun Sunucusu', + 'ask_mailgun_endpoint' => 'Mailgun Uçnoktası', + 'ask_mailgun_secret' => 'Mailgun Gizli Anahtarı', + 'ask_mandrill_secret' => 'Mandrill Gizli Anahtar', + 'ask_postmark_username' => 'Postmark API Anahtarı', + 'ask_driver' => 'Hangi servis ile E-Posta gönderilsin?', + 'ask_mail_from' => 'E-posta adresi e-postaları şu kaynaktan gelmelidir:', + 'ask_mail_name' => 'E-postalarda görünecek ad', + 'ask_encryption' => 'Kullanılacak şifreleme yöntemi', + ], + ], +]; diff --git a/lang/tr/dashboard/account.php b/lang/tr/dashboard/account.php new file mode 100644 index 000000000..ae612ff6f --- /dev/null +++ b/lang/tr/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'E-Postanı güncelle', + 'updated' => 'E-Posta adresin güncellendi.', + ], + 'password' => [ + 'title' => 'Parolanı değiştir.', + 'requirements' => 'Yeni parolan 8 karakterden az olamaz.', + 'updated' => 'Parolan güncellendi.', + ], + 'two_factor' => [ + 'button' => 'İki faktörlü doğrulamayı yapılandır.', + 'disabled' => 'Hesabınızda iki faktörlü kimlik doğrulama devre dışı bırakıldı. Artık oturum açarken bir jeton sağlamanız istenmeyecek.', + 'enabled' => 'Hesabınızda iki faktörlü kimlik doğrulama etkinleştirildi! Artık giriş yaparken cihazınız tarafından oluşturulan kodu girmeniz istenecektir.', + 'invalid' => 'Sağlanan token geçersiz.', + 'setup' => [ + 'title' => 'İki faktörlü doğrulamayı kur', + 'help' => 'Kodu tarayamıyor musunuz? Aşağıdaki kodu :application girin', + 'field' => 'Token gir', + ], + 'disable' => [ + 'title' => 'İki faktörlü kimlik doğrulamayı devre dışı bırak', + 'field' => 'Token gir', + ], + ], +]; diff --git a/lang/tr/dashboard/index.php b/lang/tr/dashboard/index.php new file mode 100644 index 000000000..fe534ac7b --- /dev/null +++ b/lang/tr/dashboard/index.php @@ -0,0 +1,8 @@ + 'Sunucu ara...', + 'no_matches' => 'Sağlanan arama kriterleriyle eşleşen sunucu bulunamadı.', + 'cpu_title' => 'İşlemci (CPU)', + 'memory_title' => 'Bellek (Ram)', +]; diff --git a/lang/tr/exceptions.php b/lang/tr/exceptions.php new file mode 100644 index 000000000..cdf44c089 --- /dev/null +++ b/lang/tr/exceptions.php @@ -0,0 +1,55 @@ + 'Arka plan programıyla iletişim kurmaya çalışırken bir HTTP/:code yanıt koduyla sonuçlanan bir hata oluştu. Bu hata günlüğe kaydedildi.', + 'node' => [ + 'servers_attached' => 'Bir node\'un silinebilmesi için kendisine bağlı hiçbir sunucunun olmaması gerekir.', + 'daemon_off_config_updated' => 'Daemon yapılandırması güncellendi, ancak Daemon\'daki yapılandırma dosyası otomatik olarak güncellenmeye çalışılırken bir hatayla karşılaşıldı. Bu değişiklikleri uygulamak için arka plan programının yapılandırma dosyasını (config.yml) manuel olarak güncellemeniz gerekecektir.', + ], + 'allocations' => [ + 'server_using' => 'Şu anda bu lokasyon bir sunucu atanmış. Bir lokasyon yalnızca şu anda hiçbir sunucu atanmamışsa silinebilir.', + 'too_many_ports' => 'Tek bir aralığa 1000\'den fazla port (Bağlantı noktası) aynı anda eklenmesi desteklenmez.', + 'invalid_mapping' => ':port için sağlanan eşleme geçersizdi ve uyhulanmadı.', + 'cidr_out_of_range' => 'CIDR gösterimi yalnızca /25 ile /32 arasındaki maskelere izin verir.', + 'port_out_of_range' => 'Bir tahsisteki bağlantı noktaları 1024\'ten büyük ve 65535\'ten küçük veya ona eşit olmalıdır.', + ], + 'egg' => [ + 'delete_has_servers' => 'Aktif sunucuların bağlı olduğu bir Node Panelden silinemez.', + 'invalid_copy_id' => 'Bir komut dosyasını kopyalamak için seçilen Node mevcut değil veya bir komut dosyasının kendisini kopyalıyor.', + 'has_children' => 'Bu Node bir veya daha fazla Node\'un ebeveynidir. Lütfen bu Node\'u silmeden önce bu Yumurtaları silin.', + ], + 'variables' => [ + 'env_not_unique' => ':name ortam değişkeni bu Egg\'e özgü olmalıdır.', + 'reserved_name' => 'Ortam değişkeni :name korunur ve bir değişkene atanamaz.', + 'bad_validation_rule' => 'Doğrulama kuralı ":rule" bu uygulama için geçerli bir kural değil.', + ], + 'importer' => [ + 'json_error' => 'JSON dosyası ayrıştırılmaya çalışılırken bir hata oluştu: :error.', + 'file_error' => 'Sağlanan JSON dosyası geçerli değildi.', + 'invalid_json_provided' => 'Sağlanan JSON dosyası tanınabilecek bir formatta değil.', + ], + 'subusers' => [ + 'editing_self' => 'Kendi alt kullanıcı hesabınızı düzenlemenize izin verilmez.', + 'user_is_owner' => 'Sunucu sahibini bu sunucu için alt kullanıcı olarak ekleyemezsiniz.', + 'subuser_exists' => 'Bu e-posta adresine sahip bir kullanıcı zaten bu sunucu için bir alt kullanıcı olarak atanmış.', + ], + 'databases' => [ + 'delete_has_databases' => 'Kendisine bağlı etkin veritabanları bulunan bir veritabanı ana bilgisayar sunucusu silinemez.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'Zincirleme bir görev için maksimum aralık süresi 15 dakikadır.', + ], + 'locations' => [ + 'has_nodes' => 'Etkin nodeların eklendiği konum silinemez.', + ], + 'users' => [ + 'node_revocation_failed' => 'Node #:node\'daki anahtarlar iptal edilemedi. :hata', + ], + 'deployment' => [ + 'no_viable_nodes' => 'Otomatik dağıtım için belirtilen gereksinimleri karşılayan node bulunamadı.', + 'no_viable_allocations' => 'Otomatik dağıtım gereksinimlerini karşılayan hiçbir ayırma bulunamadı.', + ], + 'api' => [ + 'resource_not_found' => 'İstenen kaynak bu sunucuda mevcut değil.', + ], +]; diff --git a/lang/tr/pagination.php b/lang/tr/pagination.php new file mode 100644 index 000000000..c94aeea85 --- /dev/null +++ b/lang/tr/pagination.php @@ -0,0 +1,17 @@ + '« Önceki', + 'next' => 'Sonraki »', +]; diff --git a/lang/tr/passwords.php b/lang/tr/passwords.php new file mode 100644 index 000000000..7c38d42f5 --- /dev/null +++ b/lang/tr/passwords.php @@ -0,0 +1,19 @@ + 'Şifreniz en az altı karakterden oluşmalı ve şifre doğrulaması ile eşleşmelidir.', + 'reset' => 'Parolanız sıfırlandı!', + 'sent' => 'Parola sıfırlama bağlantısı eposta adresinize yollandı!', + 'token' => 'Parola sıfırlama kodu geçersiz.', + 'user' => 'Bu e-posta adresine sahip bir kullanıcı bulunamadı.', +]; diff --git a/lang/tr/server/users.php b/lang/tr/server/users.php new file mode 100644 index 000000000..b2622149e --- /dev/null +++ b/lang/tr/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Bu sunucunun web soketine erişime izin verir.', + 'control_console' => 'Kullanıcıya sunucu konsoluna veri gönderme izni verir.', + 'control_start' => 'Kullanıcıya sunucu örneğini başlatma izni verir.', + 'control_stop' => 'Kullanıcıya sunucu örneğini durdurma izni verir.', + 'control_restart' => 'Kullanıcıya sunucu örneğini yeniden başlatma izni verir.', + 'control_kill' => 'Kullanıcıya sunucu örneğini sonlandırma izni verir.', + 'user_create' => 'Kullanıcıya sunucu için yeni kullanıcı hesapları oluşturma izni verir.', + 'user_read' => 'Kullanıcıya, bu sunucuyla ilişkili kullanıcıları görüntüleme izni verir.', + 'user_update' => 'Kullanıcıya bu sunucuyla ilişkili diğer kullanıcıları değiştirme izni verir', + 'user_delete' => 'Kullanıcıya bu sunucuyla ilişkili diğer kullanıcıları silme izni verir.', + 'file_create' => 'Kullanıcıya yeni dosyalar ve dizinler oluşturma izni verir.', + 'file_read' => 'Kullanıcıya bu sunucu örneği ile ilişkilendirilmiş dosya ve klasörleri görmesine ve içeriklerini görüntülemesine izin verir.', + 'file_update' => 'Kullanıcıya sunucu ile ilişkilendirilmiş dosyaları ve klasörleri güncelleme izni verir.', + 'file_delete' => 'Kullanıcıya dosyaları ve dizinleri silme izni verir.', + 'file_archive' => 'Kullanıcının dosya arşivleri oluşturmasına ve arşivden çıkartmasına izin verir.', + 'file_sftp' => 'Kullanıcının SFTP kullanarak dosyalarda işlem yapmasına izin verir.', + 'allocation_read' => 'Sunucu tahsis yönetim sayfalarına erişim izni verir.', + 'allocation_update' => 'Kullanıcıya sunucunun tahsislerine değişiklik yapma izni verir.', + 'database_create' => 'Kullanıcının yeni veritabanı oluşturmasına izin verir.', + 'database_read' => 'Kullanıcının veritabanlarını görmesine izin verir.', + 'database_update' => 'Kullanıcının veritabanında düzenlemeler yapmasına izin verir. Eğer kullanıcının veritabanı şifresini görüntüleme izni yok ise şifreyi düzenleyemez.', + 'database_delete' => 'Kullanıcının veritabanı silmesine izin verir.', + 'database_view_password' => 'Kullanıcının veritabanı şifresini görmesine izin verir.', + 'schedule_create' => 'Kullanıcı yeni zamanlı görevler oluşturmasına izin verir.', + 'schedule_read' => 'Kullanıcının zamanlı görevleri görmesine izin verir.', + 'schedule_update' => 'Kullanıcının var olan zamanlı görevde düzenleme yapmasına izin verir.', + 'schedule_delete' => 'Kullanıcının sunucu için bir zamanlı görevi silmesine izin verir.', + ], +]; diff --git a/lang/tr/strings.php b/lang/tr/strings.php new file mode 100644 index 000000000..d148ba59c --- /dev/null +++ b/lang/tr/strings.php @@ -0,0 +1,95 @@ + 'E-Posta', + 'email_address' => 'E-Posta adresi', + 'user_identifier' => 'Kullanıcı adı veya E-Posta', + 'password' => 'Parola', + 'new_password' => 'Yeni parola', + 'confirm_password' => 'Yeni parolayı doğrula', + 'login' => 'Giriş Yap', + 'home' => 'Ana Sayfa', + 'servers' => 'Sunucular', + 'id' => 'ID', + 'name' => 'Ad', + 'node' => 'Node', + 'connection' => 'Bağlantı', + 'memory' => 'Ram', + 'cpu' => 'CPU', + 'disk' => 'Depolama', + 'status' => 'Durum', + 'search' => 'Ara', + 'suspended' => 'Askıya alındı', + 'account' => 'Hesap', + 'security' => 'Güvenlik', + 'ip' => 'IP Adresi', + 'last_activity' => 'Son Aktivite', + 'revoke' => 'İptal Et', + '2fa_token' => 'Giriş Token\'i', + 'submit' => 'Gönder', + 'close' => 'Kapat', + 'settings' => 'Ayarlar', + 'configuration' => 'Yapılandırma', + 'sftp' => 'SFTP', + 'databases' => 'Veritabanları', + 'memo' => 'Not', + 'created' => 'Oluşturuldu', + 'expires' => 'Bitiş süresi', + 'public_key' => 'Token', + 'api_access' => 'Api Erişimi', + 'never' => 'asla', + 'sign_out' => 'Çıkış Yap', + 'admin_control' => 'Yönetici Paneli', + 'required' => 'Gerekli', + 'port' => 'Bağlantı Noktası (port)', + 'username' => 'Kullanıcı Adı', + 'database' => 'Veritabanı', + 'new' => 'Yeni', + 'danger' => 'Tehlikeli', + 'create' => 'Oluştur', + 'select_all' => 'Tümünü Seç', + 'select_none' => 'Tümünü Kaldır', + 'alias' => 'Takma Ad', + 'primary' => 'Birincil', + 'make_primary' => 'Birincil Yap', + 'none' => 'Yok', + 'cancel' => 'İptal Et', + 'created_at' => 'Oluşturma Tarihi', + 'action' => 'Eylem', + 'data' => 'Veri', + 'queued' => 'Sıraya alındı', + 'last_run' => 'Son Çalıştırma', + 'next_run' => 'Sonraki Çalışma', + 'not_run_yet' => 'Henüz çalıştırılmadı', + 'yes' => 'Evet', + 'no' => 'Hayır', + 'delete' => 'Sil', + '2fa' => '2FA', + 'logout' => 'Çıkış yap', + 'admin_cp' => 'Yönetici Paneli', + 'optional' => 'İsteğe bağlı', + 'read_only' => 'Salt Okunur', + 'relation' => 'İlişki', + 'owner' => 'Sahibi', + 'admin' => 'Yönetici', + 'subuser' => 'Alt Kullanıcılar', + 'captcha_invalid' => 'Captcha doğrulaması geçersiz.', + 'tasks' => 'Görevler', + 'seconds' => 'Saniye', + 'minutes' => 'Dakika', + 'under_maintenance' => 'Bakımda', + 'days' => [ + 'sun' => 'Pazar', + 'mon' => 'Pazartesi', + 'tues' => 'Salı', + 'wed' => 'Çarşamba', + 'thurs' => 'Perşembe', + 'fri' => 'Cuma', + 'sat' => 'Cumartesi', + ], + 'last_used' => 'Son Kullanılan', + 'enable' => 'Aktif', + 'disable' => 'Kapalı', + 'save' => 'Kaydet', + 'copyright' => '® 2024 - :year Pelican / Çeviri : robbinnn(Berke)', +]; diff --git a/lang/tr/validation.php b/lang/tr/validation.php new file mode 100644 index 000000000..23bafe75b --- /dev/null +++ b/lang/tr/validation.php @@ -0,0 +1,106 @@ + ':attribute kabul edilmelidir.', + 'active_url' => ':attribute geçerli bir URL değil.', + 'after' => ':attribute şu tarihten :date sonra olmalı.', + 'after_or_equal' => ':attribute, :date tarihi ile aynı veya bundan sonraki bir tarih olmalıdır.', + 'alpha' => ':attribute sadece harf içerebilir.', + 'alpha_dash' => ':attribute sadece harf, sayı ve kısa çizgi içerebilir.', + 'alpha_num' => ':attribute sadece harf ve sayı içerebilir.', + 'array' => ':attribute bir dizi olmalıdır.', + 'before' => ':attribute, :date tarihinden önceki bir tarih olmalıdır.', + 'before_or_equal' => ':attribute, :date tarihi ile aynı veya sonraki bir tarih olmalıdır.', + 'between' => [ + 'numeric' => ':attribute, :min ve :max arasında olmalıdır.', + 'file' => ':attribute, :min ve :max kilobyte boyutları arasında olmalıdır.', + 'string' => ':attribute :min karakter ve :max karakter arasında olmalıdır.', + 'array' => ':attribute, :min ve :max öge arasında olmalıdır.', + ], + 'boolean' => ':attribute sadece doğru veya yanlış olmalıdır.', + 'confirmed' => ':attribute doğrulaması uyuşmuyor.', + 'date' => ':attribute geçersiz bir tarih.', + 'date_format' => ':attribute :format formatına uymuyor.', + 'different' => ':attribute ve :other birbirinden farklı olmalıdır.', + 'digits' => ':attribute, :digits rakam olmalıdır.', + 'digits_between' => ':attribute :min ile :max arasında rakam olmalıdır.', + 'dimensions' => ':attribute geçersiz görüntü boyutlarına sahip.', + 'distinct' => ':attribute alanında tekrarlanan bir değer var.', + 'email' => ':attribute geçerli bir e-posta adresi olmalıdır.', + 'exists' => 'Seçilen :attribute geçersiz.', + 'file' => ':attribute bir dosya olmalıdır.', + 'filled' => ':attribute alanı zorunludur.', + 'image' => ':attribute bir resim olmalıdır.', + 'in' => 'Seçilen :attribute geçersiz.', + 'in_array' => ':attribute alanı :other içinde mevcut değil.', + 'integer' => ':attribute bir tam sayı olmalıdır.', + 'ip' => ':attribute geçerli bir IP adresi olmalıdır.', + 'json' => ':attribute geçerli bir JSON dizesi olmalıdır.', + 'max' => [ + 'numeric' => ':attribute, :max değerinden büyük olmayabilir.', + 'file' => ':attribute, :max kilobayttan daha büyük olmamalıdır.', + 'string' => ':attribute değeri :max karakter değerinden küçük olmalıdır.', + 'array' => ':attribute değeri :max adedinden az nesneye sahip olmamalıdır.', + ], + 'mimes' => ':attribute, :values türünde bir dosya olmalıdır.', + 'mimetypes' => ':attribute, :values türünde bir dosya olmalıdır.', + 'min' => [ + 'numeric' => ':attribute :min den küçük olmalı.', + 'file' => ':attribute, :min kilobayttan küçük olmamalıdır.', + 'string' => ':attribute en az :min karakter olmalıdır.', + 'array' => ':attribute en az :min öğeye sahip olmalıdır.', + ], + 'not_in' => 'Seçilen :attribute geçersiz.', + 'numeric' => ':attribute bir sayı olmalıdır.', + 'present' => ':attribute alanı mevcut olmalıdır.', + 'regex' => ':attribute formatı geçersiz.', + 'required' => ':attribute alanı zorunludur.', + 'required_if' => ':other :value iken :attribute alanı gereklidir.', + 'required_unless' => ':attribute alanı, :other alanı :value değerlerinden birine sahip olmadığında zorunludur.', + 'required_with' => ':values varsa :attribute alanı zorunludur.', + 'required_with_all' => ':values varsa :attribute alanı zorunludur.', + 'required_without' => ':values mevcut değilken :attribute alanı zorunludur.', + 'required_without_all' => 'Mevcut :values değerlerinden biri olmadığında :attribute alanı zorunludur.', + 'same' => ':attribute ve :other aynı olmalı.', + 'size' => [ + 'numeric' => ':attribute, :size boyutunda olmalıdır.', + 'file' => ':attribute :size kilobayt olmalıdır.', + 'string' => ': attribute en az :size karakter olmalıdır.', + 'array' => ':attribute :size nesneye sahip olmalıdır.', + ], + 'string' => ':attribute bir dizi olmalıdır.', + 'timezone' => ':attribute geçerli bir bölge olmalıdır.', + 'unique' => ':attribute zaten alınmış.', + 'uploaded' => ':attribute yüklenemedi.', + 'url' => ':attribute formatı geçersiz.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env değişkeni', + 'invalid_password' => 'Bu kullanıcı için girilen şifre hatalıdır.', + ], +]; diff --git a/lang/uk/activity.php b/lang/uk/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/uk/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/uk/admin/eggs.php b/lang/uk/admin/eggs.php new file mode 100644 index 000000000..578847b0c --- /dev/null +++ b/lang/uk/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Яйце та його змінні успішно імпортовано.', + 'updated_via_import' => 'Яйце було оновлено з файлу.', + 'deleted' => 'Яйце було видалено з панелі.', + 'updated' => 'Налаштування яйця були успішно оновленні.', + 'script_updated' => 'Скрипт установки яйця був успішно оновлений і буде виконуватися під час встановлення серверів.', + 'egg_created' => 'Нове яйце було успішно створено. Щоб застосувати це нове яйце Вам знадобиться перезавантажити Wings.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'Змінна ":variable" була видалена і більше не є доступна для серверів після перезавантаження.', + 'variable_updated' => 'Змінна ":variable" була оновлена. Вам знадобиться перезавантажити будь-які сервери які використовують цю змінну щоб зміни ввійшли в силу.', + 'variable_created' => 'Нову змінну успішно створено та призначено цьому яйцю.', + ], + ], +]; diff --git a/lang/uk/admin/node.php b/lang/uk/admin/node.php new file mode 100644 index 000000000..330c25818 --- /dev/null +++ b/lang/uk/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'Наданий домен або IP-адреса не перетворюється на дійсну IP-адресу.', + 'fqdn_required_for_ssl' => 'Щоб використовувати SSL для цього вузла, потрібне повне доменне ім’я, яке перетворюється на дійсну загальнодоступну IP-адресу.', + ], + 'notices' => [ + 'allocations_added' => 'Призначення успішно додано до цього вузла.', + 'node_deleted' => 'Вузол було успішно видалено з панелі.', + 'node_created' => 'Успішно створений новий вузол. Ви можете автоматично налаштувати демон на ньому, відвідавши вкладку \'Налаштування\'. Перед доданням будь-яких серверів, ви повинні спочатку виділити хоча б одну IP адресу та порт.', + 'node_updated' => 'Інформація вузла була успішно оновлена. Якщо Ви змінили налаштування демона, то Вам необхідно перезапустити вузол для застосування змін.', + 'unallocated_deleted' => 'Видалено всі невиділені порти для :ip.', + ], +]; diff --git a/lang/uk/admin/server.php b/lang/uk/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/uk/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/uk/admin/user.php b/lang/uk/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/uk/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/uk/auth.php b/lang/uk/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/uk/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/uk/command/messages.php b/lang/uk/command/messages.php new file mode 100644 index 000000000..0d723eddc --- /dev/null +++ b/lang/uk/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Цей користувач є адміністратором?', + 'ask_email' => 'Адрес електронної пошти', + 'ask_username' => 'Ім\'я користувача', + 'ask_name_first' => 'Ім’я', + 'ask_name_last' => 'Прізвище', + 'ask_password' => 'Пароль', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'Ви збираєтесь виконати :action проти :count серверів. Бажаєте продовжити?', + 'action_failed' => 'Не вдалося виконати запит дії живлення для ":name" (#:id) на вузол ":node" з помилкою: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Хост (напр. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Порт', + 'ask_smtp_username' => 'SMTP Логін', + 'ask_smtp_password' => 'SMTP Пароль', + 'ask_mailgun_domain' => 'Домен Mailgun', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Секрет Mailgun', + 'ask_mandrill_secret' => 'Секрет Mandrill', + 'ask_postmark_username' => 'Ключ API Postmark', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Ім\'я, з яких повинні розсилатися електронні листи', + 'ask_encryption' => 'Метод шифрування', + ], + ], +]; diff --git a/lang/uk/dashboard/account.php b/lang/uk/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/uk/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/uk/dashboard/index.php b/lang/uk/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/uk/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/uk/exceptions.php b/lang/uk/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/uk/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/uk/pagination.php b/lang/uk/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/uk/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/uk/passwords.php b/lang/uk/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/uk/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/uk/server/users.php b/lang/uk/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/uk/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/uk/strings.php b/lang/uk/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/uk/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/uk/validation.php b/lang/uk/validation.php new file mode 100644 index 000000000..5e842264c --- /dev/null +++ b/lang/uk/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'Вибране поле :attribute є недійсним.', + 'in_array' => 'Значення поля :attribute не існує в :other.', + 'integer' => 'Значення поля :attribute має бути цілим числом.', + 'ip' => 'Значення поля :attribute має бути дійсною IP адресою.', + 'json' => 'Значення поля :attribute має бути дійсним JSON рядком.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/vi/activity.php b/lang/vi/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/vi/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/vi/admin/eggs.php b/lang/vi/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/vi/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/vi/admin/node.php b/lang/vi/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/vi/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/vi/admin/server.php b/lang/vi/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/vi/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/vi/admin/user.php b/lang/vi/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/vi/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/vi/auth.php b/lang/vi/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/vi/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/vi/command/messages.php b/lang/vi/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/vi/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/vi/dashboard/account.php b/lang/vi/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/vi/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/vi/dashboard/index.php b/lang/vi/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/vi/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/vi/exceptions.php b/lang/vi/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/vi/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/vi/pagination.php b/lang/vi/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/vi/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/vi/passwords.php b/lang/vi/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/vi/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/vi/server/users.php b/lang/vi/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/vi/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/vi/strings.php b/lang/vi/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/vi/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/vi/validation.php b/lang/vi/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/vi/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/lang/zh/activity.php b/lang/zh/activity.php new file mode 100644 index 000000000..501a1dcde --- /dev/null +++ b/lang/zh/activity.php @@ -0,0 +1,130 @@ + [ + 'fail' => 'Failed log in', + 'success' => 'Logged in', + 'password-reset' => 'Password reset', + 'reset-password' => 'Requested password reset', + 'checkpoint' => 'Two-factor authentication requested', + 'recovery-token' => 'Used two-factor recovery token', + 'token' => 'Solved two-factor challenge', + 'ip-blocked' => 'Blocked request from unlisted IP address for :identifier', + 'sftp' => [ + 'fail' => 'Failed SFTP log in', + ], + ], + 'user' => [ + 'account' => [ + 'email-changed' => 'Changed email from :old to :new', + 'password-changed' => 'Changed password', + ], + 'api-key' => [ + 'create' => 'Created new API key :identifier', + 'delete' => 'Deleted API key :identifier', + ], + 'ssh-key' => [ + 'create' => 'Added SSH key :fingerprint to account', + 'delete' => 'Removed SSH key :fingerprint from account', + ], + 'two-factor' => [ + 'create' => 'Enabled two-factor auth', + 'delete' => 'Disabled two-factor auth', + ], + ], + 'server' => [ + 'reinstall' => 'Reinstalled server', + 'console' => [ + 'command' => 'Executed ":command" on the server', + ], + 'power' => [ + 'start' => 'Started the server', + 'stop' => 'Stopped the server', + 'restart' => 'Restarted the server', + 'kill' => 'Killed the server process', + ], + 'backup' => [ + 'download' => 'Downloaded the :name backup', + 'delete' => 'Deleted the :name backup', + 'restore' => 'Restored the :name backup (deleted files: :truncate)', + 'restore-complete' => 'Completed restoration of the :name backup', + 'restore-failed' => 'Failed to complete restoration of the :name backup', + 'start' => 'Started a new backup :name', + 'complete' => 'Marked the :name backup as complete', + 'fail' => 'Marked the :name backup as failed', + 'lock' => 'Locked the :name backup', + 'unlock' => 'Unlocked the :name backup', + ], + 'database' => [ + 'create' => 'Created new database :name', + 'rotate-password' => 'Password rotated for database :name', + 'delete' => 'Deleted database :name', + ], + 'file' => [ + 'compress_one' => 'Compressed :directory:file', + 'compress_other' => 'Compressed :count files in :directory', + 'read' => 'Viewed the contents of :file', + 'copy' => 'Created a copy of :file', + 'create-directory' => 'Created directory :directory:name', + 'decompress' => 'Decompressed :files in :directory', + 'delete_one' => 'Deleted :directory:files.0', + 'delete_other' => 'Deleted :count files in :directory', + 'download' => 'Downloaded :file', + 'pull' => 'Downloaded a remote file from :url to :directory', + 'rename_one' => 'Renamed :directory:files.0.from to :directory:files.0.to', + 'rename_other' => 'Renamed :count files in :directory', + 'write' => 'Wrote new content to :file', + 'upload' => 'Began a file upload', + 'uploaded' => 'Uploaded :directory:file', + ], + 'sftp' => [ + 'denied' => 'Blocked SFTP access due to permissions', + 'create_one' => 'Created :files.0', + 'create_other' => 'Created :count new files', + 'write_one' => 'Modified the contents of :files.0', + 'write_other' => 'Modified the contents of :count files', + 'delete_one' => 'Deleted :files.0', + 'delete_other' => 'Deleted :count files', + 'create-directory_one' => 'Created the :files.0 directory', + 'create-directory_other' => 'Created :count directories', + 'rename_one' => 'Renamed :files.0.from to :files.0.to', + 'rename_other' => 'Renamed or moved :count files', + ], + 'allocation' => [ + 'create' => 'Added :allocation to the server', + 'notes' => 'Updated the notes for :allocation from ":old" to ":new"', + 'primary' => 'Set :allocation as the primary server allocation', + 'delete' => 'Deleted the :allocation allocation', + ], + 'schedule' => [ + 'create' => 'Created the :name schedule', + 'update' => 'Updated the :name schedule', + 'execute' => 'Manually executed the :name schedule', + 'delete' => 'Deleted the :name schedule', + ], + 'task' => [ + 'create' => 'Created a new ":action" task for the :name schedule', + 'update' => 'Updated the ":action" task for the :name schedule', + 'delete' => 'Deleted a task for the :name schedule', + ], + 'settings' => [ + 'rename' => 'Renamed the server from :old to :new', + 'description' => 'Changed the server description from :old to :new', + ], + 'startup' => [ + 'edit' => 'Changed the :variable variable from ":old" to ":new"', + 'image' => 'Updated the Docker Image for the server from :old to :new', + ], + 'subuser' => [ + 'create' => 'Added :email as a subuser', + 'update' => 'Updated the subuser permissions for :email', + 'delete' => 'Removed :email as a subuser', + ], + ], +]; diff --git a/lang/zh/admin/eggs.php b/lang/zh/admin/eggs.php new file mode 100644 index 000000000..ffd9b08e1 --- /dev/null +++ b/lang/zh/admin/eggs.php @@ -0,0 +1,19 @@ + [ + 'imported' => 'Successfully imported this Egg and its associated variables.', + 'updated_via_import' => 'This Egg has been updated using the file provided.', + 'deleted' => 'Successfully deleted the requested egg from the Panel.', + 'updated' => 'Egg configuration has been updated successfully.', + 'script_updated' => 'Egg install script has been updated and will run whenever servers are installed.', + 'egg_created' => 'A new egg was laid successfully. You will need to restart any running daemons to apply this new egg.', + ], + 'variables' => [ + 'notices' => [ + 'variable_deleted' => 'The variable ":variable" has been deleted and will no longer be available to servers once rebuilt.', + 'variable_updated' => 'The variable ":variable" has been updated. You will need to rebuild any servers using this variable in order to apply changes.', + 'variable_created' => 'New variable has successfully been created and assigned to this egg.', + ], + ], +]; diff --git a/lang/zh/admin/node.php b/lang/zh/admin/node.php new file mode 100644 index 000000000..fde28a25b --- /dev/null +++ b/lang/zh/admin/node.php @@ -0,0 +1,15 @@ + [ + 'fqdn_not_resolvable' => 'The FQDN or IP address provided does not resolve to a valid IP address.', + 'fqdn_required_for_ssl' => 'A fully qualified domain name that resolves to a public IP address is required in order to use SSL for this node.', + ], + 'notices' => [ + 'allocations_added' => 'Allocations have successfully been added to this node.', + 'node_deleted' => 'Node has been successfully removed from the panel.', + 'node_created' => 'Successfully created new node. You can automatically configure the daemon on this machine by visiting the \'Configuration\' tab. Before you can add any servers you must first allocate at least one IP address and port.', + 'node_updated' => 'Node information has been updated. If any daemon settings were changed you will need to reboot it for those changes to take effect.', + 'unallocated_deleted' => 'Deleted all un-allocated ports for :ip.', + ], +]; diff --git a/lang/zh/admin/server.php b/lang/zh/admin/server.php new file mode 100644 index 000000000..057bd3ca5 --- /dev/null +++ b/lang/zh/admin/server.php @@ -0,0 +1,27 @@ + [ + 'no_new_default_allocation' => 'You are attempting to delete the default allocation for this server but there is no fallback allocation to use.', + 'marked_as_failed' => 'This server was marked as having failed a previous installation. Current status cannot be toggled in this state.', + 'bad_variable' => 'There was a validation error with the :name variable.', + 'daemon_exception' => 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged. (request id: :request_id)', + 'default_allocation_not_found' => 'The requested default allocation was not found in this server\'s allocations.', + ], + 'alerts' => [ + 'startup_changed' => 'The startup configuration for this server has been updated. If this server\'s egg was changed a reinstall will be occurring now.', + 'server_deleted' => 'Server has successfully been deleted from the system.', + 'server_created' => 'Server was successfully created on the panel. Please allow the daemon a few minutes to completely install this server.', + 'build_updated' => 'The build details for this server have been updated. Some changes may require a restart to take effect.', + 'suspension_toggled' => 'Server suspension status has been changed to :status.', + 'rebuild_on_boot' => 'This server has been marked as requiring a Docker Container rebuild. This will happen the next time the server is started.', + 'install_toggled' => 'The installation status for this server has been toggled.', + 'server_reinstalled' => 'This server has been queued for a reinstallation beginning now.', + 'details_updated' => 'Server details have been successfully updated.', + 'docker_image_updated' => 'Successfully changed the default Docker image to use for this server. A reboot is required to apply this change.', + 'node_required' => 'You must have at least one node configured before you can add a server to this panel.', + 'transfer_nodes_required' => 'You must have at least two nodes configured before you can transfer servers.', + 'transfer_started' => 'Server transfer has been started.', + 'transfer_not_viable' => 'The node you selected does not have the required disk space or memory available to accommodate this server.', + ], +]; diff --git a/lang/zh/admin/user.php b/lang/zh/admin/user.php new file mode 100644 index 000000000..4134c15b4 --- /dev/null +++ b/lang/zh/admin/user.php @@ -0,0 +1,12 @@ + [ + 'user_has_servers' => 'Cannot delete a user with active servers attached to their account. Please delete their servers before continuing.', + 'user_is_self' => 'Cannot delete your own user account.', + ], + 'notices' => [ + 'account_created' => 'Account has been created successfully.', + 'account_updated' => 'Account has been successfully updated.', + ], +]; diff --git a/lang/zh/auth.php b/lang/zh/auth.php new file mode 100644 index 000000000..2a3a45268 --- /dev/null +++ b/lang/zh/auth.php @@ -0,0 +1,27 @@ + 'Sign In', + 'go_to_login' => 'Go to Login', + 'failed' => 'No account matching those credentials could be found.', + + 'forgot_password' => [ + 'label' => 'Forgot Password?', + 'label_help' => 'Enter your account email address to receive instructions on resetting your password.', + 'button' => 'Recover Account', + ], + + 'reset_password' => [ + 'button' => 'Reset and Sign In', + ], + + 'two_factor' => [ + 'label' => '2-Factor Token', + 'label_help' => 'This account requires a second layer of authentication in order to continue. Please enter the code generated by your device to complete this login.', + 'checkpoint_failed' => 'The two-factor authentication token was invalid.', + ], + + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'password_requirements' => 'Password must be at least 8 characters in length and should be unique to this site.', + '2fa_must_be_enabled' => 'The administrator has required that 2-Factor Authentication be enabled for your account in order to use the Panel.', +]; diff --git a/lang/zh/command/messages.php b/lang/zh/command/messages.php new file mode 100644 index 000000000..4e640b3fa --- /dev/null +++ b/lang/zh/command/messages.php @@ -0,0 +1,59 @@ + [ + 'search_users' => 'Enter a Username, User ID, or Email Address', + 'select_search_user' => 'ID of user to delete (Enter \'0\' to re-search)', + 'deleted' => 'User successfully deleted from the Panel.', + 'confirm_delete' => 'Are you sure you want to delete this user from the Panel?', + 'no_users_found' => 'No users were found for the search term provided.', + 'multiple_found' => 'Multiple accounts were found for the user provided, unable to delete a user because of the --no-interaction flag.', + 'ask_admin' => 'Is this user an administrator?', + 'ask_email' => 'Email Address', + 'ask_username' => 'Username', + 'ask_name_first' => 'First Name', + 'ask_name_last' => 'Last Name', + 'ask_password' => 'Password', + 'ask_password_tip' => 'If you would like to create an account with a random password emailed to the user, re-run this command (CTRL+C) and pass the `--no-password` flag.', + 'ask_password_help' => 'Passwords must be at least 8 characters in length and contain at least one capital letter and number.', + '2fa_help_text' => [ + 'This command will disable 2-factor authentication for a user\'s account if it is enabled. This should only be used as an account recovery command if the user is locked out of their account.', + 'If this is not what you wanted to do, press CTRL+C to exit this process.', + ], + '2fa_disabled' => '2-Factor authentication has been disabled for :email.', + ], + 'schedule' => [ + 'output_line' => 'Dispatching job for first task in `:schedule` (:hash).', + ], + 'maintenance' => [ + 'deleting_service_backup' => 'Deleting service backup file :file.', + ], + 'server' => [ + 'rebuild_failed' => 'Rebuild request for ":name" (#:id) on node ":node" failed with error: :message', + 'reinstall' => [ + 'failed' => 'Reinstall request for ":name" (#:id) on node ":node" failed with error: :message', + 'confirm' => 'You are about to reinstall against a group of servers. Do you wish to continue?', + ], + 'power' => [ + 'confirm' => 'You are about to perform a :action against :count servers. Do you wish to continue?', + 'action_failed' => 'Power action request for ":name" (#:id) on node ":node" failed with error: :message', + ], + ], + 'environment' => [ + 'mail' => [ + 'ask_smtp_host' => 'SMTP Host (e.g. smtp.gmail.com)', + 'ask_smtp_port' => 'SMTP Port', + 'ask_smtp_username' => 'SMTP Username', + 'ask_smtp_password' => 'SMTP Password', + 'ask_mailgun_domain' => 'Mailgun Domain', + 'ask_mailgun_endpoint' => 'Mailgun Endpoint', + 'ask_mailgun_secret' => 'Mailgun Secret', + 'ask_mandrill_secret' => 'Mandrill Secret', + 'ask_postmark_username' => 'Postmark API Key', + 'ask_driver' => 'Which driver should be used for sending emails?', + 'ask_mail_from' => 'Email address emails should originate from', + 'ask_mail_name' => 'Name that emails should appear from', + 'ask_encryption' => 'Encryption method to use', + ], + ], +]; diff --git a/lang/zh/dashboard/account.php b/lang/zh/dashboard/account.php new file mode 100644 index 000000000..85411ef65 --- /dev/null +++ b/lang/zh/dashboard/account.php @@ -0,0 +1,28 @@ + [ + 'title' => 'Update your email', + 'updated' => 'Your email address has been updated.', + ], + 'password' => [ + 'title' => 'Change your password', + 'requirements' => 'Your new password should be at least 8 characters in length.', + 'updated' => 'Your password has been updated.', + ], + 'two_factor' => [ + 'button' => 'Configure 2-Factor Authentication', + 'disabled' => 'Two-factor authentication has been disabled on your account. You will no longer be prompted to provide a token when logging in.', + 'enabled' => 'Two-factor authentication has been enabled on your account! From now on, when logging in, you will be required to provide the code generated by your device.', + 'invalid' => 'The token provided was invalid.', + 'setup' => [ + 'title' => 'Setup two-factor authentication', + 'help' => 'Can\'t scan the code? Enter the code below into your application:', + 'field' => 'Enter token', + ], + 'disable' => [ + 'title' => 'Disable two-factor authentication', + 'field' => 'Enter token', + ], + ], +]; diff --git a/lang/zh/dashboard/index.php b/lang/zh/dashboard/index.php new file mode 100644 index 000000000..8ab11e994 --- /dev/null +++ b/lang/zh/dashboard/index.php @@ -0,0 +1,8 @@ + 'Search for servers...', + 'no_matches' => 'There were no servers found matching the search criteria provided.', + 'cpu_title' => 'CPU', + 'memory_title' => 'Memory', +]; diff --git a/lang/zh/exceptions.php b/lang/zh/exceptions.php new file mode 100644 index 000000000..3977c87c2 --- /dev/null +++ b/lang/zh/exceptions.php @@ -0,0 +1,55 @@ + 'There was an exception while attempting to communicate with the daemon resulting in a HTTP/:code response code. This exception has been logged.', + 'node' => [ + 'servers_attached' => 'A node must have no servers linked to it in order to be deleted.', + 'daemon_off_config_updated' => 'The daemon configuration has been updated, however there was an error encountered while attempting to automatically update the configuration file on the Daemon. You will need to manually update the configuration file (config.yml) for the daemon to apply these changes.', + ], + 'allocations' => [ + 'server_using' => 'A server is currently assigned to this allocation. An allocation can only be deleted if no server is currently assigned.', + 'too_many_ports' => 'Adding more than 1000 ports in a single range at once is not supported.', + 'invalid_mapping' => 'The mapping provided for :port was invalid and could not be processed.', + 'cidr_out_of_range' => 'CIDR notation only allows masks between /25 and /32.', + 'port_out_of_range' => 'Ports in an allocation must be greater than 1024 and less than or equal to 65535.', + ], + 'egg' => [ + 'delete_has_servers' => 'An Egg with active servers attached to it cannot be deleted from the Panel.', + 'invalid_copy_id' => 'The Egg selected for copying a script from either does not exist, or is copying a script itself.', + 'has_children' => 'This Egg is a parent to one or more other Eggs. Please delete those Eggs before deleting this Egg.', + ], + 'variables' => [ + 'env_not_unique' => 'The environment variable :name must be unique to this Egg.', + 'reserved_name' => 'The environment variable :name is protected and cannot be assigned to a variable.', + 'bad_validation_rule' => 'The validation rule ":rule" is not a valid rule for this application.', + ], + 'importer' => [ + 'json_error' => 'There was an error while attempting to parse the JSON file: :error.', + 'file_error' => 'The JSON file provided was not valid.', + 'invalid_json_provided' => 'The JSON file provided is not in a format that can be recognized.', + ], + 'subusers' => [ + 'editing_self' => 'Editing your own subuser account is not permitted.', + 'user_is_owner' => 'You cannot add the server owner as a subuser for this server.', + 'subuser_exists' => 'A user with that email address is already assigned as a subuser for this server.', + ], + 'databases' => [ + 'delete_has_databases' => 'Cannot delete a database host server that has active databases linked to it.', + ], + 'tasks' => [ + 'chain_interval_too_long' => 'The maximum interval time for a chained task is 15 minutes.', + ], + 'locations' => [ + 'has_nodes' => 'Cannot delete a location that has active nodes attached to it.', + ], + 'users' => [ + 'node_revocation_failed' => 'Failed to revoke keys on Node #:node. :error', + ], + 'deployment' => [ + 'no_viable_nodes' => 'No nodes satisfying the requirements specified for automatic deployment could be found.', + 'no_viable_allocations' => 'No allocations satisfying the requirements for automatic deployment were found.', + ], + 'api' => [ + 'resource_not_found' => 'The requested resource does not exist on this server.', + ], +]; diff --git a/lang/zh/pagination.php b/lang/zh/pagination.php new file mode 100644 index 000000000..ecac3aa33 --- /dev/null +++ b/lang/zh/pagination.php @@ -0,0 +1,17 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/lang/zh/passwords.php b/lang/zh/passwords.php new file mode 100644 index 000000000..bde70f915 --- /dev/null +++ b/lang/zh/passwords.php @@ -0,0 +1,19 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that e-mail address.', +]; diff --git a/lang/zh/server/users.php b/lang/zh/server/users.php new file mode 100644 index 000000000..ce77c4101 --- /dev/null +++ b/lang/zh/server/users.php @@ -0,0 +1,33 @@ + [ + 'websocket_*' => 'Allows access to the websocket for this server.', + 'control_console' => 'Allows the user to send data to the server console.', + 'control_start' => 'Allows the user to start the server instance.', + 'control_stop' => 'Allows the user to stop the server instance.', + 'control_restart' => 'Allows the user to restart the server instance.', + 'control_kill' => 'Allows the user to kill the server instance.', + 'user_create' => 'Allows the user to create new user accounts for the server.', + 'user_read' => 'Allows the user permission to view users associated with this server.', + 'user_update' => 'Allows the user to modify other users associated with this server.', + 'user_delete' => 'Allows the user to delete other users associated with this server.', + 'file_create' => 'Allows the user permission to create new files and directories.', + 'file_read' => 'Allows the user to see files and folders associated with this server instance, as well as view their contents.', + 'file_update' => 'Allows the user to update files and folders associated with the server.', + 'file_delete' => 'Allows the user to delete files and directories.', + 'file_archive' => 'Allows the user to create file archives and decompress existing archives.', + 'file_sftp' => 'Allows the user to perform the above file actions using a SFTP client.', + 'allocation_read' => 'Allows access to the server allocation management pages.', + 'allocation_update' => 'Allows user permission to make modifications to the server\'s allocations.', + 'database_create' => 'Allows user permission to create a new database for the server.', + 'database_read' => 'Allows user permission to view the server databases.', + 'database_update' => 'Allows a user permission to make modifications to a database. If the user does not have the "View Password" permission as well they will not be able to modify the password.', + 'database_delete' => 'Allows a user permission to delete a database instance.', + 'database_view_password' => 'Allows a user permission to view a database password in the system.', + 'schedule_create' => 'Allows a user to create a new schedule for the server.', + 'schedule_read' => 'Allows a user permission to view schedules for a server.', + 'schedule_update' => 'Allows a user permission to make modifications to an existing server schedule.', + 'schedule_delete' => 'Allows a user to delete a schedule for the server.', + ], +]; diff --git a/lang/zh/strings.php b/lang/zh/strings.php new file mode 100644 index 000000000..58071426a --- /dev/null +++ b/lang/zh/strings.php @@ -0,0 +1,95 @@ + 'Email', + 'email_address' => 'Email address', + 'user_identifier' => 'Username or Email', + 'password' => 'Password', + 'new_password' => 'New password', + 'confirm_password' => 'Confirm new password', + 'login' => 'Login', + 'home' => 'Home', + 'servers' => 'Servers', + 'id' => 'ID', + 'name' => 'Name', + 'node' => 'Node', + 'connection' => 'Connection', + 'memory' => 'Memory', + 'cpu' => 'CPU', + 'disk' => 'Disk', + 'status' => 'Status', + 'search' => 'Search', + 'suspended' => 'Suspended', + 'account' => 'Account', + 'security' => 'Security', + 'ip' => 'IP Address', + 'last_activity' => 'Last Activity', + 'revoke' => 'Revoke', + '2fa_token' => 'Authentication Token', + 'submit' => 'Submit', + 'close' => 'Close', + 'settings' => 'Settings', + 'configuration' => 'Configuration', + 'sftp' => 'SFTP', + 'databases' => 'Databases', + 'memo' => 'Memo', + 'created' => 'Created', + 'expires' => 'Expires', + 'public_key' => 'Token', + 'api_access' => 'Api Access', + 'never' => 'never', + 'sign_out' => 'Sign out', + 'admin_control' => 'Admin Control', + 'required' => 'Required', + 'port' => 'Port', + 'username' => 'Username', + 'database' => 'Database', + 'new' => 'New', + 'danger' => 'Danger', + 'create' => 'Create', + 'select_all' => 'Select All', + 'select_none' => 'Select None', + 'alias' => 'Alias', + 'primary' => 'Primary', + 'make_primary' => 'Make Primary', + 'none' => 'None', + 'cancel' => 'Cancel', + 'created_at' => 'Created At', + 'action' => 'Action', + 'data' => 'Data', + 'queued' => 'Queued', + 'last_run' => 'Last Run', + 'next_run' => 'Next Run', + 'not_run_yet' => 'Not Run Yet', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + '2fa' => '2FA', + 'logout' => 'Logout', + 'admin_cp' => 'Admin Control Panel', + 'optional' => 'Optional', + 'read_only' => 'Read Only', + 'relation' => 'Relation', + 'owner' => 'Owner', + 'admin' => 'Admin', + 'subuser' => 'Subuser', + 'captcha_invalid' => 'The provided captcha is invalid.', + 'tasks' => 'Tasks', + 'seconds' => 'Seconds', + 'minutes' => 'Minutes', + 'under_maintenance' => 'Under Maintenance', + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tues' => 'Tuesday', + 'wed' => 'Wednesday', + 'thurs' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + ], + 'last_used' => 'Last Used', + 'enable' => 'Enable', + 'disable' => 'Disable', + 'save' => 'Save', + 'copyright' => '® 2024 - :year Pelican', +]; diff --git a/lang/zh/validation.php b/lang/zh/validation.php new file mode 100644 index 000000000..9cccf3508 --- /dev/null +++ b/lang/zh/validation.php @@ -0,0 +1,106 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field is required.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + // Internal validation logic for Panel + 'internal' => [ + 'variable_value' => ':env variable', + 'invalid_password' => 'The password provided was invalid for this account.', + ], +]; diff --git a/license b/license index fe6b9036b..301cbf999 100644 --- a/license +++ b/license @@ -1,3 +1,7 @@ +Pelican Panel is offered under the AGPL-3 license to the open source community. +Pelican Panel is alternatively available under a commercial license. +Contact team@pelican.dev for information about commercial licensing. + GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 diff --git a/public/css/filament-monaco-editor/filament-monaco-editor-styles.css b/public/css/filament-monaco-editor/filament-monaco-editor-styles.css new file mode 100644 index 000000000..7192499bd --- /dev/null +++ b/public/css/filament-monaco-editor/filament-monaco-editor-styles.css @@ -0,0 +1 @@ +.fme-wrapper{display:flex;width:100%;flex-direction:column}.fme-full-screen{position:fixed;top:0;left:0;z-index:9999;height:100vh;width:100vw;overflow:hidden;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.fme-control-section{display:flex;justify-content:space-between;padding:.5rem}.fme-code-preview-tab-item{position:relative;z-index:20;display:inline-flex;height:2rem;cursor:pointer;align-items:center;justify-content:center;white-space:nowrap;border-radius:.375rem;padding-left:.75rem;padding-right:.75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.fme-code-preview-tab-marker-container{position:absolute;left:0;z-index:10;height:100%;width:50%;transition-duration:.3s;transition-timing-function:cubic-bezier(0,0,.2,1)}.fme-code-preview-tab-marker{height:100%;width:100%;border-radius:.375rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));--tw-shadow:0 1px 2px 0 #0000000d;--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)}.fme-full-screen-btn{border-radius:.25rem;padding:.25rem .5rem}.fme-full-screen-btn:focus{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity));--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(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)}.fme-full-screen-btn-icon{height:1rem;width:1rem;--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fme-code-preview-tab{display:inline-grid;height:2.5rem;width:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none;grid-template-columns:repeat(2,minmax(0,1fr));justify-content:center;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fme-code-preview-tab,.fme-container{position:relative;align-items:center}.fme-container{min-height:250px;flex-direction:column;justify-content:flex-start;--tw-bg-opacity:1;background-color:rgb(12 16 33/var(--tw-bg-opacity));padding-top:.75rem}.fme-container,.fme-loader{display:flex;height:100%;width:100%}.fme-loader{position:absolute;inset:0;z-index:20;align-items:center;justify-content:center;transition-duration:1s;transition-timing-function:cubic-bezier(0,0,.2,1)}.fme-loader-icon{height:1rem;width:1rem;animation:spin 1s linear infinite;--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fme-element-wrapper{position:relative;z-index:10;height:100%;width:100%;border-radius:.25rem}.fme-element{height:100%;width:100%;font-size:1.125rem;line-height:1.75rem}.fme-placeholder{position:absolute;left:0;top:0;z-index:50;margin-left:3.5rem;margin-top:.125rem;width:100%;--tw-translate-x:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fme-preview-wrapper{height:100%;width:100%;border-radius:.25rem;border-width:1px;--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity));padding:1rem}.fme-preview{display:flex;height:100%;width:100%}.grow{flex-grow:1}.-translate-x-5,.-translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0,.translate-x-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.truncate,.whitespace-nowrap{white-space:nowrap}.\!bg-gray-50,.\!bg-gray-700{--tw-bg-opacity:1!important}.pb-6,.py-6{padding-bottom:1.5rem}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.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)}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.focus-visible\:ring-1:focus-visible,.focus-visible\:ring-2:focus-visible{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder,.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline,.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}.dark\:divide-white\/10:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#ffffff1a}.dark\:divide-white\/5:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}.dark\:border-primary-500:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}.dark\:border-t-white\/10:is(.dark *){border-top-color:#ffffff1a}.dark\:\!bg-gray-700:is(.dark *){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.dark\:bg-custom-400\/10:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:bg-custom-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.dark\:bg-custom-500\/20:is(.dark *){background-color:rgba(var(--c-500),.2)}.dark\:bg-gray-400\/10:is(.dark *){background-color:rgba(var(--gray-400),.1)}.dark\:bg-gray-500\/20:is(.dark *){background-color:rgba(var(--gray-500),.2)}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.dark\:bg-gray-900\/30:is(.dark *){background-color:rgba(var(--gray-900),.3)}.dark\:bg-gray-950\/75:is(.dark *){background-color:rgba(var(--gray-950),.75)}.dark\:bg-primary-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:bg-transparent:is(.dark *){background-color:initial}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}.dark\:fill-current:is(.dark *){fill:currentColor}.dark\:text-custom-300\/50:is(.dark *){color:rgba(var(--c-300),.5)}.dark\:text-custom-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.dark\:text-danger-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}.dark\:text-danger-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:text-gray-300\/50:is(.dark *){color:rgba(var(--gray-300),.5)}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:text-gray-700:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.dark\:text-primary-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.dark\:text-primary-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:text-white\/5:is(.dark *){color:#ffffff0d}.dark\:ring-custom-400\/30:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.3)}.dark\:ring-custom-500:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}.dark\:ring-danger-500:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:ring-gray-400\/20:is(.dark *){--tw-ring-color:rgba(var(--gray-400),0.2)}.dark\:ring-gray-50\/10:is(.dark *){--tw-ring-color:rgba(var(--gray-50),0.1)}.dark\:ring-gray-700:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}.dark\:ring-gray-900:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}.dark\:ring-white\/10:is(.dark *){--tw-ring-color:#ffffff1a}.dark\:ring-white\/20:is(.dark *){--tw-ring-color:#fff3}.dark\:placeholder\:text-gray-500:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:placeholder\:text-gray-500:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:before\:bg-primary-500:is(.dark *):before{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:checked\:bg-danger-500:checked:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}.dark\:checked\:bg-primary-500:checked:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:hover\:bg-custom-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}.dark\:hover\:bg-custom-400\/10:hover:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:bg-white\/5:hover:is(.dark *){background-color:#ffffff0d}.dark\:hover\:text-custom-300:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}.dark\:hover\:text-custom-300\/75:hover:is(.dark *){color:rgba(var(--c-300),.75)}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:hover\:text-gray-300\/75:hover:is(.dark *){color:rgba(var(--gray-300),.75)}.dark\:hover\:text-gray-400:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:focus\:ring-danger-500:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:focus\:ring-primary-500:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:checked\:focus\:ring-danger-400\/50:focus:checked:is(.dark *){--tw-ring-color:rgba(var(--danger-400),0.5)}.dark\:checked\:focus\:ring-primary-400\/50:focus:checked:is(.dark *){--tw-ring-color:rgba(var(--primary-400),0.5)}.dark\:focus-visible\:border-primary-500:focus-visible:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.dark\:focus-visible\:bg-custom-400\/10:focus-visible:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:focus-visible\:bg-white\/5:focus-visible:is(.dark *){background-color:#ffffff0d}.dark\:focus-visible\:text-custom-300\/75:focus-visible:is(.dark *){color:rgba(var(--c-300),.75)}.dark\:focus-visible\:text-gray-300\/75:focus-visible:is(.dark *){color:rgba(var(--gray-300),.75)}.dark\:focus-visible\:ring-custom-400\/50:focus-visible:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.5)}.dark\:focus-visible\:ring-custom-500:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}.dark\:focus-visible\:ring-primary-500:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:disabled\:bg-transparent:disabled:is(.dark *){background-color:initial}.dark\:disabled\:text-gray-400:disabled:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:disabled\:ring-white\/10:disabled:is(.dark *){--tw-ring-color:#ffffff1a}.dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled:is(.dark *){-webkit-text-fill-color:rgba(var(--gray-400),1)}.dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled:is(.dark *)::-moz-placeholder,.dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled:is(.dark *)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}.dark\:disabled\:checked\:bg-gray-600:checked:disabled:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}.group\/button:hover .dark\:group-hover\/button\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group:focus-visible .dark\:group-focus-visible\:text-gray-200:is(.dark *),.group:hover .dark\:group-hover\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active:is(.dark *){background-color:#ffffff0d}.dark\:\[\&\.trix-active\]\:text-primary-400.trix-active:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-500:focus-within:not(:has(.fi-ac-action:focus)):is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-500:focus-within:not(:has(.fi-ac-action:focus)):is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.white\/20\%\)\]:not(:nth-child(1 of .fi-btn)):is(.dark *){--tw-shadow:-1px 0 0 0 #fff3;--tw-shadow-colored:-1px 0 0 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)}.\[\&_optgroup\]\:dark\:bg-gray-900:is(.dark *) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:dark\:bg-gray-900:is(.dark *) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:checked+*>.\[\:checked\+\*\>\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(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)}input:checked+.\[input\:checked\+\&\]\:hover\:bg-custom-500:hover,input:checked+.dark\:\[input\:checked\+\&\]\:bg-custom-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-custom-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}input:checked:focus-visible+.\[input\:checked\:focus-visible\+\&\]\:ring-custom-500\/50{--tw-ring-color:rgba(var(--c-500),0.5)}input:checked:focus-visible+.dark\:\[input\:checked\:focus-visible\+\&\]\:ring-custom-400\/50:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.5)}input:focus-visible+.\[input\:focus-visible\+\&\]\:z-10{z-index:10}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}input:focus-visible+.dark\:\[input\:focus-visible\+\&\]\:ring-white\/20:is(.dark *){--tw-ring-color:#fff3} \ No newline at end of file diff --git a/public/css/filament/filament/app.css b/public/css/filament/filament/app.css index 988e79d55..ae1da1b03 100644 --- a/public/css/filament/filament/app.css +++ b/public/css/filament/filament/app.css @@ -1 +1 @@ -/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--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);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));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-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 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:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--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);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.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;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' 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:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--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:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.row-start-2{grid-row-start:2}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.-mt-7{margin-top:-1.75rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-\[--line-clamp\]{-webkit-box-orient:vertical;-webkit-line-clamp:var(--line-clamp);display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[100dvh\],.h-dvh{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.\!max-w-2xl{max-width:42rem!important}.\!max-w-3xl{max-width:48rem!important}.\!max-w-4xl{max-width:56rem!important}.\!max-w-5xl{max-width:64rem!important}.\!max-w-6xl{max-width:72rem!important}.\!max-w-7xl{max-width:80rem!important}.\!max-w-\[14rem\]{max-width:14rem!important}.\!max-w-lg{max-width:32rem!important}.\!max-w-md{max-width:28rem!important}.\!max-w-sm{max-width:24rem!important}.\!max-w-xl{max-width:36rem!important}.\!max-w-xs{max-width:20rem!important}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.grid-rows-\[1fr_auto_1fr\]{grid-template-rows:1fr auto 1fr}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.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-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.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-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-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}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.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-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.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-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{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 rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{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 rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.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-duration:.15s;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-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--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(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-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2: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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}:is(.dark .dark\:flex){display:flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(.dark .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(.dark .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(.dark .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-transparent){background-color:transparent}:is(.dark .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:fill-current){fill:currentColor}:is(.dark .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(.dark .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(.dark .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(.dark .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(.dark .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(.dark .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(.dark .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(.dark .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(.dark .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(.dark .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(.dark .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(.dark .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(.dark .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:grid-rows-\[1fr_auto_3fr\]{grid-template-rows:1fr auto 3fr}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:w-max{width:-moz-max-content;width:max-content}.md\:max-w-60{max-width:15rem}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:overflow-x-auto{overflow-x:auto}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(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)}.lg\:transition{transition-duration:.15s;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)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}:is(.dark .dark\:lg\:bg-transparent){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-end{align-items:flex-end}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-end{align-items:flex-end}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(.dark .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\:\:-ms-reveal\]\:hidden::-ms-reveal{display:none}.\[\&\:not\(\:first-of-type\)\]\:border-s:not(:first-of-type){border-inline-start-width:1px}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-2:focus-within:not(:has(.fi-ac-action: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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}:is(.dark .dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-500:focus-within:not(:has(.fi-ac-action:focus))){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-500:focus-within:not(:has(.fi-ac-action:focus))){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.\[\&\:not\(\:last-of-type\)\]\:border-e:not(:last-of-type){border-inline-end-width:1px}.\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.gray\.200\)\]:not(:nth-child(1 of .fi-btn)){--tw-shadow:-1px 0 0 0 rgba(var(--gray-200),1);--tw-shadow-colored:-1px 0 0 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)}:is(.dark .dark\:\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.white\/20\%\)\]:not(:nth-child(1 of .fi-btn))){--tw-shadow:-1px 0 0 0 hsla(0,0%,100%,.2);--tw-shadow-colored:-1px 0 0 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)}.\[\&\:not\(\:nth-last-child\(1_of_\.fi-btn\)\)\]\:me-px:not(:nth-last-child(1 of .fi-btn)){margin-inline-end:1px}.\[\&\:nth-child\(1_of_\.fi-btn\)\]\:rounded-s-lg:nth-child(1 of .fi-btn){border-end-start-radius:.5rem;border-start-start-radius:.5rem}.\[\&\:nth-last-child\(1_of_\.fi-btn\)\]\:rounded-e-lg:nth-last-child(1 of .fi-btn){border-end-end-radius:.5rem;border-start-end-radius:.5rem}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:checked+*>.\[\:checked\+\*\>\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;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)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}}input:checked+.\[input\:checked\+\&\]\:bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(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)}input:checked+.\[input\:checked\+\&\]\:hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark input:checked+.dark\:\[input\:checked\+\&\]\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}input:checked:focus-visible+.\[input\:checked\:focus-visible\+\&\]\:ring-custom-500\/50{--tw-ring-color:rgba(var(--c-500),0.5)}:is(.dark input:checked:focus-visible+.dark\:\[input\:checked\:focus-visible\+\&\]\:ring-custom-400\/50){--tw-ring-color:rgba(var(--c-400),0.5)}input:focus-visible+.\[input\:focus-visible\+\&\]\:z-10{z-index:10}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}:is(.dark input:focus-visible+.dark\:\[input\:focus-visible\+\&\]\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)} \ No newline at end of file +/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height: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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--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);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));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-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 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:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--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);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.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;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' 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:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--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:rgba(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:rgba(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%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start-color:var(--tw-prose-quote-borders);border-inline-start-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:start;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-top:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-top:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-top:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-inline-start:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding-inline-end:.4444444em;padding-bottom:.2222222em;padding-top:.2222222em;padding-inline-start:.4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding-inline-end:1.5em;padding-bottom:1em;padding-top:1em;padding-inline-start:1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-inline-start:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-inline-start:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-top:.75em;padding-inline-start:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.row-start-2{grid-row-start:2}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.-mt-7{margin-top:-1.75rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-\[--line-clamp\]{-webkit-box-orient:vertical;-webkit-line-clamp:var(--line-clamp);display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[100dvh\],.h-dvh{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.\!max-w-2xl{max-width:42rem!important}.\!max-w-3xl{max-width:48rem!important}.\!max-w-4xl{max-width:56rem!important}.\!max-w-5xl{max-width:64rem!important}.\!max-w-6xl{max-width:72rem!important}.\!max-w-7xl{max-width:80rem!important}.\!max-w-\[14rem\]{max-width:14rem!important}.\!max-w-lg{max-width:32rem!important}.\!max-w-md{max-width:28rem!important}.\!max-w-sm{max-width:24rem!important}.\!max-w-xl{max-width:36rem!important}.\!max-w-xs{max-width:20rem!important}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.grid-rows-\[1fr_auto_1fr\]{grid-template-rows:1fr auto 1fr}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.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-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.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-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-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}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.\!bg-none{background-image:none!important}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.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-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.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-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{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 rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{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 rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.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-duration:.15s;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-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--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(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-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2: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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}.dark\:flex:is(.dark *){display:flex}.dark\:hidden:is(.dark *){display:none}.dark\:divide-white\/10:is(.dark *)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}.dark\:divide-white\/5:is(.dark *)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}.dark\:border-primary-500:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.dark\:border-white\/10:is(.dark *){border-color:hsla(0,0%,100%,.1)}.dark\:border-white\/5:is(.dark *){border-color:hsla(0,0%,100%,.05)}.dark\:border-t-white\/10:is(.dark *){border-top-color:hsla(0,0%,100%,.1)}.dark\:\!bg-gray-700:is(.dark *){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.dark\:bg-custom-400\/10:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:bg-custom-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.dark\:bg-custom-500\/20:is(.dark *){background-color:rgba(var(--c-500),.2)}.dark\:bg-gray-400\/10:is(.dark *){background-color:rgba(var(--gray-400),.1)}.dark\:bg-gray-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.dark\:bg-gray-500\/20:is(.dark *){background-color:rgba(var(--gray-500),.2)}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.dark\:bg-gray-900\/30:is(.dark *){background-color:rgba(var(--gray-900),.3)}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}.dark\:bg-gray-950\/75:is(.dark *){background-color:rgba(var(--gray-950),.75)}.dark\:bg-primary-400:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.dark\:bg-primary-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:bg-white\/10:is(.dark *){background-color:hsla(0,0%,100%,.1)}.dark\:bg-white\/5:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:fill-current:is(.dark *){fill:currentColor}.dark\:text-custom-300\/50:is(.dark *){color:rgba(var(--c-300),.5)}.dark\:text-custom-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.dark\:text-custom-400\/10:is(.dark *){color:rgba(var(--c-400),.1)}.dark\:text-danger-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}.dark\:text-danger-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:text-gray-300\/50:is(.dark *){color:rgba(var(--gray-300),.5)}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:text-gray-700:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.dark\:text-gray-800:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}.dark\:text-primary-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.dark\:text-primary-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:text-white\/5:is(.dark *){color:hsla(0,0%,100%,.05)}.dark\:ring-custom-400\/30:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.3)}.dark\:ring-custom-500:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}.dark\:ring-danger-500:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:ring-gray-400\/20:is(.dark *){--tw-ring-color:rgba(var(--gray-400),0.2)}.dark\:ring-gray-50\/10:is(.dark *){--tw-ring-color:rgba(var(--gray-50),0.1)}.dark\:ring-gray-700:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}.dark\:ring-gray-900:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}.dark\:ring-white\/10:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1)}.dark\:ring-white\/20:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)}.dark\:placeholder\:text-gray-500:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:placeholder\:text-gray-500:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.dark\:before\:bg-primary-500:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.dark\:checked\:bg-danger-500:checked:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}.dark\:checked\:bg-primary-500:checked:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.dark\:focus-within\:bg-white\/5:focus-within:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:hover\:bg-custom-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}.dark\:hover\:bg-custom-400\/10:hover:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:hsla(0,0%,100%,.1)}.dark\:hover\:bg-white\/5:hover:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:hover\:text-custom-300:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}.dark\:hover\:text-custom-300\/75:hover:is(.dark *){color:rgba(var(--c-300),.75)}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.dark\:hover\:text-gray-300\/75:hover:is(.dark *){color:rgba(var(--gray-300),.75)}.dark\:hover\:text-gray-400:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:hover\:ring-white\/20:hover:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)}.dark\:focus\:ring-danger-500:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:focus\:ring-primary-500:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:checked\:focus\:ring-danger-400\/50:focus:checked:is(.dark *){--tw-ring-color:rgba(var(--danger-400),0.5)}.dark\:checked\:focus\:ring-primary-400\/50:focus:checked:is(.dark *){--tw-ring-color:rgba(var(--primary-400),0.5)}.dark\:focus-visible\:border-primary-500:focus-visible:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.dark\:focus-visible\:bg-custom-400\/10:focus-visible:is(.dark *){background-color:rgba(var(--c-400),.1)}.dark\:focus-visible\:bg-white\/5:focus-visible:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:focus-visible\:text-custom-300\/75:focus-visible:is(.dark *){color:rgba(var(--c-300),.75)}.dark\:focus-visible\:text-gray-300\/75:focus-visible:is(.dark *){color:rgba(var(--gray-300),.75)}.dark\:focus-visible\:text-gray-400:focus-visible:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:focus-visible\:ring-custom-400\/50:focus-visible:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.5)}.dark\:focus-visible\:ring-custom-500:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}.dark\:focus-visible\:ring-primary-500:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.dark\:disabled\:bg-transparent:disabled:is(.dark *){background-color:transparent}.dark\:disabled\:text-gray-400:disabled:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.dark\:disabled\:ring-white\/10:disabled:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1)}.dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled:is(.dark *){-webkit-text-fill-color:rgba(var(--gray-400),1)}.dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled:is(.dark *)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}.dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled:is(.dark *)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}.dark\:disabled\:checked\:bg-gray-600:checked:disabled:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}.group\/button:hover .dark\:group-hover\/button\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group:focus-visible .dark\:group-focus-visible\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.group:focus-visible .dark\:group-focus-visible\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:grid-rows-\[1fr_auto_3fr\]{grid-template-rows:1fr auto 3fr}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:w-max{width:-moz-max-content;width:max-content}.md\:max-w-60{max-width:15rem}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:overflow-x-auto{overflow-x:auto}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(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)}.lg\:transition{transition-duration:.15s;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)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}.dark\:lg\:bg-transparent:is(.dark *){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-end{align-items:flex-end}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-end{align-items:flex-end}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active:is(.dark *){background-color:hsla(0,0%,100%,.05)}.dark\:\[\&\.trix-active\]\:text-primary-400.trix-active:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\:\:-ms-reveal\]\:hidden::-ms-reveal{display:none}.\[\&\:not\(\:first-of-type\)\]\:border-s:not(:first-of-type){border-inline-start-width:1px}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-2:focus-within:not(:has(.fi-ac-action: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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-500:focus-within:not(:has(.fi-ac-action:focus)):is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}.dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-500:focus-within:not(:has(.fi-ac-action:focus)):is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.\[\&\:not\(\:last-of-type\)\]\:border-e:not(:last-of-type){border-inline-end-width:1px}.\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.gray\.200\)\]:not(:nth-child(1 of .fi-btn)){--tw-shadow:-1px 0 0 0 rgba(var(--gray-200),1);--tw-shadow-colored:-1px 0 0 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)}.dark\:\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.white\/20\%\)\]:not(:nth-child(1 of .fi-btn)):is(.dark *){--tw-shadow:-1px 0 0 0 hsla(0,0%,100%,.2);--tw-shadow-colored:-1px 0 0 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)}.\[\&\:not\(\:nth-last-child\(1_of_\.fi-btn\)\)\]\:me-px:not(:nth-last-child(1 of .fi-btn)){margin-inline-end:1px}.\[\&\:nth-child\(1_of_\.fi-btn\)\]\:rounded-s-lg:nth-child(1 of .fi-btn){border-end-start-radius:.5rem;border-start-start-radius:.5rem}.\[\&\:nth-last-child\(1_of_\.fi-btn\)\]\:rounded-e-lg:nth-last-child(1 of .fi-btn){border-end-end-radius:.5rem;border-start-end-radius:.5rem}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500:is(.dark *)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.\[\&_optgroup\]\:dark\:bg-gray-900:is(.dark *) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.\[\&_option\]\:dark\:bg-gray-900:is(.dark *) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:checked+*>.\[\:checked\+\*\>\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;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)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}}input:checked+.\[input\:checked\+\&\]\:bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(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)}input:checked+.\[input\:checked\+\&\]\:hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:bg-custom-500:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-custom-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}input:checked:focus-visible+.\[input\:checked\:focus-visible\+\&\]\:ring-custom-500\/50{--tw-ring-color:rgba(var(--c-500),0.5)}input:checked:focus-visible+.dark\:\[input\:checked\:focus-visible\+\&\]\:ring-custom-400\/50:is(.dark *){--tw-ring-color:rgba(var(--c-400),0.5)}input:focus-visible+.\[input\:focus-visible\+\&\]\:z-10{z-index:10}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}input:focus-visible+.dark\:\[input\:focus-visible\+\&\]\:ring-white\/20:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2)} \ No newline at end of file diff --git a/public/css/filament/forms/forms.css b/public/css/filament/forms/forms.css index a9458cb7a..4d7a4201a 100644 --- a/public/css/filament/forms/forms.css +++ b/public/css/filament/forms/forms.css @@ -1,4 +1,4 @@ -input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.filepond--assistant{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--browser.filepond--browser{font-size:0;left:1em;margin:0;opacity:0;padding:0;position:absolute;top:1.75em;width:calc(100% - 2em)}.filepond--data{border:none;contain:strict;height:0;margin:0;padding:0;visibility:hidden;width:0}.filepond--data,.filepond--drip{pointer-events:none;position:absolute}.filepond--drip{background:rgba(0,0,0,.01);border-radius:.5em;inset:0;opacity:.1;overflow:hidden}.filepond--drip-blob{background:#292625;border-radius:50%;height:8em;margin-left:-4em;margin-top:-4em;transform-origin:center center;width:8em}.filepond--drip-blob,.filepond--drop-label{left:0;position:absolute;top:0;will-change:transform,opacity}.filepond--drop-label{align-items:center;color:#4f4f4f;display:flex;height:0;justify-content:center;margin:0;right:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--drop-label.filepond--drop-label label{display:block;margin:0;padding:.5em}.filepond--drop-label label{cursor:default;font-size:.875em;font-weight:400;line-height:1.5;text-align:center}.filepond--label-action{-webkit-text-decoration-skip:ink;cursor:pointer;text-decoration:underline;text-decoration-color:#a7a4a4;text-decoration-skip-ink:auto}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{border:none;font-family:inherit;font-size:1em;height:1.625em;line-height:inherit;margin:0;outline:none;padding:0;width:1.625em;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file-action-button.filepond--file-action-button svg{height:100%;width:100%}.filepond--file-action-button.filepond--file-action-button:after{content:"";inset:-.75em;position:absolute}.filepond--file-action-button{background-color:#00000080;background-image:none;border-radius:50%;box-shadow:0 0 #fff0;color:#fff;cursor:auto;transition:box-shadow .25s ease-in}.filepond--file-action-button:focus,.filepond--file-action-button:hover{box-shadow:0 0 0 .125em #ffffffe6}.filepond--file-action-button[disabled]{background-color:#00000040;color:#ffffff80}.filepond--file-action-button[hidden]{display:none}.filepond--file-info{align-items:flex-start;display:flex;flex:1;flex-direction:column;margin:0 .5em 0 0;min-width:0;pointer-events:none;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.filepond--file-info .filepond--file-info-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out;white-space:nowrap}.filepond--file-info .filepond--file-info-sub:empty{display:none}.filepond--file-status{align-items:flex-end;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;pointer-events:none;position:static;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-status *{margin:0;white-space:nowrap}.filepond--file-status .filepond--file-status-main{font-size:.75em;line-height:1.2}.filepond--file-status .filepond--file-status-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out}.filepond--file-wrapper.filepond--file-wrapper{border:none;height:100%;margin:0;min-width:0;padding:0}.filepond--file-wrapper.filepond--file-wrapper>legend{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file{align-items:flex-start;border-radius:.5em;color:#fff;display:flex;height:100%;padding:.5625em;position:static}.filepond--file .filepond--file-status{margin-left:auto;margin-right:2.25em}.filepond--file .filepond--processing-complete-indicator{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.filepond--file .filepond--file-action-button,.filepond--file .filepond--processing-complete-indicator,.filepond--file .filepond--progress-indicator{position:absolute}.filepond--file [data-align*=left]{left:.5625em}.filepond--file [data-align*=right]{right:.5625em}.filepond--file [data-align*=center]{left:calc(50% - .8125em)}.filepond--file [data-align*=bottom]{bottom:1.125em}.filepond--file [data-align=center]{top:calc(50% - .8125em)}.filepond--file .filepond--progress-indicator{margin-top:.1875em}.filepond--file .filepond--progress-indicator[data-align*=right]{margin-right:.1875em}.filepond--file .filepond--progress-indicator[data-align*=left]{margin-left:.1875em}[data-filepond-item-state*=error] .filepond--file-info,[data-filepond-item-state*=invalid] .filepond--file-info,[data-filepond-item-state=cancelled] .filepond--file-info{margin-right:2.25em}[data-filepond-item-state~=processing] .filepond--file-status-sub{opacity:0}[data-filepond-item-state~=processing] .filepond--action-abort-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-error] .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg{animation:fall .5s linear .125s both}[data-filepond-item-state=processing-complete] .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--file-info-sub,[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden])~.filepond--file-status .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing~.filepond--file-info .filepond--file-info-sub{opacity:.5}[data-filepond-item-state*=error] .filepond--file-wrapper,[data-filepond-item-state*=error] .filepond--panel,[data-filepond-item-state*=invalid] .filepond--file-wrapper,[data-filepond-item-state*=invalid] .filepond--panel{animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes shake{10%,90%{transform:translate(-.0625em)}20%,80%{transform:translate(.125em)}30%,50%,70%{transform:translate(-.25em)}40%,60%{transform:translate(.25em)}}@keyframes fall{0%{animation-timing-function:ease-out;opacity:0;transform:scale(.5)}70%{animation-timing-function:ease-in-out;opacity:1;transform:scale(1.1)}to{animation-timing-function:ease-out;transform:scale(1)}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]:after{content:"";inset:0;position:absolute;z-index:100}.filepond--progress-indicator{z-index:103}.filepond--file-action-button{z-index:102}.filepond--file-status{z-index:101}.filepond--file-info{z-index:100}.filepond--item{left:0;margin:.25em;padding:0;position:absolute;right:0;top:0;will-change:transform,opacity;z-index:1}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -.0625em #00000040}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{box-shadow:0 0 0 transparent;transition:box-shadow .125s ease-in-out}.filepond--item[data-drag-state=drag]{cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em #00000053}.filepond--item[data-drag-state]:not([data-drag-state=idle]){z-index:2}.filepond--item-panel{background-color:#64605e}[data-filepond-item-state=processing-complete] .filepond--item-panel{background-color:#369763}[data-filepond-item-state*=error] .filepond--item-panel,[data-filepond-item-state*=invalid] .filepond--item-panel{background-color:#c44e47}.filepond--item-panel{border-radius:.5em;transition:background-color .25s}.filepond--list-scroller{left:0;margin:0;position:absolute;right:0;top:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);overflow-x:hidden;overflow-y:scroll}.filepond--list-scroller::-webkit-scrollbar{background:transparent}.filepond--list-scroller::-webkit-scrollbar:vertical{width:1em}.filepond--list-scroller::-webkit-scrollbar:horizontal{height:0}.filepond--list-scroller::-webkit-scrollbar-thumb{background-clip:content-box;background-color:#0000004d;border:.3125em solid transparent;border-radius:99999px}.filepond--list.filepond--list{list-style-type:none;margin:0;padding:0;position:absolute;top:0;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{height:100%;margin:0;max-width:none;width:100%}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root{border-radius:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root>*,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{align-items:center;bottom:0;display:flex;height:auto;justify-content:center;z-index:7}.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel{display:none}.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller{height:100%;margin-bottom:0;margin-top:0;overflow:hidden}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{height:100%;left:0;right:0}.filepond--root[data-style-panel-layout~=compact] .filepond--item,.filepond--root[data-style-panel-layout~=integrated] .filepond--item{margin:0}.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper{height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{z-index:7}.filepond--root[data-style-panel-layout~=circle]{border-radius:99999rem;overflow:hidden}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel{border-radius:inherit}.filepond--root[data-style-panel-layout~=circle] .filepond--file-info,.filepond--root[data-style-panel-layout~=circle] .filepond--file-status,.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}@media not all and (-webkit-min-device-pixel-ratio:0),not all and (min-resolution:.001dpcm){@supports (-webkit-appearance:none) and (stroke-color:transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{background-color:#f1f0ef;border-radius:.5em}.filepond--panel{height:100%!important;left:0;margin:0;pointer-events:none;position:absolute;right:0;top:0}.filepond-panel:not([data-scalable=false]){height:auto!important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{background-color:transparent!important;border:none!important;transform-style:preserve-3d}.filepond--panel-bottom,.filepond--panel-center,.filepond--panel-top{left:0;margin:0;padding:0;position:absolute;right:0;top:0}.filepond--panel-bottom,.filepond--panel-top{height:.5em}.filepond--panel-top{border-bottom:none!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.filepond--panel-top:after{background-color:inherit;bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.filepond--panel-bottom,.filepond--panel-center{backface-visibility:hidden;transform:translate3d(0,.5em,0);transform-origin:left top;will-change:transform}.filepond--panel-bottom{border-top:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.filepond--panel-bottom:before{background-color:inherit;content:"";height:2px;left:0;position:absolute;right:0;top:-1px}.filepond--panel-center{border-bottom:none!important;border-radius:0!important;border-top:none!important;height:100px!important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{color:#fff;height:1.25em;margin:0;pointer-events:none;position:static;width:1.25em;will-change:transform,opacity}.filepond--progress-indicator svg{height:100%;transform-box:fill-box;vertical-align:top;width:100%}.filepond--progress-indicator path{fill:none;stroke:currentColor}.filepond--list-scroller{z-index:6}.filepond--drop-label{z-index:5}.filepond--drip{z-index:3}.filepond--root>.filepond--panel{z-index:2}.filepond--browser{z-index:1}.filepond--root{box-sizing:border-box;contain:layout style size;direction:ltr;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;font-weight:450;line-height:normal;margin-bottom:1em;position:relative;text-align:left;text-rendering:optimizeLegibility}.filepond--root *{box-sizing:inherit;line-height:inherit}.filepond--root :not(text){font-size:inherit}.filepond--root[data-disabled]{pointer-events:none}.filepond--root[data-disabled] .filepond--list-scroller{pointer-events:all}.filepond--root[data-disabled] .filepond--list{pointer-events:none}.filepond--root .filepond--drop-label{min-height:4.75em}.filepond--root .filepond--list-scroller{margin-bottom:1em;margin-top:1em}.filepond--root .filepond--credits{bottom:-14px;color:inherit;font-size:11px;line-height:.85;opacity:.175;position:absolute;right:0;text-decoration:none;z-index:3}.filepond--root .filepond--credits[style]{bottom:auto;margin-top:14px;top:0}.filepond--action-edit-item.filepond--action-edit-item{height:2em;padding:.1875em;width:2em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=center]{margin-left:-.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom]{margin-bottom:-.1875em}.filepond--action-edit-item-alt{background:transparent;border:none;color:inherit;font-family:inherit;line-height:inherit;margin:0 0 0 .25em;outline:none;padding:0;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{height:1.3125em;width:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1!important;visibility:visible!important}.filepond--image-preview-markup{left:0;position:absolute;top:0}.filepond--image-preview-wrapper{z-index:2}.filepond--image-preview-overlay{display:block;left:0;margin:0;max-height:7rem;min-height:5rem;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.filepond--image-preview-overlay svg{color:inherit;height:auto;max-height:inherit;width:100%}.filepond--image-preview-overlay-idle{color:#282828d9;mix-blend-mode:multiply}.filepond--image-preview-overlay-success{color:#369763;mix-blend-mode:normal}.filepond--image-preview-overlay-failure{color:#c44e47;mix-blend-mode:normal}@supports (-webkit-marquee-repetition:infinite) and ((-o-object-fit:fill) or (object-fit:fill)){.filepond--image-preview-overlay-idle{mix-blend-mode:normal}}.filepond--image-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--image-preview{align-items:center;background:#222;display:flex;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;will-change:transform,opacity;z-index:1}.filepond--image-clip{margin:0 auto;overflow:hidden;position:relative}.filepond--image-clip[data-transparency-indicator=grid] canvas,.filepond--image-clip[data-transparency-indicator=grid] img{background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0h50v50H0M50 50h50v50H50'/%3E%3C/svg%3E");background-size:1.25em 1.25em}.filepond--image-bitmap,.filepond--image-vector{left:0;position:absolute;top:0;will-change:transform}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview-wrapper{border-radius:0}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview{align-items:center;display:flex;height:100%;justify-content:center}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-wrapper{border-radius:99999rem}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-overlay{bottom:0;top:auto;transform:scaleY(-1)}.filepond--root[data-style-panel-layout~=circle] .filepond--file .filepond--file-action-button[data-align*=bottom]:not([data-align*=center]){margin-bottom:.325em}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=left]{left:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=right]{right:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=left],.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=right]{margin-bottom:.5125em}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center]{margin-bottom:.1875em;margin-left:.1875em;margin-top:0}.filepond--media-preview audio{display:none}.filepond--media-preview .audioplayer{margin:2.3em auto auto;width:calc(100% - 1.4em)}.filepond--media-preview .playpausebtn{background-position:50%;background-repeat:no-repeat;border:none;border-radius:25px;cursor:pointer;float:left;height:25px;margin-right:.3em;margin-top:.3em;outline:none;width:25px}.filepond--media-preview .playpausebtn:hover{background-color:#00000080}.filepond--media-preview .play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAyElEQVQ4T9XUsWoCQRRG4XPaFL5SfIy8gKYKBCysrax8Ahs7qzQ2qVIFOwsrsbEWLEK6EBFGBrIQhN2d3dnGgalm+Jh7789Ix8uOPe4YDCH0gZ66atKW0pJDCE/AEngDXtRjCpwCRucbGANzNVTBqWBhfAJDdV+GNgWj8wtM41bPt3AbsDB2f69d/0dzwC0wUDe54A8wAWbqJbfkD+BZPeQO5QsYqYu6LKb0MIb7VT3VYfG8CnwEHtT3FKi4c8e/TZMyk3LYFrwCgMdHFbRDKS8AAAAASUVORK5CYII=)}.filepond--media-preview .pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+2UsQkCURBE30PLMbAMMResQrAPsQ0TK9AqDKxGZeTLD74aGNwlhzfZssvADDMrPcOe+RggYZIJcG2s2KinMidZAvu6u6uzT8u+JCeZArfmcKUeK+EaONTdQy23bxgJX8aPHvIHsSnVuzTx36rn2pQFsGuqN//ZlK7vbIDvq6vkJ9yteBXzecYbAAAAAElFTkSuQmCC)}.filepond--media-preview .timeline{background:hsla(0,0%,100%,.3);border-radius:15px;float:left;height:3px;margin-top:1em;width:calc(100% - 2.5em)}.filepond--media-preview .playhead{background:#fff;border-radius:50%;height:13px;margin-top:-5px;width:13px}.filepond--media-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;pointer-events:auto;position:absolute;right:0;top:0}.filepond--media-preview-wrapper:before{background:linear-gradient(180deg,#000 0,transparent);content:" ";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000",endColorstr="#00000000",GradientType=0);height:2em;position:absolute;width:100%;z-index:3}.filepond--media-preview{display:block;height:100%;position:relative;transform-origin:center center;width:100%;will-change:transform,opacity;z-index:1}.filepond--media-preview audio,.filepond--media-preview video{width:100%;will-change:transform}.filepond--root{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:0}:is(.dark .filepond--root){--tw-ring-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.05)}.filepond--root[data-disabled=disabled]{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .filepond--root[data-disabled=disabled]){--tw-ring-color:hsla(0,0%,100%,.1);background-color:transparent}.filepond--panel-root{background-color:transparent}.filepond--drop-label label{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;padding:.75rem!important}:is(.dark .filepond--drop-label label){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.filepond--label-action{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity));font-weight:500;text-decoration-line:none;transition-duration:75ms;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)}.filepond--label-action:hover{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .filepond--label-action){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .filepond--label-action:hover){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--drip-blob{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}:is(.dark .filepond--drip-blob){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.filepond--root[data-style-panel-layout=grid] .filepond--item{display:inline;width:calc(50% - .5rem)}@media (min-width:1024px){.filepond--root[data-style-panel-layout=grid] .filepond--item{width:calc(33.33% - .5rem)}}.filepond--download-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--download-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--download-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--open-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--open-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--open-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--file-action-button.filepond--action-edit-item{background-color:rgba(0,0,0,.5)}.cropper-drag-box.cropper-crop.cropper-modal{background-color:rgba(var(--gray-100),.5);opacity:1}:is(.dark .cropper-drag-box.cropper-crop.cropper-modal){background-color:rgba(var(--gray-900),.8)}.fi-fo-file-upload-circle-cropper .cropper-face,.fi-fo-file-upload-circle-cropper .cropper-view-box{border-radius:50%}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{inset:-50px 0 0;overflow:hidden;position:absolute}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{inset:0;position:absolute;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;height:auto;inset:50px 0 0;position:fixed!important;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,hsla(0,0%,100%,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"\25b2"}.editor-toolbar button.heading-smaller:after{content:"\25bc"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{line-height:1.2;margin-bottom:.5rem}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px #0003;display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}:root{--color-cm-red:#991b1b;--color-cm-orange:#9a3412;--color-cm-amber:#92400e;--color-cm-yellow:#854d0e;--color-cm-lime:#3f6212;--color-cm-green:#166534;--color-cm-emerald:#065f46;--color-cm-teal:#115e59;--color-cm-cyan:#155e75;--color-cm-sky:#075985;--color-cm-blue:#1e40af;--color-cm-indigo:#3730a3;--color-cm-violet:#5b21b6;--color-cm-purple:#6b21a8;--color-cm-fuchsia:#86198f;--color-cm-pink:#9d174d;--color-cm-rose:#9f1239;--color-cm-gray:#18181b;--color-cm-gray-muted:#71717a;--color-cm-gray-background:#e4e4e7}.dark{--color-cm-red:#f87171;--color-cm-orange:#fb923c;--color-cm-amber:#fbbf24;--color-cm-yellow:#facc15;--color-cm-lime:#a3e635;--color-cm-green:#4ade80;--color-cm-emerald:#4ade80;--color-cm-teal:#2dd4bf;--color-cm-cyan:#22d3ee;--color-cm-sky:#38bdf8;--color-cm-blue:#60a5fa;--color-cm-indigo:#818cf8;--color-cm-violet:#a78bfa;--color-cm-purple:#c084fc;--color-cm-fuchsia:#e879f9;--color-cm-pink:#f472b6;--color-cm-rose:#fb7185;--color-cm-gray:#fafafa;--color-cm-gray-muted:#a1a1aa;--color-cm-gray-background:#52525b}.cm-s-easymde .cm-comment{background-color:transparent;color:var(--color-cm-gray-muted)}.EasyMDEContainer .CodeMirror-cursor{border-color:currentColor}.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext{filter:invert(100%)}.EasyMDEContainer .cm-s-easymde .cm-keyword{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-atom{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-number{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-def{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable{color:var(--color-cm-yellow)}.EasyMDEContainer .cm-s-easymde .cm-variable-2{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable-3{color:var(--color-cm-emerald)}.EasyMDEContainer .cm-s-easymde .cm-operator,.EasyMDEContainer .cm-s-easymde .cm-property{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-string,.EasyMDEContainer .cm-s-easymde .cm-string-2{color:var(--color-cm-rose)}.EasyMDEContainer .cm-s-easymde .cm-meta{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-error{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-qualifier{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-builtin{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-bracket{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-hr{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote{color:var(--color-cm-sky)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote+.cm-quote{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-list,.EasyMDEContainer .cm-s-easymde .cm-formatting-list+.cm-variable-2,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-variable-2{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-link{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-amber)}.EasyMDEContainer .cm-s-easymde .cm-attribute+.cm-string{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-formatting-code+.cm-comment:not(.cm-formatting-code){background-color:var(--color-cm-gray-background);color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-header-1{font-size:1.875rem;line-height:2.25rem}.EasyMDEContainer .cm-s-easymde .cm-header-2{font-size:1.5rem;line-height:2rem}.EasyMDEContainer .cm-s-easymde .cm-header-3{font-size:1.25rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-4{font-size:1.125rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-5{font-size:1rem;line-height:1.5rem}.EasyMDEContainer .cm-s-easymde .cm-header-6{font-size:.875rem;line-height:1.25rem}.EasyMDEContainer .cm-s-easymde .cm-comment{background-image:none}.EasyMDEContainer .CodeMirror,.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-comment{background-color:transparent;color:inherit}.EasyMDEContainer .CodeMirror{border-style:none;padding:.375rem .75rem}.EasyMDEContainer .CodeMirror-scroll{height:auto}.EasyMDEContainer .editor-toolbar{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity));border-radius:0;border-width:0 0 1px;-moz-column-gap:.25rem;column-gap:.25rem;display:flex;overflow-x:auto;padding:.5rem .625rem}:is(.dark .EasyMDEContainer .editor-toolbar){border-color:hsla(0,0%,100%,.1)}.EasyMDEContainer .editor-toolbar button{border-radius:.5rem;border-style:none;cursor:pointer;display:grid;height:2rem;padding:0;place-content:center;transition-duration:75ms;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);width:2rem}.EasyMDEContainer .editor-toolbar button:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .EasyMDEContainer .editor-toolbar button:focus-visible){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button.active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button.active){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:before{--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity));display:block;height:1rem;width:1rem}:is(.dark .EasyMDEContainer .editor-toolbar button):before{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:before{content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.EasyMDEContainer .editor-toolbar button.active:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button.active):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar .separator{border-style:none;margin:0!important;width:.25rem}.EasyMDEContainer .editor-toolbar .bold:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .italic:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .strikethrough:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .link:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .heading:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .quote:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .code:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .unordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .ordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .table:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .upload-image:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .undo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .redo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-statusbar{display:none}.fi-fo-rich-editor trix-toolbar .trix-dialogs{position:relative}.fi-fo-rich-editor trix-toolbar .trix-dialog{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.5rem;bottom:auto;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);left:0;padding:.5rem;position:absolute;right:0;top:1rem}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields{display:flex;flex-direction:column;gap:.5rem;width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group{display:flex;gap:.5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-style:none;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--gray-950),var(--tw-text-opacity));display:block;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:.75rem;padding-top:.375rem;padding-inline-start:.75rem;transition-duration:75ms;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);width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input){--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:hsla(0,0%,100%,.2);background-color:rgba(var(--gray-700),var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}@media (min-width:640px){.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{font-size:.875rem;line-height:1.5rem}}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button{--tw-bg-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity));background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.75rem;line-height:1rem;padding:.125rem .5rem}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button){--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-600),var(--tw-ring-opacity));background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-editor:empty:before{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-editor:empty):before{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:before{content:attr(placeholder)}.fi-fo-rich-editor trix-editor.prose :where(ol):not(:where([class~=not-prose] *)),.fi-fo-rich-editor trix-editor.prose :where(ul):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:1.625em!important}.fi-fo-rich-editor trix-editor.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:.375em!important}select:not(.choices){background-image:url("data:image/svg+xml;charset=utf-8,%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 8 4 4 4-4'/%3E%3C/svg%3E")}[dir=rtl] select{background-position:left .5rem center!important}.choices{outline:2px solid transparent;outline-offset:2px;position:relative}.choices [hidden]{display:none!important}.choices[data-type*=select-one] .has-no-choices{display:none}.choices[data-type*=select-one] .choices__input{display:block;margin:0;width:100%}.choices__inner{background-repeat:no-repeat;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:2rem;padding-top:.375rem;padding-inline-start:.75rem}@media (min-width:640px){.choices__inner{font-size:.875rem;line-height:1.5rem}}.choices__inner{background-image:url("data:image/svg+xml;charset=utf-8,%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 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-size:1.5em 1.5em}.choices.is-disabled .choices__inner{cursor:default}[dir=rtl] .choices__inner{background-position:left .5rem center}.choices__list--single{display:inline-block}.choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(.dark .choices__list--single .choices__item){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices.is-disabled .choices__list--single .choices__item){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--multiple{display:flex;flex-wrap:wrap;gap:.375rem}.choices__list--multiple:not(:empty){margin-bottom:.25rem;margin-left:-.25rem;margin-right:-.25rem;padding-bottom:.125rem;padding-top:.125rem}.choices__list--multiple .choices__item{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:rgba(var(--primary-600),0.1);align-items:center;background-color:rgba(var(--primary-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--primary-600),var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;line-height:1rem;padding:.25rem .5rem;word-break:break-all}:is(.dark .choices__list--multiple .choices__item){--tw-text-opacity:1;--tw-ring-color:rgba(var(--primary-400),0.3);background-color:rgba(var(--primary-400),.1);color:rgba(var(--primary-400),var(--tw-text-opacity))}.choices__list--dropdown,.choices__list[aria-expanded]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--gray-950),0.05);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:none;font-size:.875rem;line-height:1.25rem;margin-top:.5rem;overflow:hidden;overflow-wrap:break-word;position:absolute;top:100%;width:100%;will-change:visibility;z-index:10}:is(.dark .choices__list--dropdown),:is(.dark .choices__list[aria-expanded]){--tw-bg-opacity:1;--tw-ring-color:hsla(0,0%,100%,.1);background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{display:block;padding:.25rem}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{max-height:15rem;overflow:auto;will-change:scroll-position}.choices__item--choice{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:.5rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(.dark .choices__item--choice){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable{--tw-text-opacity:1;border-radius:.375rem;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(.dark .choices__item--choice.choices__item--selectable){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .choices__list--dropdown .choices__item--selectable.is-highlighted),:is(.dark .choices__list[aria-expanded] .choices__item--selectable.is-highlighted){background-color:hsla(0,0%,100%,.05)}.choices__item{cursor:default}.choices__item--disabled{pointer-events:none}.choices__item--disabled:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__item--disabled:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices.is-disabled .choices__placeholder.choices__item,.choices__placeholder.choices__item{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity));cursor:default}:is(.dark .choices.is-disabled .choices__placeholder.choices__item),:is(.dark .choices__placeholder.choices__item){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__button{background-color:transparent;background-position:50%;background-repeat:no-repeat;border-width:0;outline:2px solid transparent;outline-offset:2px;text-indent:-9999px}.choices[data-type*=select-one] .choices__button{height:1rem;inset-inline-end:0;margin-inline-end:2.25rem;opacity:.5;padding:0;position:absolute;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}:is(.dark .choices[data-type*=select-one] .choices__button){opacity:.4}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em;top:calc(50% - .5714em)}.dark .choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button{height:1rem;opacity:.5;width:1rem}:is(.dark .choices[data-type*=select-multiple] .choices__button){opacity:.4}.choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em}.dark .choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button:focus-visible,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus-visible,.choices[data-type*=select-one] .choices__button:hover{opacity:.7}:is(.dark .choices[data-type*=select-multiple] .choices__button:focus-visible),:is(.dark .choices[data-type*=select-multiple] .choices__button:hover),:is(.dark .choices[data-type*=select-one] .choices__button:focus-visible),:is(.dark .choices[data-type*=select-one] .choices__button:hover){opacity:.6}.choices.is-disabled .choices__button,.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices__input{--tw-text-opacity:1;background-color:transparent!important;border-style:none;color:rgba(var(--gray-950),var(--tw-text-opacity));font-size:1rem!important;line-height:1.5rem!important;padding:0!important;transition-duration:75ms;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)}.choices__input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.choices__input:disabled{--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-500),1);color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .choices__input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input:disabled){--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-400),1);color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.choices__input{font-size:.875rem!important;line-height:1.5rem}}.choices__list--dropdown .choices__input{padding:.5rem!important}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;height:0;width:0}.choices__group{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:1rem .5rem .5rem}.choices__group:first-child{padding-top:.5rem}:is(.dark .choices__group){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator{opacity:0}/*! Bundled license information: +input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.filepond--assistant{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--browser.filepond--browser{font-size:0;left:1em;margin:0;opacity:0;padding:0;position:absolute;top:1.75em;width:calc(100% - 2em)}.filepond--data{border:none;contain:strict;height:0;margin:0;padding:0;visibility:hidden;width:0}.filepond--data,.filepond--drip{pointer-events:none;position:absolute}.filepond--drip{background:rgba(0,0,0,.01);border-radius:.5em;inset:0;opacity:.1;overflow:hidden}.filepond--drip-blob{background:#292625;border-radius:50%;height:8em;margin-left:-4em;margin-top:-4em;transform-origin:center center;width:8em}.filepond--drip-blob,.filepond--drop-label{left:0;position:absolute;top:0;will-change:transform,opacity}.filepond--drop-label{align-items:center;color:#4f4f4f;display:flex;height:0;justify-content:center;margin:0;right:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--drop-label.filepond--drop-label label{display:block;margin:0;padding:.5em}.filepond--drop-label label{cursor:default;font-size:.875em;font-weight:400;line-height:1.5;text-align:center}.filepond--label-action{-webkit-text-decoration-skip:ink;cursor:pointer;text-decoration:underline;text-decoration-color:#a7a4a4;text-decoration-skip-ink:auto}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{border:none;font-family:inherit;font-size:1em;height:1.625em;line-height:inherit;margin:0;outline:none;padding:0;width:1.625em;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file-action-button.filepond--file-action-button svg{height:100%;width:100%}.filepond--file-action-button.filepond--file-action-button:after{content:"";inset:-.75em;position:absolute}.filepond--file-action-button{background-color:#00000080;background-image:none;border-radius:50%;box-shadow:0 0 #fff0;color:#fff;cursor:auto;transition:box-shadow .25s ease-in}.filepond--file-action-button:focus,.filepond--file-action-button:hover{box-shadow:0 0 0 .125em #ffffffe6}.filepond--file-action-button[disabled]{background-color:#00000040;color:#ffffff80}.filepond--file-action-button[hidden]{display:none}.filepond--file-info{align-items:flex-start;display:flex;flex:1;flex-direction:column;margin:0 .5em 0 0;min-width:0;pointer-events:none;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.filepond--file-info .filepond--file-info-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out;white-space:nowrap}.filepond--file-info .filepond--file-info-sub:empty{display:none}.filepond--file-status{align-items:flex-end;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;pointer-events:none;position:static;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-status *{margin:0;white-space:nowrap}.filepond--file-status .filepond--file-status-main{font-size:.75em;line-height:1.2}.filepond--file-status .filepond--file-status-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out}.filepond--file-wrapper.filepond--file-wrapper{border:none;height:100%;margin:0;min-width:0;padding:0}.filepond--file-wrapper.filepond--file-wrapper>legend{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file{align-items:flex-start;border-radius:.5em;color:#fff;display:flex;height:100%;padding:.5625em;position:static}.filepond--file .filepond--file-status{margin-left:auto;margin-right:2.25em}.filepond--file .filepond--processing-complete-indicator{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.filepond--file .filepond--file-action-button,.filepond--file .filepond--processing-complete-indicator,.filepond--file .filepond--progress-indicator{position:absolute}.filepond--file [data-align*=left]{left:.5625em}.filepond--file [data-align*=right]{right:.5625em}.filepond--file [data-align*=center]{left:calc(50% - .8125em)}.filepond--file [data-align*=bottom]{bottom:1.125em}.filepond--file [data-align=center]{top:calc(50% - .8125em)}.filepond--file .filepond--progress-indicator{margin-top:.1875em}.filepond--file .filepond--progress-indicator[data-align*=right]{margin-right:.1875em}.filepond--file .filepond--progress-indicator[data-align*=left]{margin-left:.1875em}[data-filepond-item-state*=error] .filepond--file-info,[data-filepond-item-state*=invalid] .filepond--file-info,[data-filepond-item-state=cancelled] .filepond--file-info{margin-right:2.25em}[data-filepond-item-state~=processing] .filepond--file-status-sub{opacity:0}[data-filepond-item-state~=processing] .filepond--action-abort-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-error] .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg{animation:fall .5s linear .125s both}[data-filepond-item-state=processing-complete] .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--file-info-sub,[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden])~.filepond--file-status .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing~.filepond--file-info .filepond--file-info-sub{opacity:.5}[data-filepond-item-state*=error] .filepond--file-wrapper,[data-filepond-item-state*=error] .filepond--panel,[data-filepond-item-state*=invalid] .filepond--file-wrapper,[data-filepond-item-state*=invalid] .filepond--panel{animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes shake{10%,90%{transform:translate(-.0625em)}20%,80%{transform:translate(.125em)}30%,50%,70%{transform:translate(-.25em)}40%,60%{transform:translate(.25em)}}@keyframes fall{0%{animation-timing-function:ease-out;opacity:0;transform:scale(.5)}70%{animation-timing-function:ease-in-out;opacity:1;transform:scale(1.1)}to{animation-timing-function:ease-out;transform:scale(1)}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]:after{content:"";inset:0;position:absolute;z-index:100}.filepond--progress-indicator{z-index:103}.filepond--file-action-button{z-index:102}.filepond--file-status{z-index:101}.filepond--file-info{z-index:100}.filepond--item{left:0;margin:.25em;padding:0;position:absolute;right:0;top:0;touch-action:none;will-change:transform,opacity;z-index:1}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -.0625em #00000040}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{box-shadow:0 0 0 transparent;transition:box-shadow .125s ease-in-out}.filepond--item[data-drag-state=drag]{cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em #00000053}.filepond--item[data-drag-state]:not([data-drag-state=idle]){z-index:2}.filepond--item-panel{background-color:#64605e}[data-filepond-item-state=processing-complete] .filepond--item-panel{background-color:#369763}[data-filepond-item-state*=error] .filepond--item-panel,[data-filepond-item-state*=invalid] .filepond--item-panel{background-color:#c44e47}.filepond--item-panel{border-radius:.5em;transition:background-color .25s}.filepond--list-scroller{left:0;margin:0;position:absolute;right:0;top:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);overflow-x:hidden;overflow-y:scroll}.filepond--list-scroller::-webkit-scrollbar{background:transparent}.filepond--list-scroller::-webkit-scrollbar:vertical{width:1em}.filepond--list-scroller::-webkit-scrollbar:horizontal{height:0}.filepond--list-scroller::-webkit-scrollbar-thumb{background-clip:content-box;background-color:#0000004d;border:.3125em solid transparent;border-radius:99999px}.filepond--list.filepond--list{list-style-type:none;margin:0;padding:0;position:absolute;top:0;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{height:100%;margin:0;max-width:none;width:100%}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root{border-radius:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root>*,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{align-items:center;bottom:0;display:flex;height:auto;justify-content:center;z-index:7}.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel{display:none}.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller{height:100%;margin-bottom:0;margin-top:0;overflow:hidden}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{height:100%;left:0;right:0}.filepond--root[data-style-panel-layout~=compact] .filepond--item,.filepond--root[data-style-panel-layout~=integrated] .filepond--item{margin:0}.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper{height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{z-index:7}.filepond--root[data-style-panel-layout~=circle]{border-radius:99999rem;overflow:hidden}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel{border-radius:inherit}.filepond--root[data-style-panel-layout~=circle] .filepond--file-info,.filepond--root[data-style-panel-layout~=circle] .filepond--file-status,.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}@media not all and (-webkit-min-device-pixel-ratio:0),not all and (min-resolution:.001dpcm){@supports (-webkit-appearance:none) and (stroke-color:transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{background-color:#f1f0ef;border-radius:.5em}.filepond--panel{height:100%!important;left:0;margin:0;pointer-events:none;position:absolute;right:0;top:0}.filepond-panel:not([data-scalable=false]){height:auto!important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{background-color:transparent!important;border:none!important;transform-style:preserve-3d}.filepond--panel-bottom,.filepond--panel-center,.filepond--panel-top{left:0;margin:0;padding:0;position:absolute;right:0;top:0}.filepond--panel-bottom,.filepond--panel-top{height:.5em}.filepond--panel-top{border-bottom:none!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.filepond--panel-top:after{background-color:inherit;bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.filepond--panel-bottom,.filepond--panel-center{backface-visibility:hidden;transform:translate3d(0,.5em,0);transform-origin:left top;will-change:transform}.filepond--panel-bottom{border-top:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.filepond--panel-bottom:before{background-color:inherit;content:"";height:2px;left:0;position:absolute;right:0;top:-1px}.filepond--panel-center{border-bottom:none!important;border-radius:0!important;border-top:none!important;height:100px!important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{color:#fff;height:1.25em;margin:0;pointer-events:none;position:static;width:1.25em;will-change:transform,opacity}.filepond--progress-indicator svg{height:100%;transform-box:fill-box;vertical-align:top;width:100%}.filepond--progress-indicator path{fill:none;stroke:currentColor}.filepond--list-scroller{z-index:6}.filepond--drop-label{z-index:5}.filepond--drip{z-index:3}.filepond--root>.filepond--panel{z-index:2}.filepond--browser{z-index:1}.filepond--root{box-sizing:border-box;contain:layout style size;direction:ltr;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;font-weight:450;line-height:normal;margin-bottom:1em;position:relative;text-align:left;text-rendering:optimizeLegibility}.filepond--root *{box-sizing:inherit;line-height:inherit}.filepond--root :not(text){font-size:inherit}.filepond--root[data-disabled]{pointer-events:none}.filepond--root[data-disabled] .filepond--list-scroller{pointer-events:all}.filepond--root[data-disabled] .filepond--list{pointer-events:none}.filepond--root .filepond--drop-label{min-height:4.75em}.filepond--root .filepond--list-scroller{margin-bottom:1em;margin-top:1em}.filepond--root .filepond--credits{bottom:-14px;color:inherit;font-size:11px;line-height:.85;opacity:.175;position:absolute;right:0;text-decoration:none;z-index:3}.filepond--root .filepond--credits[style]{bottom:auto;margin-top:14px;top:0}.filepond--action-edit-item.filepond--action-edit-item{height:2em;padding:.1875em;width:2em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=center]{margin-left:-.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom]{margin-bottom:-.1875em}.filepond--action-edit-item-alt{background:transparent;border:none;color:inherit;font-family:inherit;line-height:inherit;margin:0 0 0 .25em;outline:none;padding:0;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{height:1.3125em;width:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1!important;visibility:visible!important}.filepond--image-preview-markup{left:0;position:absolute;top:0}.filepond--image-preview-wrapper{z-index:2}.filepond--image-preview-overlay{display:block;left:0;margin:0;max-height:7rem;min-height:5rem;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.filepond--image-preview-overlay svg{color:inherit;height:auto;max-height:inherit;width:100%}.filepond--image-preview-overlay-idle{color:#282828d9;mix-blend-mode:multiply}.filepond--image-preview-overlay-success{color:#369763;mix-blend-mode:normal}.filepond--image-preview-overlay-failure{color:#c44e47;mix-blend-mode:normal}@supports (-webkit-marquee-repetition:infinite) and ((-o-object-fit:fill) or (object-fit:fill)){.filepond--image-preview-overlay-idle{mix-blend-mode:normal}}.filepond--image-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--image-preview{align-items:center;background:#222;display:flex;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;will-change:transform,opacity;z-index:1}.filepond--image-clip{margin:0 auto;overflow:hidden;position:relative}.filepond--image-clip[data-transparency-indicator=grid] canvas,.filepond--image-clip[data-transparency-indicator=grid] img{background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0h50v50H0M50 50h50v50H50'/%3E%3C/svg%3E");background-size:1.25em 1.25em}.filepond--image-bitmap,.filepond--image-vector{left:0;position:absolute;top:0;will-change:transform}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview-wrapper{border-radius:0}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview{align-items:center;display:flex;height:100%;justify-content:center}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-wrapper{border-radius:99999rem}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-overlay{bottom:0;top:auto;transform:scaleY(-1)}.filepond--root[data-style-panel-layout~=circle] .filepond--file .filepond--file-action-button[data-align*=bottom]:not([data-align*=center]){margin-bottom:.325em}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=left]{left:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=right]{right:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=left],.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=right]{margin-bottom:.5125em}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center]{margin-bottom:.1875em;margin-left:.1875em;margin-top:0}.filepond--media-preview audio{display:none}.filepond--media-preview .audioplayer{margin:2.3em auto auto;width:calc(100% - 1.4em)}.filepond--media-preview .playpausebtn{background-position:50%;background-repeat:no-repeat;border:none;border-radius:25px;cursor:pointer;float:left;height:25px;margin-right:.3em;margin-top:.3em;outline:none;width:25px}.filepond--media-preview .playpausebtn:hover{background-color:#00000080}.filepond--media-preview .play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAyElEQVQ4T9XUsWoCQRRG4XPaFL5SfIy8gKYKBCysrax8Ahs7qzQ2qVIFOwsrsbEWLEK6EBFGBrIQhN2d3dnGgalm+Jh7789Ix8uOPe4YDCH0gZ66atKW0pJDCE/AEngDXtRjCpwCRucbGANzNVTBqWBhfAJDdV+GNgWj8wtM41bPt3AbsDB2f69d/0dzwC0wUDe54A8wAWbqJbfkD+BZPeQO5QsYqYu6LKb0MIb7VT3VYfG8CnwEHtT3FKi4c8e/TZMyk3LYFrwCgMdHFbRDKS8AAAAASUVORK5CYII=)}.filepond--media-preview .pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+2UsQkCURBE30PLMbAMMResQrAPsQ0TK9AqDKxGZeTLD74aGNwlhzfZssvADDMrPcOe+RggYZIJcG2s2KinMidZAvu6u6uzT8u+JCeZArfmcKUeK+EaONTdQy23bxgJX8aPHvIHsSnVuzTx36rn2pQFsGuqN//ZlK7vbIDvq6vkJ9yteBXzecYbAAAAAElFTkSuQmCC)}.filepond--media-preview .timeline{background:hsla(0,0%,100%,.3);border-radius:15px;float:left;height:3px;margin-top:1em;width:calc(100% - 2.5em)}.filepond--media-preview .playhead{background:#fff;border-radius:50%;height:13px;margin-top:-5px;width:13px}.filepond--media-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;pointer-events:auto;position:absolute;right:0;top:0}.filepond--media-preview-wrapper:before{background:linear-gradient(180deg,#000 0,transparent);content:" ";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000",endColorstr="#00000000",GradientType=0);height:2em;position:absolute;width:100%;z-index:3}.filepond--media-preview{display:block;height:100%;position:relative;transform-origin:center center;width:100%;will-change:transform,opacity;z-index:1}.filepond--media-preview audio,.filepond--media-preview video{width:100%;will-change:transform}.filepond--root{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:0}.filepond--root:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.05)}.filepond--root[data-disabled=disabled]{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.filepond--root[data-disabled=disabled]:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1);background-color:transparent}.filepond--panel-root{background-color:transparent}.filepond--drop-label label{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;padding:.75rem!important}.filepond--drop-label label:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.filepond--label-action{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity));font-weight:500;text-decoration-line:none;transition-duration:75ms;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)}.filepond--label-action:hover{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--label-action:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.filepond--label-action:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--drip-blob{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.filepond--drip-blob:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.filepond--root[data-style-panel-layout=grid] .filepond--item{display:inline;width:calc(50% - .5rem)}@media (min-width:1024px){.filepond--root[data-style-panel-layout=grid] .filepond--item{width:calc(33.33% - .5rem)}}.filepond--download-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--download-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--download-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--open-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--open-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--open-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--file-action-button.filepond--action-edit-item{background-color:rgba(0,0,0,.5)}.cropper-drag-box.cropper-crop.cropper-modal{background-color:rgba(var(--gray-100),.5);opacity:1}.cropper-drag-box.cropper-crop.cropper-modal:is(.dark *){background-color:rgba(var(--gray-900),.8)}.fi-fo-file-upload-circle-cropper .cropper-face,.fi-fo-file-upload-circle-cropper .cropper-view-box{border-radius:50%}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{inset:-50px 0 0;overflow:hidden;position:absolute}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{inset:0;position:absolute;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;height:auto;inset:50px 0 0;position:fixed!important;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,hsla(0,0%,100%,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"\25b2"}.editor-toolbar button.heading-smaller:after{content:"\25bc"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{line-height:1.2;margin-bottom:.5rem}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px #0003;display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}:root{--color-cm-red:#991b1b;--color-cm-orange:#9a3412;--color-cm-amber:#92400e;--color-cm-yellow:#854d0e;--color-cm-lime:#3f6212;--color-cm-green:#166534;--color-cm-emerald:#065f46;--color-cm-teal:#115e59;--color-cm-cyan:#155e75;--color-cm-sky:#075985;--color-cm-blue:#1e40af;--color-cm-indigo:#3730a3;--color-cm-violet:#5b21b6;--color-cm-purple:#6b21a8;--color-cm-fuchsia:#86198f;--color-cm-pink:#9d174d;--color-cm-rose:#9f1239;--color-cm-gray:#18181b;--color-cm-gray-muted:#71717a;--color-cm-gray-background:#e4e4e7}.dark{--color-cm-red:#f87171;--color-cm-orange:#fb923c;--color-cm-amber:#fbbf24;--color-cm-yellow:#facc15;--color-cm-lime:#a3e635;--color-cm-green:#4ade80;--color-cm-emerald:#4ade80;--color-cm-teal:#2dd4bf;--color-cm-cyan:#22d3ee;--color-cm-sky:#38bdf8;--color-cm-blue:#60a5fa;--color-cm-indigo:#818cf8;--color-cm-violet:#a78bfa;--color-cm-purple:#c084fc;--color-cm-fuchsia:#e879f9;--color-cm-pink:#f472b6;--color-cm-rose:#fb7185;--color-cm-gray:#fafafa;--color-cm-gray-muted:#a1a1aa;--color-cm-gray-background:#52525b}.cm-s-easymde .cm-comment{background-color:transparent;color:var(--color-cm-gray-muted)}.EasyMDEContainer .CodeMirror-cursor{border-color:currentColor}.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext{filter:invert(100%)}.EasyMDEContainer .cm-s-easymde .cm-keyword{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-atom{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-number{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-def{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable{color:var(--color-cm-yellow)}.EasyMDEContainer .cm-s-easymde .cm-variable-2{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable-3{color:var(--color-cm-emerald)}.EasyMDEContainer .cm-s-easymde .cm-operator,.EasyMDEContainer .cm-s-easymde .cm-property{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-string,.EasyMDEContainer .cm-s-easymde .cm-string-2{color:var(--color-cm-rose)}.EasyMDEContainer .cm-s-easymde .cm-meta{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-error{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-qualifier{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-builtin{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-bracket{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-hr{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote{color:var(--color-cm-sky)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote+.cm-quote{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-list,.EasyMDEContainer .cm-s-easymde .cm-formatting-list+.cm-variable-2,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-variable-2{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-link{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-amber)}.EasyMDEContainer .cm-s-easymde .cm-attribute+.cm-string{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-formatting-code+.cm-comment:not(.cm-formatting-code){background-color:var(--color-cm-gray-background);color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-header-1{font-size:1.875rem;line-height:2.25rem}.EasyMDEContainer .cm-s-easymde .cm-header-2{font-size:1.5rem;line-height:2rem}.EasyMDEContainer .cm-s-easymde .cm-header-3{font-size:1.25rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-4{font-size:1.125rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-5{font-size:1rem;line-height:1.5rem}.EasyMDEContainer .cm-s-easymde .cm-header-6{font-size:.875rem;line-height:1.25rem}.EasyMDEContainer .cm-s-easymde .cm-comment{background-image:none}.EasyMDEContainer .CodeMirror,.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-comment{background-color:transparent;color:inherit}.EasyMDEContainer .CodeMirror{border-style:none;padding:.375rem .75rem}.EasyMDEContainer .CodeMirror-scroll{height:auto}.EasyMDEContainer .editor-toolbar{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity));border-radius:0;border-width:0 0 1px;-moz-column-gap:.25rem;column-gap:.25rem;display:flex;overflow-x:auto;padding:.5rem .625rem}.EasyMDEContainer .editor-toolbar:is(.dark *){border-color:hsla(0,0%,100%,.1)}.EasyMDEContainer .editor-toolbar button{border-radius:.5rem;border-style:none;cursor:pointer;display:grid;height:2rem;padding:0;place-content:center;transition-duration:75ms;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);width:2rem}.EasyMDEContainer .editor-toolbar button:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:hover:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:focus-visible:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button.active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button.active:is(.dark *){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:before{--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity));display:block;height:1rem;width:1rem}.EasyMDEContainer .editor-toolbar button:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:before{content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.EasyMDEContainer .editor-toolbar button.active:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button.active:is(.dark *):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar .separator{border-style:none;margin:0!important;width:.25rem}.EasyMDEContainer .editor-toolbar .bold:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .italic:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .strikethrough:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .link:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .heading:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .quote:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .code:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .unordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .ordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .table:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .upload-image:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .undo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .redo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-statusbar{display:none}.fi-fo-rich-editor trix-toolbar .trix-dialogs{position:relative}.fi-fo-rich-editor trix-toolbar .trix-dialog{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.5rem;bottom:auto;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);left:0;padding:.5rem;position:absolute;right:0;top:1rem}.fi-fo-rich-editor trix-toolbar .trix-dialog:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields{display:flex;flex-direction:column;gap:.5rem;width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group{display:flex;gap:.5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-style:none;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--gray-950),var(--tw-text-opacity));display:block;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:.75rem;padding-top:.375rem;padding-inline-start:.75rem;transition-duration:75ms;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);width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *){--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:hsla(0,0%,100%,.2);background-color:rgba(var(--gray-700),var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}@media (min-width:640px){.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{font-size:.875rem;line-height:1.5rem}}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button{--tw-bg-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity));background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.75rem;line-height:1rem;padding:.125rem .5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button:is(.dark *){--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-600),var(--tw-ring-opacity));background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-editor:empty:before{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:is(.dark *):before{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:before{content:attr(placeholder)}.fi-fo-rich-editor trix-editor.prose :where(ol):not(:where([class~=not-prose] *)),.fi-fo-rich-editor trix-editor.prose :where(ul):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:1.625em!important}.fi-fo-rich-editor trix-editor.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:.375em!important}select:not(.choices){background-image:url("data:image/svg+xml;charset=utf-8,%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 8 4 4 4-4'/%3E%3C/svg%3E")}[dir=rtl] select{background-position:left .5rem center!important}.choices{outline:2px solid transparent;outline-offset:2px;position:relative}.choices [hidden]{display:none!important}.choices[data-type*=select-one] .has-no-choices{display:none}.choices[data-type*=select-one] .choices__input{display:block;margin:0;width:100%}.choices__inner{background-repeat:no-repeat;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:2rem;padding-top:.375rem;padding-inline-start:.75rem}@media (min-width:640px){.choices__inner{font-size:.875rem;line-height:1.5rem}}.choices__inner{background-image:url("data:image/svg+xml;charset=utf-8,%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 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-size:1.5em 1.5em}.choices.is-disabled .choices__inner{cursor:default}[dir=rtl] .choices__inner{background-position:left .5rem center}.choices__list--single{display:inline-block}.choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.choices__list--single .choices__item:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--multiple{display:flex;flex-wrap:wrap;gap:.375rem}.choices__list--multiple:not(:empty){margin-bottom:.25rem;margin-left:-.25rem;margin-right:-.25rem;padding-bottom:.125rem;padding-top:.125rem}.choices__list--multiple .choices__item{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:rgba(var(--primary-600),0.1);align-items:center;background-color:rgba(var(--primary-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--primary-600),var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;line-height:1rem;padding:.25rem .5rem;word-break:break-all}.choices__list--multiple .choices__item:is(.dark *){--tw-text-opacity:1;--tw-ring-color:rgba(var(--primary-400),0.3);background-color:rgba(var(--primary-400),.1);color:rgba(var(--primary-400),var(--tw-text-opacity))}.choices__list--dropdown,.choices__list[aria-expanded]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--gray-950),0.05);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:none;font-size:.875rem;line-height:1.25rem;margin-top:.5rem;overflow:hidden;overflow-wrap:break-word;position:absolute;top:100%;width:100%;will-change:visibility;z-index:10}.choices__list--dropdown:is(.dark *),.choices__list[aria-expanded]:is(.dark *){--tw-bg-opacity:1;--tw-ring-color:hsla(0,0%,100%,.1);background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{display:block;padding:.25rem}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{max-height:15rem;overflow:auto;will-change:scroll-position}.choices__item--choice{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:.5rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__item--choice:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable{--tw-text-opacity:1;border-radius:.375rem;color:rgba(var(--gray-950),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted:is(.dark *),.choices__list[aria-expanded] .choices__item--selectable.is-highlighted:is(.dark *){background-color:hsla(0,0%,100%,.05)}.choices__item{cursor:default}.choices__item--disabled{pointer-events:none}.choices__item--disabled:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__item--disabled:disabled:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices.is-disabled .choices__placeholder.choices__item,.choices__placeholder.choices__item{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity));cursor:default}.choices.is-disabled .choices__placeholder.choices__item:is(.dark *),.choices__placeholder.choices__item:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__button{background-color:transparent;background-position:50%;background-repeat:no-repeat;border-width:0;outline:2px solid transparent;outline-offset:2px;text-indent:-9999px}.choices[data-type*=select-one] .choices__button{height:1rem;inset-inline-end:0;margin-inline-end:2.25rem;opacity:.5;padding:0;position:absolute;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}.choices[data-type*=select-one] .choices__button:is(.dark *){opacity:.4}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em;top:calc(50% - .5714em)}.dark .choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button{height:1rem;opacity:.5;width:1rem}.choices[data-type*=select-multiple] .choices__button:is(.dark *){opacity:.4}.choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em}.dark .choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button:focus-visible,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus-visible,.choices[data-type*=select-one] .choices__button:hover{opacity:.7}.choices[data-type*=select-multiple] .choices__button:focus-visible:is(.dark *),.choices[data-type*=select-multiple] .choices__button:hover:is(.dark *),.choices[data-type*=select-one] .choices__button:focus-visible:is(.dark *),.choices[data-type*=select-one] .choices__button:hover:is(.dark *){opacity:.6}.choices.is-disabled .choices__button,.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices__input{--tw-text-opacity:1;background-color:transparent!important;border-style:none;color:rgba(var(--gray-950),var(--tw-text-opacity));font-size:1rem!important;line-height:1.5rem!important;padding:0!important;transition-duration:75ms;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)}.choices__input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.choices__input:disabled{--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-500),1);color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__input:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__input:disabled:is(.dark *){--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-400),1);color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.choices__input{font-size:.875rem!important;line-height:1.5rem}}.choices__list--dropdown .choices__input{padding:.5rem!important}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;height:0;width:0}.choices__group{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:1rem .5rem .5rem}.choices__group:first-child{padding-top:.5rem}.choices__group:is(.dark *){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator{opacity:0}/*! Bundled license information: cropperjs/dist/cropper.min.css: (*! @@ -13,7 +13,7 @@ cropperjs/dist/cropper.min.css: filepond/dist/filepond.min.css: (*! - * FilePond 4.30.6 + * FilePond 4.31.1 * Licensed under MIT, https://opensource.org/licenses/MIT/ * Please visit https://pqina.nl/filepond/ for details. *) diff --git a/public/js/filament-monaco-editor/filament-monaco-editor-scripts.js b/public/js/filament-monaco-editor/filament-monaco-editor-scripts.js new file mode 100644 index 000000000..e69de29bb diff --git a/public/js/filament/filament/echo.js b/public/js/filament/filament/echo.js index c039aea73..f1a9a28c7 100644 --- a/public/js/filament/filament/echo.js +++ b/public/js/filament/filament/echo.js @@ -1,5 +1,5 @@ -(()=>{var ki=Object.create;var he=Object.defineProperty;var Si=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames;var Ti=Object.getPrototypeOf,Pi=Object.prototype.hasOwnProperty;var xi=(l,h)=>()=>(h||l((h={exports:{}}).exports,h),h.exports);var Oi=(l,h,a,c)=>{if(h&&typeof h=="object"||typeof h=="function")for(let s of Ci(h))!Pi.call(l,s)&&s!==a&&he(l,s,{get:()=>h[s],enumerable:!(c=Si(h,s))||c.enumerable});return l};var Ai=(l,h,a)=>(a=l!=null?ki(Ti(l)):{},Oi(h||!l||!l.__esModule?he(a,"default",{value:l,enumerable:!0}):a,l));var _e=xi((vt,It)=>{(function(h,a){typeof vt=="object"&&typeof It=="object"?It.exports=a():typeof define=="function"&&define.amd?define([],a):typeof vt=="object"?vt.Pusher=a():h.Pusher=a()})(window,function(){return function(l){var h={};function a(c){if(h[c])return h[c].exports;var s=h[c]={i:c,l:!1,exports:{}};return l[c].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=l,a.c=h,a.d=function(c,s,f){a.o(c,s)||Object.defineProperty(c,s,{enumerable:!0,get:f})},a.r=function(c){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})},a.t=function(c,s){if(s&1&&(c=a(c)),s&8||s&4&&typeof c=="object"&&c&&c.__esModule)return c;var f=Object.create(null);if(a.r(f),Object.defineProperty(f,"default",{enumerable:!0,value:c}),s&2&&typeof c!="string")for(var d in c)a.d(f,d,function(N){return c[N]}.bind(null,d));return f},a.n=function(c){var s=c&&c.__esModule?function(){return c.default}:function(){return c};return a.d(s,"a",s),s},a.o=function(c,s){return Object.prototype.hasOwnProperty.call(c,s)},a.p="",a(a.s=2)}([function(l,h,a){"use strict";var c=this&&this.__extends||function(){var m=function(v,y){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,O){w.__proto__=O}||function(w,O){for(var I in O)O.hasOwnProperty(I)&&(w[I]=O[I])},m(v,y)};return function(v,y){m(v,y);function w(){this.constructor=v}v.prototype=y===null?Object.create(y):(w.prototype=y.prototype,new w)}}();Object.defineProperty(h,"__esModule",{value:!0});var s=256,f=function(){function m(v){v===void 0&&(v="="),this._paddingCharacter=v}return m.prototype.encodedLength=function(v){return this._paddingCharacter?(v+2)/3*4|0:(v*8+5)/6|0},m.prototype.encode=function(v){for(var y="",w=0;w>>3*6&63),y+=this._encodeByte(O>>>2*6&63),y+=this._encodeByte(O>>>1*6&63),y+=this._encodeByte(O>>>0*6&63)}var I=v.length-w;if(I>0){var O=v[w]<<16|(I===2?v[w+1]<<8:0);y+=this._encodeByte(O>>>3*6&63),y+=this._encodeByte(O>>>2*6&63),I===2?y+=this._encodeByte(O>>>1*6&63):y+=this._paddingCharacter||"",y+=this._paddingCharacter||""}return y},m.prototype.maxDecodedLength=function(v){return this._paddingCharacter?v/4*3|0:(v*6+7)/8|0},m.prototype.decodedLength=function(v){return this.maxDecodedLength(v.length-this._getPaddingLength(v))},m.prototype.decode=function(v){if(v.length===0)return new Uint8Array(0);for(var y=this._getPaddingLength(v),w=v.length-y,O=new Uint8Array(this.maxDecodedLength(w)),I=0,q=0,M=0,J=0,F=0,z=0,B=0;q>>4,O[I++]=F<<4|z>>>2,O[I++]=z<<6|B,M|=J&s,M|=F&s,M|=z&s,M|=B&s;if(q>>4,M|=J&s,M|=F&s),q>>2,M|=z&s),q>>8&0-65-26+97,y+=51-v>>>8&26-97-52+48,y+=61-v>>>8&52-48-62+43,y+=62-v>>>8&62-43-63+47,String.fromCharCode(y)},m.prototype._decodeChar=function(v){var y=s;return y+=(42-v&v-44)>>>8&-s+v-43+62,y+=(46-v&v-48)>>>8&-s+v-47+63,y+=(47-v&v-58)>>>8&-s+v-48+52,y+=(64-v&v-91)>>>8&-s+v-65+0,y+=(96-v&v-123)>>>8&-s+v-97+26,y},m.prototype._getPaddingLength=function(v){var y=0;if(this._paddingCharacter){for(var w=v.length-1;w>=0&&v[w]===this._paddingCharacter;w--)y++;if(v.length<4||y>2)throw new Error("Base64Coder: incorrect padding")}return y},m}();h.Coder=f;var d=new f;function N(m){return d.encode(m)}h.encode=N;function P(m){return d.decode(m)}h.decode=P;var T=function(m){c(v,m);function v(){return m!==null&&m.apply(this,arguments)||this}return v.prototype._encodeByte=function(y){var w=y;return w+=65,w+=25-y>>>8&0-65-26+97,w+=51-y>>>8&26-97-52+48,w+=61-y>>>8&52-48-62+45,w+=62-y>>>8&62-45-63+95,String.fromCharCode(w)},v.prototype._decodeChar=function(y){var w=s;return w+=(44-y&y-46)>>>8&-s+y-45+62,w+=(94-y&y-96)>>>8&-s+y-95+63,w+=(47-y&y-58)>>>8&-s+y-48+52,w+=(64-y&y-91)>>>8&-s+y-65+0,w+=(96-y&y-123)>>>8&-s+y-97+26,w},v}(f);h.URLSafeCoder=T;var S=new T;function C(m){return S.encode(m)}h.encodeURLSafe=C;function x(m){return S.decode(m)}h.decodeURLSafe=x,h.encodedLength=function(m){return d.encodedLength(m)},h.maxDecodedLength=function(m){return d.maxDecodedLength(m)},h.decodedLength=function(m){return d.decodedLength(m)}},function(l,h,a){"use strict";Object.defineProperty(h,"__esModule",{value:!0});var c="utf8: invalid string",s="utf8: invalid source encoding";function f(P){for(var T=new Uint8Array(d(P)),S=0,C=0;C>6,T[S++]=128|x&63):x<55296?(T[S++]=224|x>>12,T[S++]=128|x>>6&63,T[S++]=128|x&63):(C++,x=(x&1023)<<10,x|=P.charCodeAt(C)&1023,x+=65536,T[S++]=240|x>>18,T[S++]=128|x>>12&63,T[S++]=128|x>>6&63,T[S++]=128|x&63)}return T}h.encode=f;function d(P){for(var T=0,S=0;S=P.length-1)throw new Error(c);S++,T+=4}else throw new Error(c)}return T}h.encodedLength=d;function N(P){for(var T=[],S=0;S=P.length)throw new Error(s);var m=P[++S];if((m&192)!==128)throw new Error(s);C=(C&31)<<6|m&63,x=128}else if(C<240){if(S>=P.length-1)throw new Error(s);var m=P[++S],v=P[++S];if((m&192)!==128||(v&192)!==128)throw new Error(s);C=(C&15)<<12|(m&63)<<6|v&63,x=2048}else if(C<248){if(S>=P.length-2)throw new Error(s);var m=P[++S],v=P[++S],y=P[++S];if((m&192)!==128||(v&192)!==128||(y&192)!==128)throw new Error(s);C=(C&15)<<18|(m&63)<<12|(v&63)<<6|y&63,x=65536}else throw new Error(s);if(C=55296&&C<=57343)throw new Error(s);if(C>=65536){if(C>1114111)throw new Error(s);C-=65536,T.push(String.fromCharCode(55296|C>>10)),C=56320|C&1023}}T.push(String.fromCharCode(C))}return T.join("")}h.decode=N},function(l,h,a){l.exports=a(3).default},function(l,h,a){"use strict";a.r(h);var c=function(){function e(t,n){this.lastId=0,this.prefix=t,this.name=n}return e.prototype.create=function(t){this.lastId++;var n=this.lastId,r=this.prefix+n,i=this.name+"["+n+"]",o=!1,u=function(){o||(t.apply(null,arguments),o=!0)};return this[n]=u,{number:n,id:r,name:i,callback:u}},e.prototype.remove=function(t){delete this[t.number]},e}(),s=new c("_pusher_script_","Pusher.ScriptReceivers"),f={VERSION:"7.6.0",PROTOCOL:7,wsPort:80,wssPort:443,wsPath:"",httpHost:"sockjs.pusher.com",httpPort:80,httpsPort:443,httpPath:"/pusher",stats_host:"stats.pusher.com",authEndpoint:"/pusher/auth",authTransport:"ajax",activityTimeout:12e4,pongTimeout:3e4,unavailableTimeout:1e4,cluster:"mt1",userAuthentication:{endpoint:"/pusher/user-auth",transport:"ajax"},channelAuthorization:{endpoint:"/pusher/auth",transport:"ajax"},cdn_http:"http://js.pusher.com",cdn_https:"https://js.pusher.com",dependency_suffix:""},d=f,N=function(){function e(t){this.options=t,this.receivers=t.receivers||s,this.loading={}}return e.prototype.load=function(t,n,r){var i=this;if(i.loading[t]&&i.loading[t].length>0)i.loading[t].push(r);else{i.loading[t]=[r];var o=b.createScriptRequest(i.getPath(t,n)),u=i.receivers.create(function(p){if(i.receivers.remove(u),i.loading[t]){var _=i.loading[t];delete i.loading[t];for(var g=function(L){L||o.cleanup()},k=0;k<_.length;k++)_[k](p,g)}});o.send(u)}},e.prototype.getRoot=function(t){var n,r=b.getDocument().location.protocol;return t&&t.useTLS||r==="https:"?n=this.options.cdn_https:n=this.options.cdn_http,n.replace(/\/*$/,"")+"/"+this.options.version},e.prototype.getPath=function(t,n){return this.getRoot(n)+"/"+t+this.options.suffix+".js"},e}(),P=N,T=new c("_pusher_dependencies","Pusher.DependenciesReceivers"),S=new P({cdn_http:d.cdn_http,cdn_https:d.cdn_https,version:d.VERSION,suffix:d.dependency_suffix,receivers:T}),C={baseUrl:"https://pusher.com",urls:{authenticationEndpoint:{path:"/docs/channels/server_api/authenticating_users"},authorizationEndpoint:{path:"/docs/channels/server_api/authorizing-users/"},javascriptQuickStart:{path:"/docs/javascript_quick_start"},triggeringClientEvents:{path:"/docs/client_api_guide/client_events#trigger-events"},encryptedChannelSupport:{fullUrl:"https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support"}}},x=function(e){var t="See:",n=C.urls[e];if(!n)return"";var r;return n.fullUrl?r=n.fullUrl:n.path&&(r=C.baseUrl+n.path),r?t+" "+r:""},m={buildLogSuffix:x},v;(function(e){e.UserAuthentication="user-authentication",e.ChannelAuthorization="channel-authorization"})(v||(v={}));var y=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),w=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),O=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),I=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),q=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),M=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),J=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),F=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),z=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),B=function(e){y(t,e);function t(n,r){var i=this.constructor,o=e.call(this,r)||this;return o.status=n,Object.setPrototypeOf(o,i.prototype),o}return t}(Error),be=function(e,t,n,r,i){var o=b.createXHR();o.open("POST",n.endpoint,!0),o.setRequestHeader("Content-Type","application/x-www-form-urlencoded");for(var u in n.headers)o.setRequestHeader(u,n.headers[u]);if(n.headersProvider!=null){var p=n.headersProvider();for(var u in p)o.setRequestHeader(u,p[u])}return o.onreadystatechange=function(){if(o.readyState===4)if(o.status===200){var _=void 0,g=!1;try{_=JSON.parse(o.responseText),g=!0}catch{i(new B(200,"JSON returned from "+r.toString()+" endpoint was invalid, yet status code was 200. Data was: "+o.responseText),null)}g&&i(null,_)}else{var k="";switch(r){case v.UserAuthentication:k=m.buildLogSuffix("authenticationEndpoint");break;case v.ChannelAuthorization:k="Clients must be authorized to join private or presence channels. "+m.buildLogSuffix("authorizationEndpoint");break}i(new B(o.status,"Unable to retrieve auth string from "+r.toString()+" endpoint - "+("received status: "+o.status+" from "+n.endpoint+". "+k)),null)}},o.send(t),o},we=be;function ke(e){return Oe(Pe(e))}for(var nt=String.fromCharCode,Z="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Se={},at=0,Ce=Z.length;at>>6)+nt(128|t&63):nt(224|t>>>12&15)+nt(128|t>>>6&63)+nt(128|t&63)},Pe=function(e){return e.replace(/[^\x00-\x7F]/g,Te)},xe=function(e){var t=[0,2,1][e.length%3],n=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0),r=[Z.charAt(n>>>18),Z.charAt(n>>>12&63),t>=2?"=":Z.charAt(n>>>6&63),t>=1?"=":Z.charAt(n&63)];return r.join("")},Oe=window.btoa||function(e){return e.replace(/[\s\S]{1,3}/g,xe)},Ae=function(){function e(t,n,r,i){var o=this;this.clear=n,this.timer=t(function(){o.timer&&(o.timer=i(o.timer))},r)}return e.prototype.isRunning=function(){return this.timer!==null},e.prototype.ensureAborted=function(){this.timer&&(this.clear(this.timer),this.timer=null)},e}(),jt=Ae,Nt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();function Le(e){window.clearTimeout(e)}function Ee(e){window.clearInterval(e)}var Q=function(e){Nt(t,e);function t(n,r){return e.call(this,setTimeout,Le,n,function(i){return r(),null})||this}return t}(jt),Re=function(e){Nt(t,e);function t(n,r){return e.call(this,setInterval,Ee,n,function(i){return r(),i})||this}return t}(jt),Ie={now:function(){return Date.now?Date.now():new Date().valueOf()},defer:function(e){return new Q(0,e)},method:function(e){for(var t=[],n=1;n0)for(var i=0;i=1002&&e.code<=1004?"backoff":null:e.code===4e3?"tls_only":e.code<4100?"refused":e.code<4200?"backoff":e.code<4300?"retry":"refused"},getCloseError:function(e){return e.code!==1e3&&e.code!==1001?{type:"PusherError",data:{code:e.code,message:e.reason||e.message}}:null}},K=Vt,kn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Sn=function(e){kn(t,e);function t(n,r){var i=e.call(this)||this;return i.id=n,i.transport=r,i.activityTimeout=r.activityTimeout,i.bindListeners(),i}return t.prototype.handlesActivityChecks=function(){return this.transport.handlesActivityChecks()},t.prototype.send=function(n){return this.transport.send(n)},t.prototype.send_event=function(n,r,i){var o={event:n,data:r};return i&&(o.channel=i),A.debug("Event sent",o),this.send(K.encodeMessage(o))},t.prototype.ping=function(){this.transport.supportsPing()?this.transport.ping():this.send_event("pusher:ping",{})},t.prototype.close=function(){this.transport.close()},t.prototype.bindListeners=function(){var n=this,r={message:function(o){var u;try{u=K.decodeMessage(o)}catch(p){n.emit("error",{type:"MessageParseError",error:p,data:o.data})}if(u!==void 0){switch(A.debug("Event recd",u),u.event){case"pusher:error":n.emit("error",{type:"PusherError",data:u.data});break;case"pusher:ping":n.emit("ping");break;case"pusher:pong":n.emit("pong");break}n.emit("message",u)}},activity:function(){n.emit("activity")},error:function(o){n.emit("error",o)},closed:function(o){i(),o&&o.code&&n.handleCloseEvent(o),n.transport=null,n.emit("closed")}},i=function(){W(r,function(o,u){n.transport.unbind(u,o)})};W(r,function(o,u){n.transport.bind(u,o)})},t.prototype.handleCloseEvent=function(n){var r=K.getCloseAction(n),i=K.getCloseError(n);i&&this.emit("error",i),r&&this.emit(r,{action:r,error:i})},t}(V),Cn=Sn,Tn=function(){function e(t,n){this.transport=t,this.callback=n,this.bindListeners()}return e.prototype.close=function(){this.unbindListeners(),this.transport.close()},e.prototype.bindListeners=function(){var t=this;this.onMessage=function(n){t.unbindListeners();var r;try{r=K.processHandshake(n)}catch(i){t.finish("error",{error:i}),t.transport.close();return}r.action==="connected"?t.finish("connected",{connection:new Cn(r.id,t.transport),activityTimeout:r.activityTimeout}):(t.finish(r.action,{error:r.error}),t.transport.close())},this.onClosed=function(n){t.unbindListeners();var r=K.getCloseAction(n)||"backoff",i=K.getCloseError(n);t.finish(r,{error:i})},this.transport.bind("message",this.onMessage),this.transport.bind("closed",this.onClosed)},e.prototype.unbindListeners=function(){this.transport.unbind("message",this.onMessage),this.transport.unbind("closed",this.onClosed)},e.prototype.finish=function(t,n){this.callback(U({transport:this.transport,action:t},n))},e}(),Pn=Tn,xn=function(){function e(t,n){this.timeline=t,this.options=n||{}}return e.prototype.send=function(t,n){this.timeline.isEmpty()||this.timeline.send(b.TimelineTransport.getAgent(this,t),n)},e}(),On=xn,An=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ln=function(e){An(t,e);function t(n,r){var i=e.call(this,function(o,u){A.debug("No callbacks on "+n+" for "+o)})||this;return i.name=n,i.pusher=r,i.subscribed=!1,i.subscriptionPending=!1,i.subscriptionCancelled=!1,i}return t.prototype.authorize=function(n,r){return r(null,{auth:""})},t.prototype.trigger=function(n,r){if(n.indexOf("client-")!==0)throw new w("Event '"+n+"' does not start with 'client-'");if(!this.subscribed){var i=m.buildLogSuffix("triggeringClientEvents");A.warn("Client event triggered before channel 'subscription_succeeded' event . "+i)}return this.pusher.send_event(n,r,this.name)},t.prototype.disconnect=function(){this.subscribed=!1,this.subscriptionPending=!1},t.prototype.handleEvent=function(n){var r=n.event,i=n.data;if(r==="pusher_internal:subscription_succeeded")this.handleSubscriptionSucceededEvent(n);else if(r==="pusher_internal:subscription_count")this.handleSubscriptionCountEvent(n);else if(r.indexOf("pusher_internal:")!==0){var o={};this.emit(r,i,o)}},t.prototype.handleSubscriptionSucceededEvent=function(n){this.subscriptionPending=!1,this.subscribed=!0,this.subscriptionCancelled?this.pusher.unsubscribe(this.name):this.emit("pusher:subscription_succeeded",n.data)},t.prototype.handleSubscriptionCountEvent=function(n){n.data.subscription_count&&(this.subscriptionCount=n.data.subscription_count),this.emit("pusher:subscription_count",n.data)},t.prototype.subscribe=function(){var n=this;this.subscribed||(this.subscriptionPending=!0,this.subscriptionCancelled=!1,this.authorize(this.pusher.connection.socket_id,function(r,i){r?(n.subscriptionPending=!1,A.error(r.toString()),n.emit("pusher:subscription_error",Object.assign({},{type:"AuthError",error:r.message},r instanceof B?{status:r.status}:{}))):n.pusher.send_event("pusher:subscribe",{auth:i.auth,channel_data:i.channel_data,channel:n.name})}))},t.prototype.unsubscribe=function(){this.subscribed=!1,this.pusher.send_event("pusher:unsubscribe",{channel:this.name})},t.prototype.cancelSubscription=function(){this.subscriptionCancelled=!0},t.prototype.reinstateSubscription=function(){this.subscriptionCancelled=!1},t}(V),mt=Ln,En=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Rn=function(e){En(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.authorize=function(n,r){return this.pusher.config.channelAuthorizer({channelName:this.name,socketId:n},r)},t}(mt),bt=Rn,In=function(){function e(){this.reset()}return e.prototype.get=function(t){return Object.prototype.hasOwnProperty.call(this.members,t)?{id:t,info:this.members[t]}:null},e.prototype.each=function(t){var n=this;W(this.members,function(r,i){t(n.get(i))})},e.prototype.setMyID=function(t){this.myID=t},e.prototype.onSubscription=function(t){this.members=t.presence.hash,this.count=t.presence.count,this.me=this.get(this.myID)},e.prototype.addMember=function(t){return this.get(t.user_id)===null&&this.count++,this.members[t.user_id]=t.user_info,this.get(t.user_id)},e.prototype.removeMember=function(t){var n=this.get(t.user_id);return n&&(delete this.members[t.user_id],this.count--),n},e.prototype.reset=function(){this.members={},this.count=0,this.myID=null,this.me=null},e}(),jn=In,Nn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),qn=function(e,t,n,r){function i(o){return o instanceof n?o:new n(function(u){u(o)})}return new(n||(n=Promise))(function(o,u){function p(k){try{g(r.next(k))}catch(L){u(L)}}function _(k){try{g(r.throw(k))}catch(L){u(L)}}function g(k){k.done?o(k.value):i(k.value).then(p,_)}g((r=r.apply(e,t||[])).next())})},Un=function(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,u;return u={next:p(0),throw:p(1),return:p(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function p(g){return function(k){return _([g,k])}}function _(g){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(o=g[0]&2?i.return:g[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,g[1])).done)return o;switch(i=0,o&&(g=[g[0]&2,o.value]),g[0]){case 0:case 1:o=g;break;case 4:return n.label++,{value:g[1],done:!1};case 5:n.label++,i=g[1],g=[0];continue;case 7:g=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(g[0]===6||g[0]===2)){n=0;continue}if(g[0]===3&&(!o||g[1]>o[0]&&g[1]0&&this.emit("connecting_in",Math.round(n/1e3)),this.retryTimer=new Q(n||0,function(){r.disconnectInternally(),r.connect()})},t.prototype.clearRetryTimer=function(){this.retryTimer&&(this.retryTimer.ensureAborted(),this.retryTimer=null)},t.prototype.setUnavailableTimer=function(){var n=this;this.unavailableTimer=new Q(this.options.unavailableTimeout,function(){n.updateState("unavailable")})},t.prototype.clearUnavailableTimer=function(){this.unavailableTimer&&this.unavailableTimer.ensureAborted()},t.prototype.sendActivityCheck=function(){var n=this;this.stopActivityCheck(),this.connection.ping(),this.activityTimer=new Q(this.options.pongTimeout,function(){n.timeline.error({pong_timed_out:n.options.pongTimeout}),n.retryIn(0)})},t.prototype.resetActivityCheck=function(){var n=this;this.stopActivityCheck(),this.connection&&!this.connection.handlesActivityChecks()&&(this.activityTimer=new Q(this.activityTimeout,function(){n.sendActivityCheck()}))},t.prototype.stopActivityCheck=function(){this.activityTimer&&this.activityTimer.ensureAborted()},t.prototype.buildConnectionCallbacks=function(n){var r=this;return U({},n,{message:function(i){r.resetActivityCheck(),r.emit("message",i)},ping:function(){r.send_event("pusher:pong",{})},activity:function(){r.resetActivityCheck()},error:function(i){r.emit("error",i)},closed:function(){r.abandonConnection(),r.shouldRetry()&&r.retryIn(1e3)}})},t.prototype.buildHandshakeCallbacks=function(n){var r=this;return U({},n,{connected:function(i){r.activityTimeout=Math.min(r.options.activityTimeout,i.activityTimeout,i.connection.activityTimeout||1/0),r.clearUnavailableTimer(),r.setConnection(i.connection),r.socket_id=r.connection.id,r.updateState("connected",{socket_id:r.socket_id})}})},t.prototype.buildErrorCallbacks=function(){var n=this,r=function(i){return function(o){o.error&&n.emit("error",{type:"WebSocketError",error:o.error}),i(o)}};return{tls_only:r(function(){n.usingTLS=!0,n.updateStrategy(),n.retryIn(0)}),refused:r(function(){n.disconnect()}),backoff:r(function(){n.retryIn(1e3)}),retry:r(function(){n.retryIn(0)})}},t.prototype.setConnection=function(n){this.connection=n;for(var r in this.connectionCallbacks)this.connection.bind(r,this.connectionCallbacks[r]);this.resetActivityCheck()},t.prototype.abandonConnection=function(){if(this.connection){this.stopActivityCheck();for(var n in this.connectionCallbacks)this.connection.unbind(n,this.connectionCallbacks[n]);var r=this.connection;return this.connection=null,r}},t.prototype.updateState=function(n,r){var i=this.state;if(this.state=n,i!==n){var o=n;o==="connected"&&(o+=" with new socket ID "+r.socket_id),A.debug("State changed",i+" -> "+o),this.timeline.info({state:n,params:r}),this.emit("state_change",{previous:i,current:n}),this.emit(n,r)}},t.prototype.shouldRetry=function(){return this.state==="connecting"||this.state==="connected"},t}(V),Wn=Jn,Vn=function(){function e(){this.channels={}}return e.prototype.add=function(t,n){return this.channels[t]||(this.channels[t]=Qn(t,n)),this.channels[t]},e.prototype.all=function(){return Ne(this.channels)},e.prototype.find=function(t){return this.channels[t]},e.prototype.remove=function(t){var n=this.channels[t];return delete this.channels[t],n},e.prototype.disconnect=function(){W(this.channels,function(t){t.disconnect()})},e}(),Gn=Vn;function Qn(e,t){if(e.indexOf("private-encrypted-")===0){if(t.config.nacl)return G.createEncryptedChannel(e,t,t.config.nacl);var n="Tried to subscribe to a private-encrypted- channel but no nacl implementation available",r=m.buildLogSuffix("encryptedChannelSupport");throw new J(n+". "+r)}else{if(e.indexOf("private-")===0)return G.createPrivateChannel(e,t);if(e.indexOf("presence-")===0)return G.createPresenceChannel(e,t);if(e.indexOf("#")===0)throw new O('Cannot create a channel with name "'+e+'".');return G.createChannel(e,t)}}var Kn={createChannels:function(){return new Gn},createConnectionManager:function(e,t){return new Wn(e,t)},createChannel:function(e,t){return new mt(e,t)},createPrivateChannel:function(e,t){return new bt(e,t)},createPresenceChannel:function(e,t){return new Hn(e,t)},createEncryptedChannel:function(e,t,n){return new Bn(e,t,n)},createTimelineSender:function(e,t){return new On(e,t)},createHandshake:function(e,t){return new Pn(e,t)},createAssistantToTheTransportManager:function(e,t,n){return new wn(e,t,n)}},G=Kn,Yn=function(){function e(t){this.options=t||{},this.livesLeft=this.options.lives||1/0}return e.prototype.getAssistant=function(t){return G.createAssistantToTheTransportManager(this,t,{minPingDelay:this.options.minPingDelay,maxPingDelay:this.options.maxPingDelay})},e.prototype.isAlive=function(){return this.livesLeft>0},e.prototype.reportDeath=function(){this.livesLeft-=1},e}(),Gt=Yn,$n=function(){function e(t,n){this.strategies=t,this.loop=!!n.loop,this.failFast=!!n.failFast,this.timeout=n.timeout,this.timeoutLimit=n.timeoutLimit}return e.prototype.isSupported=function(){return zt(this.strategies,j.method("isSupported"))},e.prototype.connect=function(t,n){var r=this,i=this.strategies,o=0,u=this.timeout,p=null,_=function(g,k){k?n(null,k):(o=o+1,r.loop&&(o=o%i.length),o0&&(o=new Q(r.timeout,function(){u.abort(),i(!0)})),u=t.connect(n,function(p,_){p&&o&&o.isRunning()&&!r.failFast||(o&&o.ensureAborted(),i(p,_))}),{abort:function(){o&&o.ensureAborted(),u.abort()},forceMinPriority:function(p){u.forceMinPriority(p)}}},e}(),Y=$n,Zn=function(){function e(t){this.strategies=t}return e.prototype.isSupported=function(){return zt(this.strategies,j.method("isSupported"))},e.prototype.connect=function(t,n){return tr(this.strategies,t,function(r,i){return function(o,u){if(i[r].error=o,o){er(i)&&n(!0);return}rt(i,function(p){p.forceMinPriority(u.transport.priority)}),n(null,u)}})},e}(),kt=Zn;function tr(e,t,n){var r=Dt(e,function(i,o,u,p){return i.connect(t,n(o,p))});return{abort:function(){rt(r,nr)},forceMinPriority:function(i){rt(r,function(o){o.forceMinPriority(i)})}}}function er(e){return De(e,function(t){return!!t.error})}function nr(e){!e.error&&!e.aborted&&(e.abort(),e.aborted=!0)}var rr=function(){function e(t,n,r){this.strategy=t,this.transports=n,this.ttl=r.ttl||1800*1e3,this.usingTLS=r.useTLS,this.timeline=r.timeline}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.usingTLS,i=or(r),o=[this.strategy];if(i&&i.timestamp+this.ttl>=j.now()){var u=this.transports[i.transport];u&&(this.timeline.info({cached:!0,transport:i.transport,latency:i.latency}),o.push(new Y([u],{timeout:i.latency*2+1e3,failFast:!0})))}var p=j.now(),_=o.pop().connect(t,function g(k,L){k?(Qt(r),o.length>0?(p=j.now(),_=o.pop().connect(t,g)):n(k)):(sr(r,L.transport.name,j.now()-p),n(null,L))});return{abort:function(){_.abort()},forceMinPriority:function(g){t=g,_&&_.forceMinPriority(g)}}},e}(),ir=rr;function St(e){return"pusherTransport"+(e?"TLS":"NonTLS")}function or(e){var t=b.getLocalStorage();if(t)try{var n=t[St(e)];if(n)return JSON.parse(n)}catch{Qt(e)}return null}function sr(e,t,n){var r=b.getLocalStorage();if(r)try{r[St(e)]=ct({timestamp:j.now(),transport:t,latency:n})}catch{}}function Qt(e){var t=b.getLocalStorage();if(t)try{delete t[St(e)]}catch{}}var ar=function(){function e(t,n){var r=n.delay;this.strategy=t,this.options={delay:r}}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.strategy,i,o=new Q(this.options.delay,function(){i=r.connect(t,n)});return{abort:function(){o.ensureAborted(),i&&i.abort()},forceMinPriority:function(u){t=u,i&&i.forceMinPriority(u)}}},e}(),ht=ar,cr=function(){function e(t,n,r){this.test=t,this.trueBranch=n,this.falseBranch=r}return e.prototype.isSupported=function(){var t=this.test()?this.trueBranch:this.falseBranch;return t.isSupported()},e.prototype.connect=function(t,n){var r=this.test()?this.trueBranch:this.falseBranch;return r.connect(t,n)},e}(),it=cr,ur=function(){function e(t){this.strategy=t}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.strategy.connect(t,function(i,o){o&&r.abort(),n(i,o)});return r},e}(),hr=ur;function ot(e){return function(){return e.isSupported()}}var lr=function(e,t,n){var r={};function i(ce,_i,mi,bi,wi){var ue=n(e,ce,_i,mi,bi,wi);return r[ce]=ue,ue}var o=Object.assign({},t,{hostNonTLS:e.wsHost+":"+e.wsPort,hostTLS:e.wsHost+":"+e.wssPort,httpPath:e.wsPath}),u=Object.assign({},o,{useTLS:!0}),p=Object.assign({},t,{hostNonTLS:e.httpHost+":"+e.httpPort,hostTLS:e.httpHost+":"+e.httpsPort,httpPath:e.httpPath}),_={loop:!0,timeout:15e3,timeoutLimit:6e4},g=new Gt({lives:2,minPingDelay:1e4,maxPingDelay:e.activityTimeout}),k=new Gt({lives:2,minPingDelay:1e4,maxPingDelay:e.activityTimeout}),L=i("ws","ws",3,o,g),X=i("wss","ws",3,u,g),pi=i("sockjs","sockjs",1,p),ne=i("xhr_streaming","xhr_streaming",1,p,k),di=i("xdr_streaming","xdr_streaming",1,p,k),re=i("xhr_polling","xhr_polling",1,p),vi=i("xdr_polling","xdr_polling",1,p),ie=new Y([L],_),yi=new Y([X],_),gi=new Y([pi],_),oe=new Y([new it(ot(ne),ne,di)],_),se=new Y([new it(ot(re),re,vi)],_),ae=new Y([new it(ot(oe),new kt([oe,new ht(se,{delay:4e3})]),se)],_),xt=new it(ot(ae),ae,gi),Ot;return t.useTLS?Ot=new kt([ie,new ht(xt,{delay:2e3})]):Ot=new kt([ie,new ht(yi,{delay:2e3}),new ht(xt,{delay:5e3})]),new ir(new hr(new it(ot(L),Ot,xt)),r,{ttl:18e5,timeline:t.timeline,useTLS:t.useTLS})},fr=lr,pr=function(){var e=this;e.timeline.info(e.buildTimelineMessage({transport:e.name+(e.options.useTLS?"s":"")})),e.hooks.isInitialized()?e.changeState("initialized"):e.hooks.file?(e.changeState("initializing"),S.load(e.hooks.file,{useTLS:e.options.useTLS},function(t,n){e.hooks.isInitialized()?(e.changeState("initialized"),n(!0)):(t&&e.onError(t),e.onClose(),n(!1))})):e.onClose()},dr={getRequest:function(e){var t=new window.XDomainRequest;return t.ontimeout=function(){e.emit("error",new I),e.close()},t.onerror=function(n){e.emit("error",n),e.close()},t.onprogress=function(){t.responseText&&t.responseText.length>0&&e.onChunk(200,t.responseText)},t.onload=function(){t.responseText&&t.responseText.length>0&&e.onChunk(200,t.responseText),e.emit("finished",200),e.close()},t},abortRequest:function(e){e.ontimeout=e.onerror=e.onprogress=e.onload=null,e.abort()}},vr=dr,yr=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),gr=256*1024,_r=function(e){yr(t,e);function t(n,r,i){var o=e.call(this)||this;return o.hooks=n,o.method=r,o.url=i,o}return t.prototype.start=function(n){var r=this;this.position=0,this.xhr=this.hooks.getRequest(this),this.unloader=function(){r.close()},b.addUnloadListener(this.unloader),this.xhr.open(this.method,this.url,!0),this.xhr.setRequestHeader&&this.xhr.setRequestHeader("Content-Type","application/json"),this.xhr.send(n)},t.prototype.close=function(){this.unloader&&(b.removeUnloadListener(this.unloader),this.unloader=null),this.xhr&&(this.hooks.abortRequest(this.xhr),this.xhr=null)},t.prototype.onChunk=function(n,r){for(;;){var i=this.advanceBuffer(r);if(i)this.emit("chunk",{status:n,data:i});else break}this.isBufferTooLong(r)&&this.emit("buffer_too_long")},t.prototype.advanceBuffer=function(n){var r=n.slice(this.position),i=r.indexOf(` -`);return i!==-1?(this.position+=i+1,r.slice(0,i)):null},t.prototype.isBufferTooLong=function(n){return this.position===n.length&&n.length>gr},t}(V),mr=_r,Ct;(function(e){e[e.CONNECTING=0]="CONNECTING",e[e.OPEN=1]="OPEN",e[e.CLOSED=3]="CLOSED"})(Ct||(Ct={}));var $=Ct,br=1,wr=function(){function e(t,n){this.hooks=t,this.session=Yt(1e3)+"/"+Tr(8),this.location=kr(n),this.readyState=$.CONNECTING,this.openStream()}return e.prototype.send=function(t){return this.sendRaw(JSON.stringify([t]))},e.prototype.ping=function(){this.hooks.sendHeartbeat(this)},e.prototype.close=function(t,n){this.onClose(t,n,!0)},e.prototype.sendRaw=function(t){if(this.readyState===$.OPEN)try{return b.createSocketRequest("POST",Kt(Sr(this.location,this.session))).start(t),!0}catch{return!1}else return!1},e.prototype.reconnect=function(){this.closeStream(),this.openStream()},e.prototype.onClose=function(t,n,r){this.closeStream(),this.readyState=$.CLOSED,this.onclose&&this.onclose({code:t,reason:n,wasClean:r})},e.prototype.onChunk=function(t){if(t.status===200){this.readyState===$.OPEN&&this.onActivity();var n,r=t.data.slice(0,1);switch(r){case"o":n=JSON.parse(t.data.slice(1)||"{}"),this.onOpen(n);break;case"a":n=JSON.parse(t.data.slice(1)||"[]");for(var i=0;i0&&e.onChunk(n.status,n.responseText);break;case 4:n.responseText&&n.responseText.length>0&&e.onChunk(n.status,n.responseText),e.emit("finished",n.status),e.close();break}},n},abortRequest:function(e){e.onreadystatechange=null,e.abort()}},Rr=Er,Ir={createStreamingSocket:function(e){return this.createSocket(Or,e)},createPollingSocket:function(e){return this.createSocket(Lr,e)},createSocket:function(e,t){return new Pr(e,t)},createXHR:function(e,t){return this.createRequest(Rr,e,t)},createRequest:function(e,t,n){return new mr(e,t,n)}},$t=Ir;$t.createXDR=function(e,t){return this.createRequest(vr,e,t)};var jr=$t,Nr={nextAuthCallbackID:1,auth_callbacks:{},ScriptReceivers:s,DependenciesReceivers:T,getDefaultStrategy:fr,Transports:yn,transportConnectionInitializer:pr,HTTPFactory:jr,TimelineTransport:Ye,getXHRAPI:function(){return window.XMLHttpRequest},getWebSocketAPI:function(){return window.WebSocket||window.MozWebSocket},setup:function(e){var t=this;window.Pusher=e;var n=function(){t.onDocumentBody(e.ready)};window.JSON?n():S.load("json2",{},n)},getDocument:function(){return document},getProtocol:function(){return this.getDocument().location.protocol},getAuthorizers:function(){return{ajax:we,jsonp:Xe}},onDocumentBody:function(e){var t=this;document.body?e():setTimeout(function(){t.onDocumentBody(e)},0)},createJSONPRequest:function(e,t){return new Ge(e,t)},createScriptRequest:function(e){return new We(e)},getLocalStorage:function(){try{return window.localStorage}catch{return}},createXHR:function(){return this.getXHRAPI()?this.createXMLHttpRequest():this.createMicrosoftXHR()},createXMLHttpRequest:function(){var e=this.getXHRAPI();return new e},createMicrosoftXHR:function(){return new ActiveXObject("Microsoft.XMLHTTP")},getNetwork:function(){return mn},createWebSocket:function(e){var t=this.getWebSocketAPI();return new t(e)},createSocketRequest:function(e,t){if(this.isXHRSupported())return this.HTTPFactory.createXHR(e,t);if(this.isXDRSupported(t.indexOf("https:")===0))return this.HTTPFactory.createXDR(e,t);throw"Cross-origin HTTP requests are not supported"},isXHRSupported:function(){var e=this.getXHRAPI();return!!e&&new e().withCredentials!==void 0},isXDRSupported:function(e){var t=e?"https:":"http:",n=this.getProtocol();return!!window.XDomainRequest&&n===t},addUnloadListener:function(e){window.addEventListener!==void 0?window.addEventListener("unload",e,!1):window.attachEvent!==void 0&&window.attachEvent("onunload",e)},removeUnloadListener:function(e){window.addEventListener!==void 0?window.removeEventListener("unload",e,!1):window.detachEvent!==void 0&&window.detachEvent("onunload",e)},randomInt:function(e){var t=function(){var n=window.crypto||window.msCrypto,r=n.getRandomValues(new Uint32Array(1))[0];return r/Math.pow(2,32)};return Math.floor(t()*e)}},b=Nr,Tt;(function(e){e[e.ERROR=3]="ERROR",e[e.INFO=6]="INFO",e[e.DEBUG=7]="DEBUG"})(Tt||(Tt={}));var lt=Tt,qr=function(){function e(t,n,r){this.key=t,this.session=n,this.events=[],this.options=r||{},this.sent=0,this.uniqueID=0}return e.prototype.log=function(t,n){t<=this.options.level&&(this.events.push(U({},n,{timestamp:j.now()})),this.options.limit&&this.events.length>this.options.limit&&this.events.shift())},e.prototype.error=function(t){this.log(lt.ERROR,t)},e.prototype.info=function(t){this.log(lt.INFO,t)},e.prototype.debug=function(t){this.log(lt.DEBUG,t)},e.prototype.isEmpty=function(){return this.events.length===0},e.prototype.send=function(t,n){var r=this,i=U({session:this.session,bundle:this.sent+1,key:this.key,lib:"js",version:this.options.version,cluster:this.options.cluster,features:this.options.features,timeline:this.events},this.options.params);return this.events=[],t(i,function(o,u){o||r.sent++,n&&n(o,u)}),!0},e.prototype.generateUniqueID=function(){return this.uniqueID++,this.uniqueID},e}(),Ur=qr,Dr=function(){function e(t,n,r,i){this.name=t,this.priority=n,this.transport=r,this.options=i||{}}return e.prototype.isSupported=function(){return this.transport.isSupported({useTLS:this.options.useTLS})},e.prototype.connect=function(t,n){var r=this;if(this.isSupported()){if(this.priority"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ei(l){if(l===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return l}function Ri(l,h){if(h&&(typeof h=="object"||typeof h=="function"))return h;if(h!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Ei(l)}function H(l){var h=Li();return function(){var c=ft(l),s;if(h){var f=ft(this).constructor;s=Reflect.construct(c,arguments,f)}else s=c.apply(this,arguments);return Ri(this,s)}}var Et=function(){function l(){E(this,l)}return R(l,[{key:"listenForWhisper",value:function(a,c){return this.listen(".client-"+a,c)}},{key:"notification",value:function(a){return this.listen(".Illuminate\\Notifications\\Events\\BroadcastNotificationCreated",a)}},{key:"stopListeningForWhisper",value:function(a,c){return this.stopListening(".client-"+a,c)}}]),l}(),de=function(){function l(h){E(this,l),this.namespace=h}return R(l,[{key:"format",value:function(a){return a.charAt(0)==="."||a.charAt(0)==="\\"?a.substr(1):(this.namespace&&(a=this.namespace+"."+a),a.replace(/\./g,"\\"))}},{key:"setNamespace",value:function(a){this.namespace=a}}]),l}(),dt=function(l){D(a,l);var h=H(a);function a(c,s,f){var d;return E(this,a),d=h.call(this),d.name=s,d.pusher=c,d.options=f,d.eventFormatter=new de(d.options.namespace),d.subscribe(),d}return R(a,[{key:"subscribe",value:function(){this.subscription=this.pusher.subscribe(this.name)}},{key:"unsubscribe",value:function(){this.pusher.unsubscribe(this.name)}},{key:"listen",value:function(s,f){return this.on(this.eventFormatter.format(s),f),this}},{key:"listenToAll",value:function(s){var f=this;return this.subscription.bind_global(function(d,N){if(!d.startsWith("pusher:")){var P=f.options.namespace.replace(/\./g,"\\"),T=d.startsWith(P)?d.substring(P.length+1):"."+d;s(T,N)}}),this}},{key:"stopListening",value:function(s,f){return f?this.subscription.unbind(this.eventFormatter.format(s),f):this.subscription.unbind(this.eventFormatter.format(s)),this}},{key:"stopListeningToAll",value:function(s){return s?this.subscription.unbind_global(s):this.subscription.unbind_global(),this}},{key:"subscribed",value:function(s){return this.on("pusher:subscription_succeeded",function(){s()}),this}},{key:"error",value:function(s){return this.on("pusher:subscription_error",function(f){s(f)}),this}},{key:"on",value:function(s,f){return this.subscription.bind(s,f),this}}]),a}(Et),Ii=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}}]),a}(dt),ji=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}}]),a}(dt),Ni=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this.on("pusher:subscription_succeeded",function(f){s(Object.keys(f.members).map(function(d){return f.members[d]}))}),this}},{key:"joining",value:function(s){return this.on("pusher:member_added",function(f){s(f.info)}),this}},{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}},{key:"leaving",value:function(s){return this.on("pusher:member_removed",function(f){s(f.info)}),this}}]),a}(dt),ve=function(l){D(a,l);var h=H(a);function a(c,s,f){var d;return E(this,a),d=h.call(this),d.events={},d.listeners={},d.name=s,d.socket=c,d.options=f,d.eventFormatter=new de(d.options.namespace),d.subscribe(),d}return R(a,[{key:"subscribe",value:function(){this.socket.emit("subscribe",{channel:this.name,auth:this.options.auth||{}})}},{key:"unsubscribe",value:function(){this.unbind(),this.socket.emit("unsubscribe",{channel:this.name,auth:this.options.auth||{}})}},{key:"listen",value:function(s,f){return this.on(this.eventFormatter.format(s),f),this}},{key:"stopListening",value:function(s,f){return this.unbindEvent(this.eventFormatter.format(s),f),this}},{key:"subscribed",value:function(s){return this.on("connect",function(f){s(f)}),this}},{key:"error",value:function(s){return this}},{key:"on",value:function(s,f){var d=this;return this.listeners[s]=this.listeners[s]||[],this.events[s]||(this.events[s]=function(N,P){d.name===N&&d.listeners[s]&&d.listeners[s].forEach(function(T){return T(P)})},this.socket.on(s,this.events[s])),this.listeners[s].push(f),this}},{key:"unbind",value:function(){var s=this;Object.keys(this.events).forEach(function(f){s.unbindEvent(f)})}},{key:"unbindEvent",value:function(s,f){this.listeners[s]=this.listeners[s]||[],f&&(this.listeners[s]=this.listeners[s].filter(function(d){return d!==f})),(!f||this.listeners[s].length===0)&&(this.events[s]&&(this.socket.removeListener(s,this.events[s]),delete this.events[s]),delete this.listeners[s])}}]),a}(Et),ye=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.socket.emit("client event",{channel:this.name,event:"client-".concat(s),data:f}),this}}]),a}(ve),qi=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this.on("presence:subscribed",function(f){s(f.map(function(d){return d.user_info}))}),this}},{key:"joining",value:function(s){return this.on("presence:joining",function(f){return s(f.user_info)}),this}},{key:"whisper",value:function(s,f){return this.socket.emit("client event",{channel:this.name,event:"client-".concat(s),data:f}),this}},{key:"leaving",value:function(s){return this.on("presence:leaving",function(f){return s(f.user_info)}),this}}]),a}(ye),pt=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"subscribe",value:function(){}},{key:"unsubscribe",value:function(){}},{key:"listen",value:function(s,f){return this}},{key:"listenToAll",value:function(s){return this}},{key:"stopListening",value:function(s,f){return this}},{key:"subscribed",value:function(s){return this}},{key:"error",value:function(s){return this}},{key:"on",value:function(s,f){return this}}]),a}(Et),fe=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this}}]),a}(pt),Ui=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this}},{key:"joining",value:function(s){return this}},{key:"whisper",value:function(s,f){return this}},{key:"leaving",value:function(s){return this}}]),a}(pt),Rt=function(){function l(h){E(this,l),this._defaultOptions={auth:{headers:{}},authEndpoint:"/broadcasting/auth",userAuthentication:{endpoint:"/broadcasting/user-auth",headers:{}},broadcaster:"pusher",csrfToken:null,bearerToken:null,host:null,key:null,namespace:"App.Events"},this.setOptions(h),this.connect()}return R(l,[{key:"setOptions",value:function(a){this.options=st(this._defaultOptions,a);var c=this.csrfToken();return c&&(this.options.auth.headers["X-CSRF-TOKEN"]=c,this.options.userAuthentication.headers["X-CSRF-TOKEN"]=c),c=this.options.bearerToken,c&&(this.options.auth.headers.Authorization="Bearer "+c,this.options.userAuthentication.headers.Authorization="Bearer "+c),a}},{key:"csrfToken",value:function(){var a;return typeof window<"u"&&window.Laravel&&window.Laravel.csrfToken?window.Laravel.csrfToken:this.options.csrfToken?this.options.csrfToken:typeof document<"u"&&typeof document.querySelector=="function"&&(a=document.querySelector('meta[name="csrf-token"]'))?a.getAttribute("content"):null}}]),l}(),pe=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){typeof this.options.client<"u"?this.pusher=this.options.client:this.options.Pusher?this.pusher=new this.options.Pusher(this.options.key,this.options):this.pusher=new Pusher(this.options.key,this.options)}},{key:"signin",value:function(){this.pusher.signin()}},{key:"listen",value:function(s,f,d){return this.channel(s).listen(f,d)}},{key:"channel",value:function(s){return this.channels[s]||(this.channels[s]=new dt(this.pusher,s,this.options)),this.channels[s]}},{key:"privateChannel",value:function(s){return this.channels["private-"+s]||(this.channels["private-"+s]=new Ii(this.pusher,"private-"+s,this.options)),this.channels["private-"+s]}},{key:"encryptedPrivateChannel",value:function(s){return this.channels["private-encrypted-"+s]||(this.channels["private-encrypted-"+s]=new ji(this.pusher,"private-encrypted-"+s,this.options)),this.channels["private-encrypted-"+s]}},{key:"presenceChannel",value:function(s){return this.channels["presence-"+s]||(this.channels["presence-"+s]=new Ni(this.pusher,"presence-"+s,this.options)),this.channels["presence-"+s]}},{key:"leave",value:function(s){var f=this,d=[s,"private-"+s,"private-encrypted-"+s,"presence-"+s];d.forEach(function(N,P){f.leaveChannel(N)})}},{key:"leaveChannel",value:function(s){this.channels[s]&&(this.channels[s].unsubscribe(),delete this.channels[s])}},{key:"socketId",value:function(){return this.pusher.connection.socket_id}},{key:"disconnect",value:function(){this.pusher.disconnect()}}]),a}(Rt),Di=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){var s=this,f=this.getSocketIO();return this.socket=f(this.options.host,this.options),this.socket.on("reconnect",function(){Object.values(s.channels).forEach(function(d){d.subscribe()})}),this.socket}},{key:"getSocketIO",value:function(){if(typeof this.options.client<"u")return this.options.client;if(typeof io<"u")return io;throw new Error("Socket.io client not found. Should be globally available or passed via options.client")}},{key:"listen",value:function(s,f,d){return this.channel(s).listen(f,d)}},{key:"channel",value:function(s){return this.channels[s]||(this.channels[s]=new ve(this.socket,s,this.options)),this.channels[s]}},{key:"privateChannel",value:function(s){return this.channels["private-"+s]||(this.channels["private-"+s]=new ye(this.socket,"private-"+s,this.options)),this.channels["private-"+s]}},{key:"presenceChannel",value:function(s){return this.channels["presence-"+s]||(this.channels["presence-"+s]=new qi(this.socket,"presence-"+s,this.options)),this.channels["presence-"+s]}},{key:"leave",value:function(s){var f=this,d=[s,"private-"+s,"presence-"+s];d.forEach(function(N){f.leaveChannel(N)})}},{key:"leaveChannel",value:function(s){this.channels[s]&&(this.channels[s].unsubscribe(),delete this.channels[s])}},{key:"socketId",value:function(){return this.socket.id}},{key:"disconnect",value:function(){this.socket.disconnect()}}]),a}(Rt),Hi=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){}},{key:"listen",value:function(s,f,d){return new pt}},{key:"channel",value:function(s){return new pt}},{key:"privateChannel",value:function(s){return new fe}},{key:"encryptedPrivateChannel",value:function(s){return new fe}},{key:"presenceChannel",value:function(s){return new Ui}},{key:"leave",value:function(s){}},{key:"leaveChannel",value:function(s){}},{key:"socketId",value:function(){return"fake-socket-id"}},{key:"disconnect",value:function(){}}]),a}(Rt),ge=function(){function l(h){E(this,l),this.options=h,this.connect(),this.options.withoutInterceptors||this.registerInterceptors()}return R(l,[{key:"channel",value:function(a){return this.connector.channel(a)}},{key:"connect",value:function(){this.options.broadcaster=="reverb"?this.connector=new pe(st(st({},this.options),{cluster:""})):this.options.broadcaster=="pusher"?this.connector=new pe(this.options):this.options.broadcaster=="socket.io"?this.connector=new Di(this.options):this.options.broadcaster=="null"?this.connector=new Hi(this.options):typeof this.options.broadcaster=="function"&&(this.connector=new this.options.broadcaster(this.options))}},{key:"disconnect",value:function(){this.connector.disconnect()}},{key:"join",value:function(a){return this.connector.presenceChannel(a)}},{key:"leave",value:function(a){this.connector.leave(a)}},{key:"leaveChannel",value:function(a){this.connector.leaveChannel(a)}},{key:"leaveAllChannels",value:function(){for(var a in this.connector.channels)this.leaveChannel(a)}},{key:"listen",value:function(a,c,s){return this.connector.listen(a,c,s)}},{key:"private",value:function(a){return this.connector.privateChannel(a)}},{key:"encryptedPrivate",value:function(a){return this.connector.encryptedPrivateChannel(a)}},{key:"socketId",value:function(){return this.connector.socketId()}},{key:"registerInterceptors",value:function(){typeof Vue=="function"&&Vue.http&&this.registerVueRequestInterceptor(),typeof axios=="function"&&this.registerAxiosRequestInterceptor(),typeof jQuery=="function"&&this.registerjQueryAjaxSetup(),(typeof Turbo>"u"?"undefined":At(Turbo))==="object"&&this.registerTurboRequestInterceptor()}},{key:"registerVueRequestInterceptor",value:function(){var a=this;Vue.http.interceptors.push(function(c,s){a.socketId()&&c.headers.set("X-Socket-ID",a.socketId()),s()})}},{key:"registerAxiosRequestInterceptor",value:function(){var a=this;axios.interceptors.request.use(function(c){return a.socketId()&&(c.headers["X-Socket-Id"]=a.socketId()),c})}},{key:"registerjQueryAjaxSetup",value:function(){var a=this;typeof jQuery.ajax<"u"&&jQuery.ajaxPrefilter(function(c,s,f){a.socketId()&&f.setRequestHeader("X-Socket-Id",a.socketId())})}},{key:"registerTurboRequestInterceptor",value:function(){var a=this;document.addEventListener("turbo:before-fetch-request",function(c){c.detail.fetchOptions.headers["X-Socket-Id"]=a.socketId()})}}]),l}();var me=Ai(_e(),1);window.EchoFactory=ge;window.Pusher=me.default;})(); +(()=>{var ki=Object.create;var he=Object.defineProperty;var Si=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames;var Ti=Object.getPrototypeOf,Pi=Object.prototype.hasOwnProperty;var xi=(l,h)=>()=>(h||l((h={exports:{}}).exports,h),h.exports);var Oi=(l,h,a,c)=>{if(h&&typeof h=="object"||typeof h=="function")for(let s of Ci(h))!Pi.call(l,s)&&s!==a&&he(l,s,{get:()=>h[s],enumerable:!(c=Si(h,s))||c.enumerable});return l};var Ai=(l,h,a)=>(a=l!=null?ki(Ti(l)):{},Oi(h||!l||!l.__esModule?he(a,"default",{value:l,enumerable:!0}):a,l));var _e=xi((yt,It)=>{(function(h,a){typeof yt=="object"&&typeof It=="object"?It.exports=a():typeof define=="function"&&define.amd?define([],a):typeof yt=="object"?yt.Pusher=a():h.Pusher=a()})(window,function(){return function(l){var h={};function a(c){if(h[c])return h[c].exports;var s=h[c]={i:c,l:!1,exports:{}};return l[c].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=l,a.c=h,a.d=function(c,s,f){a.o(c,s)||Object.defineProperty(c,s,{enumerable:!0,get:f})},a.r=function(c){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})},a.t=function(c,s){if(s&1&&(c=a(c)),s&8||s&4&&typeof c=="object"&&c&&c.__esModule)return c;var f=Object.create(null);if(a.r(f),Object.defineProperty(f,"default",{enumerable:!0,value:c}),s&2&&typeof c!="string")for(var d in c)a.d(f,d,function(N){return c[N]}.bind(null,d));return f},a.n=function(c){var s=c&&c.__esModule?function(){return c.default}:function(){return c};return a.d(s,"a",s),s},a.o=function(c,s){return Object.prototype.hasOwnProperty.call(c,s)},a.p="",a(a.s=2)}([function(l,h,a){"use strict";var c=this&&this.__extends||function(){var b=function(v,y){return b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,O){w.__proto__=O}||function(w,O){for(var I in O)O.hasOwnProperty(I)&&(w[I]=O[I])},b(v,y)};return function(v,y){b(v,y);function w(){this.constructor=v}v.prototype=y===null?Object.create(y):(w.prototype=y.prototype,new w)}}();Object.defineProperty(h,"__esModule",{value:!0});var s=256,f=function(){function b(v){v===void 0&&(v="="),this._paddingCharacter=v}return b.prototype.encodedLength=function(v){return this._paddingCharacter?(v+2)/3*4|0:(v*8+5)/6|0},b.prototype.encode=function(v){for(var y="",w=0;w>>3*6&63),y+=this._encodeByte(O>>>2*6&63),y+=this._encodeByte(O>>>1*6&63),y+=this._encodeByte(O>>>0*6&63)}var I=v.length-w;if(I>0){var O=v[w]<<16|(I===2?v[w+1]<<8:0);y+=this._encodeByte(O>>>3*6&63),y+=this._encodeByte(O>>>2*6&63),I===2?y+=this._encodeByte(O>>>1*6&63):y+=this._paddingCharacter||"",y+=this._paddingCharacter||""}return y},b.prototype.maxDecodedLength=function(v){return this._paddingCharacter?v/4*3|0:(v*6+7)/8|0},b.prototype.decodedLength=function(v){return this.maxDecodedLength(v.length-this._getPaddingLength(v))},b.prototype.decode=function(v){if(v.length===0)return new Uint8Array(0);for(var y=this._getPaddingLength(v),w=v.length-y,O=new Uint8Array(this.maxDecodedLength(w)),I=0,q=0,M=0,J=0,F=0,z=0,B=0;q>>4,O[I++]=F<<4|z>>>2,O[I++]=z<<6|B,M|=J&s,M|=F&s,M|=z&s,M|=B&s;if(q>>4,M|=J&s,M|=F&s),q>>2,M|=z&s),q>>8&0-65-26+97,y+=51-v>>>8&26-97-52+48,y+=61-v>>>8&52-48-62+43,y+=62-v>>>8&62-43-63+47,String.fromCharCode(y)},b.prototype._decodeChar=function(v){var y=s;return y+=(42-v&v-44)>>>8&-s+v-43+62,y+=(46-v&v-48)>>>8&-s+v-47+63,y+=(47-v&v-58)>>>8&-s+v-48+52,y+=(64-v&v-91)>>>8&-s+v-65+0,y+=(96-v&v-123)>>>8&-s+v-97+26,y},b.prototype._getPaddingLength=function(v){var y=0;if(this._paddingCharacter){for(var w=v.length-1;w>=0&&v[w]===this._paddingCharacter;w--)y++;if(v.length<4||y>2)throw new Error("Base64Coder: incorrect padding")}return y},b}();h.Coder=f;var d=new f;function N(b){return d.encode(b)}h.encode=N;function P(b){return d.decode(b)}h.decode=P;var T=function(b){c(v,b);function v(){return b!==null&&b.apply(this,arguments)||this}return v.prototype._encodeByte=function(y){var w=y;return w+=65,w+=25-y>>>8&0-65-26+97,w+=51-y>>>8&26-97-52+48,w+=61-y>>>8&52-48-62+45,w+=62-y>>>8&62-45-63+95,String.fromCharCode(w)},v.prototype._decodeChar=function(y){var w=s;return w+=(44-y&y-46)>>>8&-s+y-45+62,w+=(94-y&y-96)>>>8&-s+y-95+63,w+=(47-y&y-58)>>>8&-s+y-48+52,w+=(64-y&y-91)>>>8&-s+y-65+0,w+=(96-y&y-123)>>>8&-s+y-97+26,w},v}(f);h.URLSafeCoder=T;var S=new T;function C(b){return S.encode(b)}h.encodeURLSafe=C;function x(b){return S.decode(b)}h.decodeURLSafe=x,h.encodedLength=function(b){return d.encodedLength(b)},h.maxDecodedLength=function(b){return d.maxDecodedLength(b)},h.decodedLength=function(b){return d.decodedLength(b)}},function(l,h,a){"use strict";Object.defineProperty(h,"__esModule",{value:!0});var c="utf8: invalid string",s="utf8: invalid source encoding";function f(P){for(var T=new Uint8Array(d(P)),S=0,C=0;C>6,T[S++]=128|x&63):x<55296?(T[S++]=224|x>>12,T[S++]=128|x>>6&63,T[S++]=128|x&63):(C++,x=(x&1023)<<10,x|=P.charCodeAt(C)&1023,x+=65536,T[S++]=240|x>>18,T[S++]=128|x>>12&63,T[S++]=128|x>>6&63,T[S++]=128|x&63)}return T}h.encode=f;function d(P){for(var T=0,S=0;S=P.length-1)throw new Error(c);S++,T+=4}else throw new Error(c)}return T}h.encodedLength=d;function N(P){for(var T=[],S=0;S=P.length)throw new Error(s);var b=P[++S];if((b&192)!==128)throw new Error(s);C=(C&31)<<6|b&63,x=128}else if(C<240){if(S>=P.length-1)throw new Error(s);var b=P[++S],v=P[++S];if((b&192)!==128||(v&192)!==128)throw new Error(s);C=(C&15)<<12|(b&63)<<6|v&63,x=2048}else if(C<248){if(S>=P.length-2)throw new Error(s);var b=P[++S],v=P[++S],y=P[++S];if((b&192)!==128||(v&192)!==128||(y&192)!==128)throw new Error(s);C=(C&15)<<18|(b&63)<<12|(v&63)<<6|y&63,x=65536}else throw new Error(s);if(C=55296&&C<=57343)throw new Error(s);if(C>=65536){if(C>1114111)throw new Error(s);C-=65536,T.push(String.fromCharCode(55296|C>>10)),C=56320|C&1023}}T.push(String.fromCharCode(C))}return T.join("")}h.decode=N},function(l,h,a){l.exports=a(3).default},function(l,h,a){"use strict";a.r(h);var c=function(){function e(t,n){this.lastId=0,this.prefix=t,this.name=n}return e.prototype.create=function(t){this.lastId++;var n=this.lastId,r=this.prefix+n,i=this.name+"["+n+"]",o=!1,u=function(){o||(t.apply(null,arguments),o=!0)};return this[n]=u,{number:n,id:r,name:i,callback:u}},e.prototype.remove=function(t){delete this[t.number]},e}(),s=new c("_pusher_script_","Pusher.ScriptReceivers"),f={VERSION:"7.6.0",PROTOCOL:7,wsPort:80,wssPort:443,wsPath:"",httpHost:"sockjs.pusher.com",httpPort:80,httpsPort:443,httpPath:"/pusher",stats_host:"stats.pusher.com",authEndpoint:"/pusher/auth",authTransport:"ajax",activityTimeout:12e4,pongTimeout:3e4,unavailableTimeout:1e4,cluster:"mt1",userAuthentication:{endpoint:"/pusher/user-auth",transport:"ajax"},channelAuthorization:{endpoint:"/pusher/auth",transport:"ajax"},cdn_http:"http://js.pusher.com",cdn_https:"https://js.pusher.com",dependency_suffix:""},d=f,N=function(){function e(t){this.options=t,this.receivers=t.receivers||s,this.loading={}}return e.prototype.load=function(t,n,r){var i=this;if(i.loading[t]&&i.loading[t].length>0)i.loading[t].push(r);else{i.loading[t]=[r];var o=m.createScriptRequest(i.getPath(t,n)),u=i.receivers.create(function(p){if(i.receivers.remove(u),i.loading[t]){var _=i.loading[t];delete i.loading[t];for(var g=function(E){E||o.cleanup()},k=0;k<_.length;k++)_[k](p,g)}});o.send(u)}},e.prototype.getRoot=function(t){var n,r=m.getDocument().location.protocol;return t&&t.useTLS||r==="https:"?n=this.options.cdn_https:n=this.options.cdn_http,n.replace(/\/*$/,"")+"/"+this.options.version},e.prototype.getPath=function(t,n){return this.getRoot(n)+"/"+t+this.options.suffix+".js"},e}(),P=N,T=new c("_pusher_dependencies","Pusher.DependenciesReceivers"),S=new P({cdn_http:d.cdn_http,cdn_https:d.cdn_https,version:d.VERSION,suffix:d.dependency_suffix,receivers:T}),C={baseUrl:"https://pusher.com",urls:{authenticationEndpoint:{path:"/docs/channels/server_api/authenticating_users"},authorizationEndpoint:{path:"/docs/channels/server_api/authorizing-users/"},javascriptQuickStart:{path:"/docs/javascript_quick_start"},triggeringClientEvents:{path:"/docs/client_api_guide/client_events#trigger-events"},encryptedChannelSupport:{fullUrl:"https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support"}}},x=function(e){var t="See:",n=C.urls[e];if(!n)return"";var r;return n.fullUrl?r=n.fullUrl:n.path&&(r=C.baseUrl+n.path),r?t+" "+r:""},b={buildLogSuffix:x},v;(function(e){e.UserAuthentication="user-authentication",e.ChannelAuthorization="channel-authorization"})(v||(v={}));var y=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),w=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),O=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),I=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),q=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),M=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),J=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),F=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),z=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),B=function(e){y(t,e);function t(n,r){var i=this.constructor,o=e.call(this,r)||this;return o.status=n,Object.setPrototypeOf(o,i.prototype),o}return t}(Error),me=function(e,t,n,r,i){var o=m.createXHR();o.open("POST",n.endpoint,!0),o.setRequestHeader("Content-Type","application/x-www-form-urlencoded");for(var u in n.headers)o.setRequestHeader(u,n.headers[u]);if(n.headersProvider!=null){var p=n.headersProvider();for(var u in p)o.setRequestHeader(u,p[u])}return o.onreadystatechange=function(){if(o.readyState===4)if(o.status===200){var _=void 0,g=!1;try{_=JSON.parse(o.responseText),g=!0}catch{i(new B(200,"JSON returned from "+r.toString()+" endpoint was invalid, yet status code was 200. Data was: "+o.responseText),null)}g&&i(null,_)}else{var k="";switch(r){case v.UserAuthentication:k=b.buildLogSuffix("authenticationEndpoint");break;case v.ChannelAuthorization:k="Clients must be authorized to join private or presence channels. "+b.buildLogSuffix("authorizationEndpoint");break}i(new B(o.status,"Unable to retrieve auth string from "+r.toString()+" endpoint - "+("received status: "+o.status+" from "+n.endpoint+". "+k)),null)}},o.send(t),o},we=me;function ke(e){return Oe(Pe(e))}for(var nt=String.fromCharCode,Z="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Se={},at=0,Ce=Z.length;at>>6)+nt(128|t&63):nt(224|t>>>12&15)+nt(128|t>>>6&63)+nt(128|t&63)},Pe=function(e){return e.replace(/[^\x00-\x7F]/g,Te)},xe=function(e){var t=[0,2,1][e.length%3],n=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0),r=[Z.charAt(n>>>18),Z.charAt(n>>>12&63),t>=2?"=":Z.charAt(n>>>6&63),t>=1?"=":Z.charAt(n&63)];return r.join("")},Oe=window.btoa||function(e){return e.replace(/[\s\S]{1,3}/g,xe)},Ae=function(){function e(t,n,r,i){var o=this;this.clear=n,this.timer=t(function(){o.timer&&(o.timer=i(o.timer))},r)}return e.prototype.isRunning=function(){return this.timer!==null},e.prototype.ensureAborted=function(){this.timer&&(this.clear(this.timer),this.timer=null)},e}(),jt=Ae,Nt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();function Ee(e){window.clearTimeout(e)}function Le(e){window.clearInterval(e)}var Q=function(e){Nt(t,e);function t(n,r){return e.call(this,setTimeout,Ee,n,function(i){return r(),null})||this}return t}(jt),Re=function(e){Nt(t,e);function t(n,r){return e.call(this,setInterval,Le,n,function(i){return r(),i})||this}return t}(jt),Ie={now:function(){return Date.now?Date.now():new Date().valueOf()},defer:function(e){return new Q(0,e)},method:function(e){for(var t=[],n=1;n0)for(var i=0;i=1002&&e.code<=1004?"backoff":null:e.code===4e3?"tls_only":e.code<4100?"refused":e.code<4200?"backoff":e.code<4300?"retry":"refused"},getCloseError:function(e){return e.code!==1e3&&e.code!==1001?{type:"PusherError",data:{code:e.code,message:e.reason||e.message}}:null}},K=Vt,kn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Sn=function(e){kn(t,e);function t(n,r){var i=e.call(this)||this;return i.id=n,i.transport=r,i.activityTimeout=r.activityTimeout,i.bindListeners(),i}return t.prototype.handlesActivityChecks=function(){return this.transport.handlesActivityChecks()},t.prototype.send=function(n){return this.transport.send(n)},t.prototype.send_event=function(n,r,i){var o={event:n,data:r};return i&&(o.channel=i),A.debug("Event sent",o),this.send(K.encodeMessage(o))},t.prototype.ping=function(){this.transport.supportsPing()?this.transport.ping():this.send_event("pusher:ping",{})},t.prototype.close=function(){this.transport.close()},t.prototype.bindListeners=function(){var n=this,r={message:function(o){var u;try{u=K.decodeMessage(o)}catch(p){n.emit("error",{type:"MessageParseError",error:p,data:o.data})}if(u!==void 0){switch(A.debug("Event recd",u),u.event){case"pusher:error":n.emit("error",{type:"PusherError",data:u.data});break;case"pusher:ping":n.emit("ping");break;case"pusher:pong":n.emit("pong");break}n.emit("message",u)}},activity:function(){n.emit("activity")},error:function(o){n.emit("error",o)},closed:function(o){i(),o&&o.code&&n.handleCloseEvent(o),n.transport=null,n.emit("closed")}},i=function(){W(r,function(o,u){n.transport.unbind(u,o)})};W(r,function(o,u){n.transport.bind(u,o)})},t.prototype.handleCloseEvent=function(n){var r=K.getCloseAction(n),i=K.getCloseError(n);i&&this.emit("error",i),r&&this.emit(r,{action:r,error:i})},t}(V),Cn=Sn,Tn=function(){function e(t,n){this.transport=t,this.callback=n,this.bindListeners()}return e.prototype.close=function(){this.unbindListeners(),this.transport.close()},e.prototype.bindListeners=function(){var t=this;this.onMessage=function(n){t.unbindListeners();var r;try{r=K.processHandshake(n)}catch(i){t.finish("error",{error:i}),t.transport.close();return}r.action==="connected"?t.finish("connected",{connection:new Cn(r.id,t.transport),activityTimeout:r.activityTimeout}):(t.finish(r.action,{error:r.error}),t.transport.close())},this.onClosed=function(n){t.unbindListeners();var r=K.getCloseAction(n)||"backoff",i=K.getCloseError(n);t.finish(r,{error:i})},this.transport.bind("message",this.onMessage),this.transport.bind("closed",this.onClosed)},e.prototype.unbindListeners=function(){this.transport.unbind("message",this.onMessage),this.transport.unbind("closed",this.onClosed)},e.prototype.finish=function(t,n){this.callback(U({transport:this.transport,action:t},n))},e}(),Pn=Tn,xn=function(){function e(t,n){this.timeline=t,this.options=n||{}}return e.prototype.send=function(t,n){this.timeline.isEmpty()||this.timeline.send(m.TimelineTransport.getAgent(this,t),n)},e}(),On=xn,An=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),En=function(e){An(t,e);function t(n,r){var i=e.call(this,function(o,u){A.debug("No callbacks on "+n+" for "+o)})||this;return i.name=n,i.pusher=r,i.subscribed=!1,i.subscriptionPending=!1,i.subscriptionCancelled=!1,i}return t.prototype.authorize=function(n,r){return r(null,{auth:""})},t.prototype.trigger=function(n,r){if(n.indexOf("client-")!==0)throw new w("Event '"+n+"' does not start with 'client-'");if(!this.subscribed){var i=b.buildLogSuffix("triggeringClientEvents");A.warn("Client event triggered before channel 'subscription_succeeded' event . "+i)}return this.pusher.send_event(n,r,this.name)},t.prototype.disconnect=function(){this.subscribed=!1,this.subscriptionPending=!1},t.prototype.handleEvent=function(n){var r=n.event,i=n.data;if(r==="pusher_internal:subscription_succeeded")this.handleSubscriptionSucceededEvent(n);else if(r==="pusher_internal:subscription_count")this.handleSubscriptionCountEvent(n);else if(r.indexOf("pusher_internal:")!==0){var o={};this.emit(r,i,o)}},t.prototype.handleSubscriptionSucceededEvent=function(n){this.subscriptionPending=!1,this.subscribed=!0,this.subscriptionCancelled?this.pusher.unsubscribe(this.name):this.emit("pusher:subscription_succeeded",n.data)},t.prototype.handleSubscriptionCountEvent=function(n){n.data.subscription_count&&(this.subscriptionCount=n.data.subscription_count),this.emit("pusher:subscription_count",n.data)},t.prototype.subscribe=function(){var n=this;this.subscribed||(this.subscriptionPending=!0,this.subscriptionCancelled=!1,this.authorize(this.pusher.connection.socket_id,function(r,i){r?(n.subscriptionPending=!1,A.error(r.toString()),n.emit("pusher:subscription_error",Object.assign({},{type:"AuthError",error:r.message},r instanceof B?{status:r.status}:{}))):n.pusher.send_event("pusher:subscribe",{auth:i.auth,channel_data:i.channel_data,channel:n.name})}))},t.prototype.unsubscribe=function(){this.subscribed=!1,this.pusher.send_event("pusher:unsubscribe",{channel:this.name})},t.prototype.cancelSubscription=function(){this.subscriptionCancelled=!0},t.prototype.reinstateSubscription=function(){this.subscriptionCancelled=!1},t}(V),mt=En,Ln=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Rn=function(e){Ln(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.authorize=function(n,r){return this.pusher.config.channelAuthorizer({channelName:this.name,socketId:n},r)},t}(mt),wt=Rn,In=function(){function e(){this.reset()}return e.prototype.get=function(t){return Object.prototype.hasOwnProperty.call(this.members,t)?{id:t,info:this.members[t]}:null},e.prototype.each=function(t){var n=this;W(this.members,function(r,i){t(n.get(i))})},e.prototype.setMyID=function(t){this.myID=t},e.prototype.onSubscription=function(t){this.members=t.presence.hash,this.count=t.presence.count,this.me=this.get(this.myID)},e.prototype.addMember=function(t){return this.get(t.user_id)===null&&this.count++,this.members[t.user_id]=t.user_info,this.get(t.user_id)},e.prototype.removeMember=function(t){var n=this.get(t.user_id);return n&&(delete this.members[t.user_id],this.count--),n},e.prototype.reset=function(){this.members={},this.count=0,this.myID=null,this.me=null},e}(),jn=In,Nn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),qn=function(e,t,n,r){function i(o){return o instanceof n?o:new n(function(u){u(o)})}return new(n||(n=Promise))(function(o,u){function p(k){try{g(r.next(k))}catch(E){u(E)}}function _(k){try{g(r.throw(k))}catch(E){u(E)}}function g(k){k.done?o(k.value):i(k.value).then(p,_)}g((r=r.apply(e,t||[])).next())})},Un=function(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,u;return u={next:p(0),throw:p(1),return:p(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function p(g){return function(k){return _([g,k])}}function _(g){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(o=g[0]&2?i.return:g[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,g[1])).done)return o;switch(i=0,o&&(g=[g[0]&2,o.value]),g[0]){case 0:case 1:o=g;break;case 4:return n.label++,{value:g[1],done:!1};case 5:n.label++,i=g[1],g=[0];continue;case 7:g=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(g[0]===6||g[0]===2)){n=0;continue}if(g[0]===3&&(!o||g[1]>o[0]&&g[1]0&&this.emit("connecting_in",Math.round(n/1e3)),this.retryTimer=new Q(n||0,function(){r.disconnectInternally(),r.connect()})},t.prototype.clearRetryTimer=function(){this.retryTimer&&(this.retryTimer.ensureAborted(),this.retryTimer=null)},t.prototype.setUnavailableTimer=function(){var n=this;this.unavailableTimer=new Q(this.options.unavailableTimeout,function(){n.updateState("unavailable")})},t.prototype.clearUnavailableTimer=function(){this.unavailableTimer&&this.unavailableTimer.ensureAborted()},t.prototype.sendActivityCheck=function(){var n=this;this.stopActivityCheck(),this.connection.ping(),this.activityTimer=new Q(this.options.pongTimeout,function(){n.timeline.error({pong_timed_out:n.options.pongTimeout}),n.retryIn(0)})},t.prototype.resetActivityCheck=function(){var n=this;this.stopActivityCheck(),this.connection&&!this.connection.handlesActivityChecks()&&(this.activityTimer=new Q(this.activityTimeout,function(){n.sendActivityCheck()}))},t.prototype.stopActivityCheck=function(){this.activityTimer&&this.activityTimer.ensureAborted()},t.prototype.buildConnectionCallbacks=function(n){var r=this;return U({},n,{message:function(i){r.resetActivityCheck(),r.emit("message",i)},ping:function(){r.send_event("pusher:pong",{})},activity:function(){r.resetActivityCheck()},error:function(i){r.emit("error",i)},closed:function(){r.abandonConnection(),r.shouldRetry()&&r.retryIn(1e3)}})},t.prototype.buildHandshakeCallbacks=function(n){var r=this;return U({},n,{connected:function(i){r.activityTimeout=Math.min(r.options.activityTimeout,i.activityTimeout,i.connection.activityTimeout||1/0),r.clearUnavailableTimer(),r.setConnection(i.connection),r.socket_id=r.connection.id,r.updateState("connected",{socket_id:r.socket_id})}})},t.prototype.buildErrorCallbacks=function(){var n=this,r=function(i){return function(o){o.error&&n.emit("error",{type:"WebSocketError",error:o.error}),i(o)}};return{tls_only:r(function(){n.usingTLS=!0,n.updateStrategy(),n.retryIn(0)}),refused:r(function(){n.disconnect()}),backoff:r(function(){n.retryIn(1e3)}),retry:r(function(){n.retryIn(0)})}},t.prototype.setConnection=function(n){this.connection=n;for(var r in this.connectionCallbacks)this.connection.bind(r,this.connectionCallbacks[r]);this.resetActivityCheck()},t.prototype.abandonConnection=function(){if(this.connection){this.stopActivityCheck();for(var n in this.connectionCallbacks)this.connection.unbind(n,this.connectionCallbacks[n]);var r=this.connection;return this.connection=null,r}},t.prototype.updateState=function(n,r){var i=this.state;if(this.state=n,i!==n){var o=n;o==="connected"&&(o+=" with new socket ID "+r.socket_id),A.debug("State changed",i+" -> "+o),this.timeline.info({state:n,params:r}),this.emit("state_change",{previous:i,current:n}),this.emit(n,r)}},t.prototype.shouldRetry=function(){return this.state==="connecting"||this.state==="connected"},t}(V),Wn=Jn,Vn=function(){function e(){this.channels={}}return e.prototype.add=function(t,n){return this.channels[t]||(this.channels[t]=Qn(t,n)),this.channels[t]},e.prototype.all=function(){return Ne(this.channels)},e.prototype.find=function(t){return this.channels[t]},e.prototype.remove=function(t){var n=this.channels[t];return delete this.channels[t],n},e.prototype.disconnect=function(){W(this.channels,function(t){t.disconnect()})},e}(),Gn=Vn;function Qn(e,t){if(e.indexOf("private-encrypted-")===0){if(t.config.nacl)return G.createEncryptedChannel(e,t,t.config.nacl);var n="Tried to subscribe to a private-encrypted- channel but no nacl implementation available",r=b.buildLogSuffix("encryptedChannelSupport");throw new J(n+". "+r)}else{if(e.indexOf("private-")===0)return G.createPrivateChannel(e,t);if(e.indexOf("presence-")===0)return G.createPresenceChannel(e,t);if(e.indexOf("#")===0)throw new O('Cannot create a channel with name "'+e+'".');return G.createChannel(e,t)}}var Kn={createChannels:function(){return new Gn},createConnectionManager:function(e,t){return new Wn(e,t)},createChannel:function(e,t){return new mt(e,t)},createPrivateChannel:function(e,t){return new wt(e,t)},createPresenceChannel:function(e,t){return new Hn(e,t)},createEncryptedChannel:function(e,t,n){return new Bn(e,t,n)},createTimelineSender:function(e,t){return new On(e,t)},createHandshake:function(e,t){return new Pn(e,t)},createAssistantToTheTransportManager:function(e,t,n){return new wn(e,t,n)}},G=Kn,Yn=function(){function e(t){this.options=t||{},this.livesLeft=this.options.lives||1/0}return e.prototype.getAssistant=function(t){return G.createAssistantToTheTransportManager(this,t,{minPingDelay:this.options.minPingDelay,maxPingDelay:this.options.maxPingDelay})},e.prototype.isAlive=function(){return this.livesLeft>0},e.prototype.reportDeath=function(){this.livesLeft-=1},e}(),Gt=Yn,$n=function(){function e(t,n){this.strategies=t,this.loop=!!n.loop,this.failFast=!!n.failFast,this.timeout=n.timeout,this.timeoutLimit=n.timeoutLimit}return e.prototype.isSupported=function(){return zt(this.strategies,j.method("isSupported"))},e.prototype.connect=function(t,n){var r=this,i=this.strategies,o=0,u=this.timeout,p=null,_=function(g,k){k?n(null,k):(o=o+1,r.loop&&(o=o%i.length),o0&&(o=new Q(r.timeout,function(){u.abort(),i(!0)})),u=t.connect(n,function(p,_){p&&o&&o.isRunning()&&!r.failFast||(o&&o.ensureAborted(),i(p,_))}),{abort:function(){o&&o.ensureAborted(),u.abort()},forceMinPriority:function(p){u.forceMinPriority(p)}}},e}(),Y=$n,Zn=function(){function e(t){this.strategies=t}return e.prototype.isSupported=function(){return zt(this.strategies,j.method("isSupported"))},e.prototype.connect=function(t,n){return tr(this.strategies,t,function(r,i){return function(o,u){if(i[r].error=o,o){er(i)&&n(!0);return}rt(i,function(p){p.forceMinPriority(u.transport.priority)}),n(null,u)}})},e}(),St=Zn;function tr(e,t,n){var r=Dt(e,function(i,o,u,p){return i.connect(t,n(o,p))});return{abort:function(){rt(r,nr)},forceMinPriority:function(i){rt(r,function(o){o.forceMinPriority(i)})}}}function er(e){return De(e,function(t){return!!t.error})}function nr(e){!e.error&&!e.aborted&&(e.abort(),e.aborted=!0)}var rr=function(){function e(t,n,r){this.strategy=t,this.transports=n,this.ttl=r.ttl||1800*1e3,this.usingTLS=r.useTLS,this.timeline=r.timeline}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.usingTLS,i=or(r),o=[this.strategy];if(i&&i.timestamp+this.ttl>=j.now()){var u=this.transports[i.transport];u&&(this.timeline.info({cached:!0,transport:i.transport,latency:i.latency}),o.push(new Y([u],{timeout:i.latency*2+1e3,failFast:!0})))}var p=j.now(),_=o.pop().connect(t,function g(k,E){k?(Qt(r),o.length>0?(p=j.now(),_=o.pop().connect(t,g)):n(k)):(sr(r,E.transport.name,j.now()-p),n(null,E))});return{abort:function(){_.abort()},forceMinPriority:function(g){t=g,_&&_.forceMinPriority(g)}}},e}(),ir=rr;function Ct(e){return"pusherTransport"+(e?"TLS":"NonTLS")}function or(e){var t=m.getLocalStorage();if(t)try{var n=t[Ct(e)];if(n)return JSON.parse(n)}catch{Qt(e)}return null}function sr(e,t,n){var r=m.getLocalStorage();if(r)try{r[Ct(e)]=ct({timestamp:j.now(),transport:t,latency:n})}catch{}}function Qt(e){var t=m.getLocalStorage();if(t)try{delete t[Ct(e)]}catch{}}var ar=function(){function e(t,n){var r=n.delay;this.strategy=t,this.options={delay:r}}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.strategy,i,o=new Q(this.options.delay,function(){i=r.connect(t,n)});return{abort:function(){o.ensureAborted(),i&&i.abort()},forceMinPriority:function(u){t=u,i&&i.forceMinPriority(u)}}},e}(),ht=ar,cr=function(){function e(t,n,r){this.test=t,this.trueBranch=n,this.falseBranch=r}return e.prototype.isSupported=function(){var t=this.test()?this.trueBranch:this.falseBranch;return t.isSupported()},e.prototype.connect=function(t,n){var r=this.test()?this.trueBranch:this.falseBranch;return r.connect(t,n)},e}(),it=cr,ur=function(){function e(t){this.strategy=t}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.strategy.connect(t,function(i,o){o&&r.abort(),n(i,o)});return r},e}(),hr=ur;function ot(e){return function(){return e.isSupported()}}var lr=function(e,t,n){var r={};function i(ce,_i,bi,mi,wi){var ue=n(e,ce,_i,bi,mi,wi);return r[ce]=ue,ue}var o=Object.assign({},t,{hostNonTLS:e.wsHost+":"+e.wsPort,hostTLS:e.wsHost+":"+e.wssPort,httpPath:e.wsPath}),u=Object.assign({},o,{useTLS:!0}),p=Object.assign({},t,{hostNonTLS:e.httpHost+":"+e.httpPort,hostTLS:e.httpHost+":"+e.httpsPort,httpPath:e.httpPath}),_={loop:!0,timeout:15e3,timeoutLimit:6e4},g=new Gt({lives:2,minPingDelay:1e4,maxPingDelay:e.activityTimeout}),k=new Gt({lives:2,minPingDelay:1e4,maxPingDelay:e.activityTimeout}),E=i("ws","ws",3,o,g),X=i("wss","ws",3,u,g),pi=i("sockjs","sockjs",1,p),ne=i("xhr_streaming","xhr_streaming",1,p,k),di=i("xdr_streaming","xdr_streaming",1,p,k),re=i("xhr_polling","xhr_polling",1,p),vi=i("xdr_polling","xdr_polling",1,p),ie=new Y([E],_),yi=new Y([X],_),gi=new Y([pi],_),oe=new Y([new it(ot(ne),ne,di)],_),se=new Y([new it(ot(re),re,vi)],_),ae=new Y([new it(ot(oe),new St([oe,new ht(se,{delay:4e3})]),se)],_),Ot=new it(ot(ae),ae,gi),At;return t.useTLS?At=new St([ie,new ht(Ot,{delay:2e3})]):At=new St([ie,new ht(yi,{delay:2e3}),new ht(Ot,{delay:5e3})]),new ir(new hr(new it(ot(E),At,Ot)),r,{ttl:18e5,timeline:t.timeline,useTLS:t.useTLS})},fr=lr,pr=function(){var e=this;e.timeline.info(e.buildTimelineMessage({transport:e.name+(e.options.useTLS?"s":"")})),e.hooks.isInitialized()?e.changeState("initialized"):e.hooks.file?(e.changeState("initializing"),S.load(e.hooks.file,{useTLS:e.options.useTLS},function(t,n){e.hooks.isInitialized()?(e.changeState("initialized"),n(!0)):(t&&e.onError(t),e.onClose(),n(!1))})):e.onClose()},dr={getRequest:function(e){var t=new window.XDomainRequest;return t.ontimeout=function(){e.emit("error",new I),e.close()},t.onerror=function(n){e.emit("error",n),e.close()},t.onprogress=function(){t.responseText&&t.responseText.length>0&&e.onChunk(200,t.responseText)},t.onload=function(){t.responseText&&t.responseText.length>0&&e.onChunk(200,t.responseText),e.emit("finished",200),e.close()},t},abortRequest:function(e){e.ontimeout=e.onerror=e.onprogress=e.onload=null,e.abort()}},vr=dr,yr=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),gr=256*1024,_r=function(e){yr(t,e);function t(n,r,i){var o=e.call(this)||this;return o.hooks=n,o.method=r,o.url=i,o}return t.prototype.start=function(n){var r=this;this.position=0,this.xhr=this.hooks.getRequest(this),this.unloader=function(){r.close()},m.addUnloadListener(this.unloader),this.xhr.open(this.method,this.url,!0),this.xhr.setRequestHeader&&this.xhr.setRequestHeader("Content-Type","application/json"),this.xhr.send(n)},t.prototype.close=function(){this.unloader&&(m.removeUnloadListener(this.unloader),this.unloader=null),this.xhr&&(this.hooks.abortRequest(this.xhr),this.xhr=null)},t.prototype.onChunk=function(n,r){for(;;){var i=this.advanceBuffer(r);if(i)this.emit("chunk",{status:n,data:i});else break}this.isBufferTooLong(r)&&this.emit("buffer_too_long")},t.prototype.advanceBuffer=function(n){var r=n.slice(this.position),i=r.indexOf(` +`);return i!==-1?(this.position+=i+1,r.slice(0,i)):null},t.prototype.isBufferTooLong=function(n){return this.position===n.length&&n.length>gr},t}(V),br=_r,Tt;(function(e){e[e.CONNECTING=0]="CONNECTING",e[e.OPEN=1]="OPEN",e[e.CLOSED=3]="CLOSED"})(Tt||(Tt={}));var $=Tt,mr=1,wr=function(){function e(t,n){this.hooks=t,this.session=Yt(1e3)+"/"+Tr(8),this.location=kr(n),this.readyState=$.CONNECTING,this.openStream()}return e.prototype.send=function(t){return this.sendRaw(JSON.stringify([t]))},e.prototype.ping=function(){this.hooks.sendHeartbeat(this)},e.prototype.close=function(t,n){this.onClose(t,n,!0)},e.prototype.sendRaw=function(t){if(this.readyState===$.OPEN)try{return m.createSocketRequest("POST",Kt(Sr(this.location,this.session))).start(t),!0}catch{return!1}else return!1},e.prototype.reconnect=function(){this.closeStream(),this.openStream()},e.prototype.onClose=function(t,n,r){this.closeStream(),this.readyState=$.CLOSED,this.onclose&&this.onclose({code:t,reason:n,wasClean:r})},e.prototype.onChunk=function(t){if(t.status===200){this.readyState===$.OPEN&&this.onActivity();var n,r=t.data.slice(0,1);switch(r){case"o":n=JSON.parse(t.data.slice(1)||"{}"),this.onOpen(n);break;case"a":n=JSON.parse(t.data.slice(1)||"[]");for(var i=0;i0&&e.onChunk(n.status,n.responseText);break;case 4:n.responseText&&n.responseText.length>0&&e.onChunk(n.status,n.responseText),e.emit("finished",n.status),e.close();break}},n},abortRequest:function(e){e.onreadystatechange=null,e.abort()}},Rr=Lr,Ir={createStreamingSocket:function(e){return this.createSocket(Or,e)},createPollingSocket:function(e){return this.createSocket(Er,e)},createSocket:function(e,t){return new Pr(e,t)},createXHR:function(e,t){return this.createRequest(Rr,e,t)},createRequest:function(e,t,n){return new br(e,t,n)}},$t=Ir;$t.createXDR=function(e,t){return this.createRequest(vr,e,t)};var jr=$t,Nr={nextAuthCallbackID:1,auth_callbacks:{},ScriptReceivers:s,DependenciesReceivers:T,getDefaultStrategy:fr,Transports:yn,transportConnectionInitializer:pr,HTTPFactory:jr,TimelineTransport:Ye,getXHRAPI:function(){return window.XMLHttpRequest},getWebSocketAPI:function(){return window.WebSocket||window.MozWebSocket},setup:function(e){var t=this;window.Pusher=e;var n=function(){t.onDocumentBody(e.ready)};window.JSON?n():S.load("json2",{},n)},getDocument:function(){return document},getProtocol:function(){return this.getDocument().location.protocol},getAuthorizers:function(){return{ajax:we,jsonp:Xe}},onDocumentBody:function(e){var t=this;document.body?e():setTimeout(function(){t.onDocumentBody(e)},0)},createJSONPRequest:function(e,t){return new Ge(e,t)},createScriptRequest:function(e){return new We(e)},getLocalStorage:function(){try{return window.localStorage}catch{return}},createXHR:function(){return this.getXHRAPI()?this.createXMLHttpRequest():this.createMicrosoftXHR()},createXMLHttpRequest:function(){var e=this.getXHRAPI();return new e},createMicrosoftXHR:function(){return new ActiveXObject("Microsoft.XMLHTTP")},getNetwork:function(){return bn},createWebSocket:function(e){var t=this.getWebSocketAPI();return new t(e)},createSocketRequest:function(e,t){if(this.isXHRSupported())return this.HTTPFactory.createXHR(e,t);if(this.isXDRSupported(t.indexOf("https:")===0))return this.HTTPFactory.createXDR(e,t);throw"Cross-origin HTTP requests are not supported"},isXHRSupported:function(){var e=this.getXHRAPI();return!!e&&new e().withCredentials!==void 0},isXDRSupported:function(e){var t=e?"https:":"http:",n=this.getProtocol();return!!window.XDomainRequest&&n===t},addUnloadListener:function(e){window.addEventListener!==void 0?window.addEventListener("unload",e,!1):window.attachEvent!==void 0&&window.attachEvent("onunload",e)},removeUnloadListener:function(e){window.addEventListener!==void 0?window.removeEventListener("unload",e,!1):window.detachEvent!==void 0&&window.detachEvent("onunload",e)},randomInt:function(e){var t=function(){var n=window.crypto||window.msCrypto,r=n.getRandomValues(new Uint32Array(1))[0];return r/Math.pow(2,32)};return Math.floor(t()*e)}},m=Nr,Pt;(function(e){e[e.ERROR=3]="ERROR",e[e.INFO=6]="INFO",e[e.DEBUG=7]="DEBUG"})(Pt||(Pt={}));var lt=Pt,qr=function(){function e(t,n,r){this.key=t,this.session=n,this.events=[],this.options=r||{},this.sent=0,this.uniqueID=0}return e.prototype.log=function(t,n){t<=this.options.level&&(this.events.push(U({},n,{timestamp:j.now()})),this.options.limit&&this.events.length>this.options.limit&&this.events.shift())},e.prototype.error=function(t){this.log(lt.ERROR,t)},e.prototype.info=function(t){this.log(lt.INFO,t)},e.prototype.debug=function(t){this.log(lt.DEBUG,t)},e.prototype.isEmpty=function(){return this.events.length===0},e.prototype.send=function(t,n){var r=this,i=U({session:this.session,bundle:this.sent+1,key:this.key,lib:"js",version:this.options.version,cluster:this.options.cluster,features:this.options.features,timeline:this.events},this.options.params);return this.events=[],t(i,function(o,u){o||r.sent++,n&&n(o,u)}),!0},e.prototype.generateUniqueID=function(){return this.uniqueID++,this.uniqueID},e}(),Ur=qr,Dr=function(){function e(t,n,r,i){this.name=t,this.priority=n,this.transport=r,this.options=i||{}}return e.prototype.isSupported=function(){return this.transport.isSupported({useTLS:this.options.useTLS})},e.prototype.connect=function(t,n){var r=this;if(this.isSupported()){if(this.priority"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Li(l){if(l===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return l}function Ri(l,h){if(h&&(typeof h=="object"||typeof h=="function"))return h;if(h!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Li(l)}function H(l){var h=Ei();return function(){var c=pt(l),s;if(h){var f=pt(this).constructor;s=Reflect.construct(c,arguments,f)}else s=c.apply(this,arguments);return Ri(this,s)}}var Lt=function(){function l(){L(this,l)}return R(l,[{key:"listenForWhisper",value:function(a,c){return this.listen(".client-"+a,c)}},{key:"notification",value:function(a){return this.listen(".Illuminate\\Notifications\\Events\\BroadcastNotificationCreated",a)}},{key:"stopListeningForWhisper",value:function(a,c){return this.stopListening(".client-"+a,c)}}]),l}(),de=function(){function l(h){L(this,l),this.namespace=h}return R(l,[{key:"format",value:function(a){return[".","\\"].includes(a.charAt(0))?a.substring(1):(this.namespace&&(a=this.namespace+"."+a),a.replace(/\./g,"\\"))}},{key:"setNamespace",value:function(a){this.namespace=a}}]),l}(),vt=function(l){D(a,l);var h=H(a);function a(c,s,f){var d;return L(this,a),d=h.call(this),d.name=s,d.pusher=c,d.options=f,d.eventFormatter=new de(d.options.namespace),d.subscribe(),d}return R(a,[{key:"subscribe",value:function(){this.subscription=this.pusher.subscribe(this.name)}},{key:"unsubscribe",value:function(){this.pusher.unsubscribe(this.name)}},{key:"listen",value:function(s,f){return this.on(this.eventFormatter.format(s),f),this}},{key:"listenToAll",value:function(s){var f=this;return this.subscription.bind_global(function(d,N){if(!d.startsWith("pusher:")){var P=f.options.namespace.replace(/\./g,"\\"),T=d.startsWith(P)?d.substring(P.length+1):"."+d;s(T,N)}}),this}},{key:"stopListening",value:function(s,f){return f?this.subscription.unbind(this.eventFormatter.format(s),f):this.subscription.unbind(this.eventFormatter.format(s)),this}},{key:"stopListeningToAll",value:function(s){return s?this.subscription.unbind_global(s):this.subscription.unbind_global(),this}},{key:"subscribed",value:function(s){return this.on("pusher:subscription_succeeded",function(){s()}),this}},{key:"error",value:function(s){return this.on("pusher:subscription_error",function(f){s(f)}),this}},{key:"on",value:function(s,f){return this.subscription.bind(s,f),this}}]),a}(Lt),Ii=function(l){D(a,l);var h=H(a);function a(){return L(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}}]),a}(vt),ji=function(l){D(a,l);var h=H(a);function a(){return L(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}}]),a}(vt),Ni=function(l){D(a,l);var h=H(a);function a(){return L(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this.on("pusher:subscription_succeeded",function(f){s(Object.keys(f.members).map(function(d){return f.members[d]}))}),this}},{key:"joining",value:function(s){return this.on("pusher:member_added",function(f){s(f.info)}),this}},{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}},{key:"leaving",value:function(s){return this.on("pusher:member_removed",function(f){s(f.info)}),this}}]),a}(vt),ve=function(l){D(a,l);var h=H(a);function a(c,s,f){var d;return L(this,a),d=h.call(this),d.events={},d.listeners={},d.name=s,d.socket=c,d.options=f,d.eventFormatter=new de(d.options.namespace),d.subscribe(),d}return R(a,[{key:"subscribe",value:function(){this.socket.emit("subscribe",{channel:this.name,auth:this.options.auth||{}})}},{key:"unsubscribe",value:function(){this.unbind(),this.socket.emit("unsubscribe",{channel:this.name,auth:this.options.auth||{}})}},{key:"listen",value:function(s,f){return this.on(this.eventFormatter.format(s),f),this}},{key:"stopListening",value:function(s,f){return this.unbindEvent(this.eventFormatter.format(s),f),this}},{key:"subscribed",value:function(s){return this.on("connect",function(f){s(f)}),this}},{key:"error",value:function(s){return this}},{key:"on",value:function(s,f){var d=this;return this.listeners[s]=this.listeners[s]||[],this.events[s]||(this.events[s]=function(N,P){d.name===N&&d.listeners[s]&&d.listeners[s].forEach(function(T){return T(P)})},this.socket.on(s,this.events[s])),this.listeners[s].push(f),this}},{key:"unbind",value:function(){var s=this;Object.keys(this.events).forEach(function(f){s.unbindEvent(f)})}},{key:"unbindEvent",value:function(s,f){this.listeners[s]=this.listeners[s]||[],f&&(this.listeners[s]=this.listeners[s].filter(function(d){return d!==f})),(!f||this.listeners[s].length===0)&&(this.events[s]&&(this.socket.removeListener(s,this.events[s]),delete this.events[s]),delete this.listeners[s])}}]),a}(Lt),ye=function(l){D(a,l);var h=H(a);function a(){return L(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.socket.emit("client event",{channel:this.name,event:"client-".concat(s),data:f}),this}}]),a}(ve),qi=function(l){D(a,l);var h=H(a);function a(){return L(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this.on("presence:subscribed",function(f){s(f.map(function(d){return d.user_info}))}),this}},{key:"joining",value:function(s){return this.on("presence:joining",function(f){return s(f.user_info)}),this}},{key:"whisper",value:function(s,f){return this.socket.emit("client event",{channel:this.name,event:"client-".concat(s),data:f}),this}},{key:"leaving",value:function(s){return this.on("presence:leaving",function(f){return s(f.user_info)}),this}}]),a}(ye),dt=function(l){D(a,l);var h=H(a);function a(){return L(this,a),h.apply(this,arguments)}return R(a,[{key:"subscribe",value:function(){}},{key:"unsubscribe",value:function(){}},{key:"listen",value:function(s,f){return this}},{key:"listenToAll",value:function(s){return this}},{key:"stopListening",value:function(s,f){return this}},{key:"subscribed",value:function(s){return this}},{key:"error",value:function(s){return this}},{key:"on",value:function(s,f){return this}}]),a}(Lt),fe=function(l){D(a,l);var h=H(a);function a(){return L(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this}}]),a}(dt),Ui=function(l){D(a,l);var h=H(a);function a(){return L(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this}},{key:"joining",value:function(s){return this}},{key:"whisper",value:function(s,f){return this}},{key:"leaving",value:function(s){return this}}]),a}(dt),Rt=function(){function l(h){L(this,l),this._defaultOptions={auth:{headers:{}},authEndpoint:"/broadcasting/auth",userAuthentication:{endpoint:"/broadcasting/user-auth",headers:{}},broadcaster:"pusher",csrfToken:null,bearerToken:null,host:null,key:null,namespace:"App.Events"},this.setOptions(h),this.connect()}return R(l,[{key:"setOptions",value:function(a){this.options=st(this._defaultOptions,a);var c=this.csrfToken();return c&&(this.options.auth.headers["X-CSRF-TOKEN"]=c,this.options.userAuthentication.headers["X-CSRF-TOKEN"]=c),c=this.options.bearerToken,c&&(this.options.auth.headers.Authorization="Bearer "+c,this.options.userAuthentication.headers.Authorization="Bearer "+c),a}},{key:"csrfToken",value:function(){var a;return typeof window<"u"&&window.Laravel&&window.Laravel.csrfToken?window.Laravel.csrfToken:this.options.csrfToken?this.options.csrfToken:typeof document<"u"&&typeof document.querySelector=="function"&&(a=document.querySelector('meta[name="csrf-token"]'))?a.getAttribute("content"):null}}]),l}(),pe=function(l){D(a,l);var h=H(a);function a(){var c;return L(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){typeof this.options.client<"u"?this.pusher=this.options.client:this.options.Pusher?this.pusher=new this.options.Pusher(this.options.key,this.options):this.pusher=new Pusher(this.options.key,this.options)}},{key:"signin",value:function(){this.pusher.signin()}},{key:"listen",value:function(s,f,d){return this.channel(s).listen(f,d)}},{key:"channel",value:function(s){return this.channels[s]||(this.channels[s]=new vt(this.pusher,s,this.options)),this.channels[s]}},{key:"privateChannel",value:function(s){return this.channels["private-"+s]||(this.channels["private-"+s]=new Ii(this.pusher,"private-"+s,this.options)),this.channels["private-"+s]}},{key:"encryptedPrivateChannel",value:function(s){return this.channels["private-encrypted-"+s]||(this.channels["private-encrypted-"+s]=new ji(this.pusher,"private-encrypted-"+s,this.options)),this.channels["private-encrypted-"+s]}},{key:"presenceChannel",value:function(s){return this.channels["presence-"+s]||(this.channels["presence-"+s]=new Ni(this.pusher,"presence-"+s,this.options)),this.channels["presence-"+s]}},{key:"leave",value:function(s){var f=this,d=[s,"private-"+s,"private-encrypted-"+s,"presence-"+s];d.forEach(function(N,P){f.leaveChannel(N)})}},{key:"leaveChannel",value:function(s){this.channels[s]&&(this.channels[s].unsubscribe(),delete this.channels[s])}},{key:"socketId",value:function(){return this.pusher.connection.socket_id}},{key:"disconnect",value:function(){this.pusher.disconnect()}}]),a}(Rt),Di=function(l){D(a,l);var h=H(a);function a(){var c;return L(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){var s=this,f=this.getSocketIO();return this.socket=f(this.options.host,this.options),this.socket.on("reconnect",function(){Object.values(s.channels).forEach(function(d){d.subscribe()})}),this.socket}},{key:"getSocketIO",value:function(){if(typeof this.options.client<"u")return this.options.client;if(typeof io<"u")return io;throw new Error("Socket.io client not found. Should be globally available or passed via options.client")}},{key:"listen",value:function(s,f,d){return this.channel(s).listen(f,d)}},{key:"channel",value:function(s){return this.channels[s]||(this.channels[s]=new ve(this.socket,s,this.options)),this.channels[s]}},{key:"privateChannel",value:function(s){return this.channels["private-"+s]||(this.channels["private-"+s]=new ye(this.socket,"private-"+s,this.options)),this.channels["private-"+s]}},{key:"presenceChannel",value:function(s){return this.channels["presence-"+s]||(this.channels["presence-"+s]=new qi(this.socket,"presence-"+s,this.options)),this.channels["presence-"+s]}},{key:"leave",value:function(s){var f=this,d=[s,"private-"+s,"presence-"+s];d.forEach(function(N){f.leaveChannel(N)})}},{key:"leaveChannel",value:function(s){this.channels[s]&&(this.channels[s].unsubscribe(),delete this.channels[s])}},{key:"socketId",value:function(){return this.socket.id}},{key:"disconnect",value:function(){this.socket.disconnect()}}]),a}(Rt),Hi=function(l){D(a,l);var h=H(a);function a(){var c;return L(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){}},{key:"listen",value:function(s,f,d){return new dt}},{key:"channel",value:function(s){return new dt}},{key:"privateChannel",value:function(s){return new fe}},{key:"encryptedPrivateChannel",value:function(s){return new fe}},{key:"presenceChannel",value:function(s){return new Ui}},{key:"leave",value:function(s){}},{key:"leaveChannel",value:function(s){}},{key:"socketId",value:function(){return"fake-socket-id"}},{key:"disconnect",value:function(){}}]),a}(Rt),ge=function(){function l(h){L(this,l),this.options=h,this.connect(),this.options.withoutInterceptors||this.registerInterceptors()}return R(l,[{key:"channel",value:function(a){return this.connector.channel(a)}},{key:"connect",value:function(){if(this.options.broadcaster=="reverb")this.connector=new pe(st(st({},this.options),{cluster:""}));else if(this.options.broadcaster=="pusher")this.connector=new pe(this.options);else if(this.options.broadcaster=="socket.io")this.connector=new Di(this.options);else if(this.options.broadcaster=="null")this.connector=new Hi(this.options);else if(typeof this.options.broadcaster=="function")this.connector=new this.options.broadcaster(this.options);else throw new Error("Broadcaster ".concat(ft(this.options.broadcaster)," ").concat(this.options.broadcaster," is not supported."))}},{key:"disconnect",value:function(){this.connector.disconnect()}},{key:"join",value:function(a){return this.connector.presenceChannel(a)}},{key:"leave",value:function(a){this.connector.leave(a)}},{key:"leaveChannel",value:function(a){this.connector.leaveChannel(a)}},{key:"leaveAllChannels",value:function(){for(var a in this.connector.channels)this.leaveChannel(a)}},{key:"listen",value:function(a,c,s){return this.connector.listen(a,c,s)}},{key:"private",value:function(a){return this.connector.privateChannel(a)}},{key:"encryptedPrivate",value:function(a){return this.connector.encryptedPrivateChannel(a)}},{key:"socketId",value:function(){return this.connector.socketId()}},{key:"registerInterceptors",value:function(){typeof Vue=="function"&&Vue.http&&this.registerVueRequestInterceptor(),typeof axios=="function"&&this.registerAxiosRequestInterceptor(),typeof jQuery=="function"&&this.registerjQueryAjaxSetup(),(typeof Turbo>"u"?"undefined":ft(Turbo))==="object"&&this.registerTurboRequestInterceptor()}},{key:"registerVueRequestInterceptor",value:function(){var a=this;Vue.http.interceptors.push(function(c,s){a.socketId()&&c.headers.set("X-Socket-ID",a.socketId()),s()})}},{key:"registerAxiosRequestInterceptor",value:function(){var a=this;axios.interceptors.request.use(function(c){return a.socketId()&&(c.headers["X-Socket-Id"]=a.socketId()),c})}},{key:"registerjQueryAjaxSetup",value:function(){var a=this;typeof jQuery.ajax<"u"&&jQuery.ajaxPrefilter(function(c,s,f){a.socketId()&&f.setRequestHeader("X-Socket-Id",a.socketId())})}},{key:"registerTurboRequestInterceptor",value:function(){var a=this;document.addEventListener("turbo:before-fetch-request",function(c){c.detail.fetchOptions.headers["X-Socket-Id"]=a.socketId()})}}]),l}();var be=Ai(_e(),1);window.EchoFactory=ge;window.Pusher=be.default;})(); /*! Bundled license information: pusher-js/dist/web/pusher.js: diff --git a/public/js/filament/forms/components/file-upload.js b/public/js/filament/forms/components/file-upload.js index 5d55c8b57..2ade04f13 100644 --- a/public/js/filament/forms/components/file-upload.js +++ b/public/js/filament/forms/components/file-upload.js @@ -1,6 +1,6 @@ -var Go=Object.defineProperty;var Vo=(e,t)=>{for(var i in t)Go(e,i,{get:t[i],enumerable:!0})};var ea={};Vo(ea,{FileOrigin:()=>Dt,FileStatus:()=>pt,OptionTypes:()=>Ni,Status:()=>Kn,create:()=>ct,destroy:()=>dt,find:()=>Gi,getOptions:()=>Vi,parse:()=>Bi,registerPlugin:()=>_e,setOptions:()=>Ot,supported:()=>zi});var Uo=e=>e instanceof HTMLElement,ko=(e,t=[],i=[])=>{let a={...e},n=[],r=[],o=()=>({...a}),l=()=>{let p=[...n];return n.length=0,p},s=()=>{let p=[...r];r.length=0,p.forEach(({type:m,data:g})=>{u(m,g)})},u=(p,m,g)=>{if(g&&!document.hidden){r.push({type:p,data:m});return}f[p]&&f[p](m),n.push({type:p,data:m})},c=(p,...m)=>h[p]?h[p](...m):null,d={getState:o,processActionQueue:l,processDispatchQueue:s,dispatch:u,query:c},h={};t.forEach(p=>{h={...p(a),...h}});let f={};return i.forEach(p=>{f={...p(u,c,a),...f}}),d},Ho=(e,t,i)=>{if(typeof i=="function"){e[t]=i;return}Object.defineProperty(e,t,{...i})},te=(e,t)=>{for(let i in e)e.hasOwnProperty(i)&&t(i,e[i])},Ue=e=>{let t={};return te(e,i=>{Ho(t,i,e[i])}),t},ne=(e,t,i=null)=>{if(i===null)return e.getAttribute(t)||e.hasAttribute(t);e.setAttribute(t,i)},Wo="http://www.w3.org/2000/svg",Yo=["svg","path"],wa=e=>Yo.includes(e),ei=(e,t,i={})=>{typeof t=="object"&&(i=t,t=null);let a=wa(e)?document.createElementNS(Wo,e):document.createElement(e);return t&&(wa(e)?ne(a,"class",t):a.className=t),te(i,(n,r)=>{ne(a,n,r)}),a},$o=e=>(t,i)=>{typeof i<"u"&&e.children[i]?e.insertBefore(t,e.children[i]):e.appendChild(t)},qo=(e,t)=>(i,a)=>(typeof a<"u"?t.splice(a,0,i):t.push(i),i),Xo=(e,t)=>i=>(t.splice(t.indexOf(i),1),i.element.parentNode&&e.removeChild(i.element),i),jo=(()=>typeof window<"u"&&typeof window.document<"u")(),un=()=>jo,Qo=un()?ei("svg"):{},Zo="children"in Qo?e=>e.children.length:e=>e.childNodes.length,hn=(e,t,i,a)=>{let n=i[0]||e.left,r=i[1]||e.top,o=n+e.width,l=r+e.height*(a[1]||1),s={element:{...e},inner:{left:e.left,top:e.top,right:e.right,bottom:e.bottom},outer:{left:n,top:r,right:o,bottom:l}};return t.filter(u=>!u.isRectIgnored()).map(u=>u.rect).forEach(u=>{va(s.inner,{...u.inner}),va(s.outer,{...u.outer})}),Aa(s.inner),s.outer.bottom+=s.element.marginBottom,s.outer.right+=s.element.marginRight,Aa(s.outer),s},va=(e,t)=>{t.top+=e.top,t.right+=e.left,t.bottom+=e.top,t.left+=e.left,t.bottom>e.bottom&&(e.bottom=t.bottom),t.right>e.right&&(e.right=t.right)},Aa=e=>{e.width=e.right-e.left,e.height=e.bottom-e.top},$e=e=>typeof e=="number",Ko=(e,t,i,a=.001)=>Math.abs(e-t){let a=null,n=null,r=0,o=!1,u=Ue({interpolate:(c,d)=>{if(o)return;if(!($e(a)&&$e(n))){o=!0,r=0;return}let h=-(n-a)*e;r+=h/i,n+=r,r*=t,Ko(n,a,r)||d?(n=a,r=0,o=!0,u.onupdate(n),u.oncomplete(n)):u.onupdate(n)},target:{set:c=>{if($e(c)&&!$e(n)&&(n=c),a===null&&(a=c,n=c),a=c,n===a||typeof a>"u"){o=!0,r=0,u.onupdate(n),u.oncomplete(n);return}o=!1},get:()=>a},resting:{get:()=>o},onupdate:c=>{},oncomplete:c=>{}});return u};var el=e=>e<.5?2*e*e:-1+(4-2*e)*e,tl=({duration:e=500,easing:t=el,delay:i=0}={})=>{let a=null,n,r,o=!0,l=!1,s=null,c=Ue({interpolate:(d,h)=>{o||s===null||(a===null&&(a=d),!(d-a=e||h?(n=1,r=l?0:1,c.onupdate(r*s),c.oncomplete(r*s),o=!0):(r=n/e,c.onupdate((n>=0?t(l?1-r:r):0)*s))))},target:{get:()=>l?0:s,set:d=>{if(s===null){s=d,c.onupdate(d),c.oncomplete(d);return}do},onupdate:d=>{},oncomplete:d=>{}});return c},La={spring:Jo,tween:tl},il=(e,t,i)=>{let a=e[t]&&typeof e[t][i]=="object"?e[t][i]:e[t]||e,n=typeof a=="string"?a:a.type,r=typeof a=="object"?{...a}:{};return La[n]?La[n](r):null},Ui=(e,t,i,a=!1)=>{t=Array.isArray(t)?t:[t],t.forEach(n=>{e.forEach(r=>{let o=r,l=()=>i[r],s=u=>i[r]=u;typeof r=="object"&&(o=r.key,l=r.getter||l,s=r.setter||s),!(n[o]&&!a)&&(n[o]={get:l,set:s})})})},al=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a})=>{let n={...t},r=[];return te(e,(o,l)=>{let s=il(l);if(!s)return;s.onupdate=c=>{t[o]=c},s.target=n[o],Ui([{key:o,setter:c=>{s.target!==c&&(s.target=c)},getter:()=>t[o]}],[i,a],t,!0),r.push(s)}),{write:o=>{let l=document.hidden,s=!0;return r.forEach(u=>{u.resting||(s=!1),u.interpolate(o,l)}),s},destroy:()=>{}}},nl=e=>(t,i)=>{e.addEventListener(t,i)},rl=e=>(t,i)=>{e.removeEventListener(t,i)},ol=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a,viewState:n,view:r})=>{let o=[],l=nl(r.element),s=rl(r.element);return a.on=(u,c)=>{o.push({type:u,fn:c}),l(u,c)},a.off=(u,c)=>{o.splice(o.findIndex(d=>d.type===u&&d.fn===c),1),s(u,c)},{write:()=>!0,destroy:()=>{o.forEach(u=>{s(u.type,u.fn)})}}},ll=({mixinConfig:e,viewProps:t,viewExternalAPI:i})=>{Ui(e,i,t)},fe=e=>e!=null,sl={opacity:1,scaleX:1,scaleY:1,translateX:0,translateY:0,rotateX:0,rotateY:0,rotateZ:0,originX:0,originY:0},cl=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a,view:n})=>{let r={...t},o={};Ui(e,[i,a],t);let l=()=>[t.translateX||0,t.translateY||0],s=()=>[t.scaleX||0,t.scaleY||0],u=()=>n.rect?hn(n.rect,n.childViews,l(),s()):null;return i.rect={get:u},a.rect={get:u},e.forEach(c=>{t[c]=typeof r[c]>"u"?sl[c]:r[c]}),{write:()=>{if(dl(o,t))return ul(n.element,t),Object.assign(o,{...t}),!0},destroy:()=>{}}},dl=(e,t)=>{if(Object.keys(e).length!==Object.keys(t).length)return!0;for(let i in t)if(t[i]!==e[i])return!0;return!1},ul=(e,{opacity:t,perspective:i,translateX:a,translateY:n,scaleX:r,scaleY:o,rotateX:l,rotateY:s,rotateZ:u,originX:c,originY:d,width:h,height:f})=>{let p="",m="";(fe(c)||fe(d))&&(m+=`transform-origin: ${c||0}px ${d||0}px;`),fe(i)&&(p+=`perspective(${i}px) `),(fe(a)||fe(n))&&(p+=`translate3d(${a||0}px, ${n||0}px, 0) `),(fe(r)||fe(o))&&(p+=`scale3d(${fe(r)?r:1}, ${fe(o)?o:1}, 1) `),fe(u)&&(p+=`rotateZ(${u}rad) `),fe(l)&&(p+=`rotateX(${l}rad) `),fe(s)&&(p+=`rotateY(${s}rad) `),p.length&&(m+=`transform:${p};`),fe(t)&&(m+=`opacity:${t};`,t===0&&(m+="visibility:hidden;"),t<1&&(m+="pointer-events:none;")),fe(f)&&(m+=`height:${f}px;`),fe(h)&&(m+=`width:${h}px;`);let g=e.elementCurrentStyle||"";(m.length!==g.length||m!==g)&&(e.style.cssText=m,e.elementCurrentStyle=m)},hl={styles:cl,listeners:ol,animations:al,apis:ll},Ma=(e={},t={},i={})=>(t.layoutCalculated||(e.paddingTop=parseInt(i.paddingTop,10)||0,e.marginTop=parseInt(i.marginTop,10)||0,e.marginRight=parseInt(i.marginRight,10)||0,e.marginBottom=parseInt(i.marginBottom,10)||0,e.marginLeft=parseInt(i.marginLeft,10)||0,t.layoutCalculated=!0),e.left=t.offsetLeft||0,e.top=t.offsetTop||0,e.width=t.offsetWidth||0,e.height=t.offsetHeight||0,e.right=e.left+e.width,e.bottom=e.top+e.height,e.scrollTop=t.scrollTop,e.hidden=t.offsetParent===null,e),re=({tag:e="div",name:t=null,attributes:i={},read:a=()=>{},write:n=()=>{},create:r=()=>{},destroy:o=()=>{},filterFrameActionsForChild:l=(f,p)=>p,didCreateView:s=()=>{},didWriteView:u=()=>{},ignoreRect:c=!1,ignoreRectUpdate:d=!1,mixins:h=[]}={})=>(f,p={})=>{let m=ei(e,`filepond--${t}`,i),g=window.getComputedStyle(m,null),b=Ma(),E=null,I=!1,_=[],y=[],T={},v={},R=[n],S=[a],D=[o],x=()=>m,O=()=>_.concat(),z=()=>T,A=U=>(W,$)=>W(U,$),F=()=>E||(E=hn(b,_,[0,0],[1,1]),E),w=()=>g,L=()=>{E=null,_.forEach($=>$._read()),!(d&&b.width&&b.height)&&Ma(b,m,g);let W={root:j,props:p,rect:b};S.forEach($=>$(W))},C=(U,W,$)=>{let le=W.length===0;return R.forEach(J=>{J({props:p,root:j,actions:W,timestamp:U,shouldOptimize:$})===!1&&(le=!1)}),y.forEach(J=>{J.write(U)===!1&&(le=!1)}),_.filter(J=>!!J.element.parentNode).forEach(J=>{J._write(U,l(J,W),$)||(le=!1)}),_.forEach((J,V)=>{J.element.parentNode||(j.appendChild(J.element,V),J._read(),J._write(U,l(J,W),$),le=!1)}),I=le,u({props:p,root:j,actions:W,timestamp:U}),le},P=()=>{y.forEach(U=>U.destroy()),D.forEach(U=>{U({root:j,props:p})}),_.forEach(U=>U._destroy())},G={element:{get:x},style:{get:w},childViews:{get:O}},B={...G,rect:{get:F},ref:{get:z},is:U=>t===U,appendChild:$o(m),createChildView:A(f),linkView:U=>(_.push(U),U),unlinkView:U=>{_.splice(_.indexOf(U),1)},appendChildView:qo(m,_),removeChildView:Xo(m,_),registerWriter:U=>R.push(U),registerReader:U=>S.push(U),registerDestroyer:U=>D.push(U),invalidateLayout:()=>m.layoutCalculated=!1,dispatch:f.dispatch,query:f.query},X={element:{get:x},childViews:{get:O},rect:{get:F},resting:{get:()=>I},isRectIgnored:()=>c,_read:L,_write:C,_destroy:P},q={...G,rect:{get:()=>b}};Object.keys(h).sort((U,W)=>U==="styles"?1:W==="styles"?-1:0).forEach(U=>{let W=hl[U]({mixinConfig:h[U],viewProps:p,viewState:v,viewInternalAPI:B,viewExternalAPI:X,view:Ue(q)});W&&y.push(W)});let j=Ue(B);r({root:j,props:p});let ue=Zo(m);return _.forEach((U,W)=>{j.appendChild(U.element,ue+W)}),s(j),Ue(X)},fl=(e,t,i=60)=>{let a="__framePainter";if(window[a]){window[a].readers.push(e),window[a].writers.push(t);return}window[a]={readers:[e],writers:[t]};let n=window[a],r=1e3/i,o=null,l=null,s=null,u=null,c=()=>{document.hidden?(s=()=>window.setTimeout(()=>d(performance.now()),r),u=()=>window.clearTimeout(l)):(s=()=>window.requestAnimationFrame(d),u=()=>window.cancelAnimationFrame(l))};document.addEventListener("visibilitychange",()=>{u&&u(),c(),d(performance.now())});let d=h=>{l=s(d),o||(o=h);let f=h-o;f<=r||(o=h-f%r,n.readers.forEach(p=>p()),n.writers.forEach(p=>p(h)))};return c(),d(performance.now()),{pause:()=>{u(l)}}},me=(e,t)=>({root:i,props:a,actions:n=[],timestamp:r,shouldOptimize:o})=>{n.filter(l=>e[l.type]).forEach(l=>e[l.type]({root:i,props:a,action:l.data,timestamp:r,shouldOptimize:o})),t&&t({root:i,props:a,actions:n,timestamp:r,shouldOptimize:o})},Oa=(e,t)=>t.parentNode.insertBefore(e,t),xa=(e,t)=>t.parentNode.insertBefore(e,t.nextSibling),ni=e=>Array.isArray(e),Ne=e=>e==null,pl=e=>e.trim(),ri=e=>""+e,ml=(e,t=",")=>Ne(e)?[]:ni(e)?e:ri(e).split(t).map(pl).filter(i=>i.length),fn=e=>typeof e=="boolean",pn=e=>fn(e)?e:e==="true",pe=e=>typeof e=="string",mn=e=>$e(e)?e:pe(e)?ri(e).replace(/[a-z]+/gi,""):0,Jt=e=>parseInt(mn(e),10),Da=e=>parseFloat(mn(e)),ft=e=>$e(e)&&isFinite(e)&&Math.floor(e)===e,Pa=(e,t=1e3)=>{if(ft(e))return e;let i=ri(e).trim();return/MB$/i.test(i)?(i=i.replace(/MB$i/,"").trim(),Jt(i)*t*t):/KB/i.test(i)?(i=i.replace(/KB$i/,"").trim(),Jt(i)*t):Jt(i)},qe=e=>typeof e=="function",gl=e=>{let t=self,i=e.split("."),a=null;for(;a=i.shift();)if(t=t[a],!t)return null;return t},Fa={process:"POST",patch:"PATCH",revert:"DELETE",fetch:"GET",restore:"GET",load:"GET"},El=e=>{let t={};return t.url=pe(e)?e:e.url||"",t.timeout=e.timeout?parseInt(e.timeout,10):0,t.headers=e.headers?e.headers:{},te(Fa,i=>{t[i]=Tl(i,e[i],Fa[i],t.timeout,t.headers)}),t.process=e.process||pe(e)||e.url?t.process:null,t.remove=e.remove||null,delete t.headers,t},Tl=(e,t,i,a,n)=>{if(t===null)return null;if(typeof t=="function")return t;let r={url:i==="GET"||i==="PATCH"?`?${e}=`:"",method:i,headers:n,withCredentials:!1,timeout:a,onload:null,ondata:null,onerror:null};if(pe(t))return r.url=t,r;if(Object.assign(r,t),pe(r.headers)){let o=r.headers.split(/:(.+)/);r.headers={header:o[0],value:o[1]}}return r.withCredentials=pn(r.withCredentials),r},Il=e=>El(e),bl=e=>e===null,ce=e=>typeof e=="object"&&e!==null,_l=e=>ce(e)&&pe(e.url)&&ce(e.process)&&ce(e.revert)&&ce(e.restore)&&ce(e.fetch),Li=e=>ni(e)?"array":bl(e)?"null":ft(e)?"int":/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(e)?"bytes":_l(e)?"api":typeof e,Rl=e=>e.replace(/{\s*'/g,'{"').replace(/'\s*}/g,'"}').replace(/'\s*:/g,'":').replace(/:\s*'/g,':"').replace(/,\s*'/g,',"').replace(/'\s*,/g,'",'),yl={array:ml,boolean:pn,int:e=>Li(e)==="bytes"?Pa(e):Jt(e),number:Da,float:Da,bytes:Pa,string:e=>qe(e)?e:ri(e),function:e=>gl(e),serverapi:Il,object:e=>{try{return JSON.parse(Rl(e))}catch{return null}}},Sl=(e,t)=>yl[t](e),gn=(e,t,i)=>{if(e===t)return e;let a=Li(e);if(a!==i){let n=Sl(e,i);if(a=Li(n),n===null)throw`Trying to assign value with incorrect type to "${option}", allowed type: "${i}"`;e=n}return e},wl=(e,t)=>{let i=e;return{enumerable:!0,get:()=>i,set:a=>{i=gn(a,e,t)}}},vl=e=>{let t={};return te(e,i=>{let a=e[i];t[i]=wl(a[0],a[1])}),Ue(t)},Al=e=>({items:[],listUpdateTimeout:null,itemUpdateTimeout:null,processingQueue:[],options:vl(e)}),oi=(e,t="-")=>e.split(/(?=[A-Z])/).map(i=>i.toLowerCase()).join(t),Ll=(e,t)=>{let i={};return te(t,a=>{i[a]={get:()=>e.getState().options[a],set:n=>{e.dispatch(`SET_${oi(a,"_").toUpperCase()}`,{value:n})}}}),i},Ml=e=>(t,i,a)=>{let n={};return te(e,r=>{let o=oi(r,"_").toUpperCase();n[`SET_${o}`]=l=>{try{a.options[r]=l.value}catch{}t(`DID_SET_${o}`,{value:a.options[r]})}}),n},Ol=e=>t=>{let i={};return te(e,a=>{i[`GET_${oi(a,"_").toUpperCase()}`]=n=>t.options[a]}),i},Se={API:1,DROP:2,BROWSE:3,PASTE:4,NONE:5},ki=()=>Math.random().toString(36).substring(2,11),Hi=(e,t)=>e.splice(t,1),xl=(e,t)=>{t?e():document.hidden?Promise.resolve(1).then(e):setTimeout(e,0)},li=()=>{let e=[],t=(a,n)=>{Hi(e,e.findIndex(r=>r.event===a&&(r.cb===n||!n)))},i=(a,n,r)=>{e.filter(o=>o.event===a).map(o=>o.cb).forEach(o=>xl(()=>o(...n),r))};return{fireSync:(a,...n)=>{i(a,n,!0)},fire:(a,...n)=>{i(a,n,!1)},on:(a,n)=>{e.push({event:a,cb:n})},onOnce:(a,n)=>{e.push({event:a,cb:(...r)=>{t(a,n),n(...r)}})},off:t}},En=(e,t,i)=>{Object.getOwnPropertyNames(e).filter(a=>!i.includes(a)).forEach(a=>Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a)))},Dl=["fire","process","revert","load","on","off","onOnce","retryLoad","extend","archive","archived","release","released","requestProcessing","freeze"],ge=e=>{let t={};return En(e,t,Dl),t},Pl=e=>{e.forEach((t,i)=>{t.released&&Hi(e,i)})},k={INIT:1,IDLE:2,PROCESSING_QUEUED:9,PROCESSING:3,PROCESSING_COMPLETE:5,PROCESSING_ERROR:6,PROCESSING_REVERT_ERROR:10,LOADING:7,LOAD_ERROR:8},se={INPUT:1,LIMBO:2,LOCAL:3},Tn=e=>/[^0-9]+/.exec(e),In=()=>Tn(1.1.toLocaleString())[0],Fl=()=>{let e=In(),t=1e3.toLocaleString(),i=1e3.toString();return t!==i?Tn(t)[0]:e==="."?",":"."},M={BOOLEAN:"boolean",INT:"int",NUMBER:"number",STRING:"string",ARRAY:"array",OBJECT:"object",FUNCTION:"function",ACTION:"action",SERVER_API:"serverapi",REGEX:"regex"},Wi=[],Le=(e,t,i)=>new Promise((a,n)=>{let r=Wi.filter(l=>l.key===e).map(l=>l.cb);if(r.length===0){a(t);return}let o=r.shift();r.reduce((l,s)=>l.then(u=>s(u,i)),o(t,i)).then(l=>a(l)).catch(l=>n(l))}),Ke=(e,t,i)=>Wi.filter(a=>a.key===e).map(a=>a.cb(t,i)),Cl=(e,t)=>Wi.push({key:e,cb:t}),zl=e=>Object.assign(ot,e),ti=()=>({...ot}),Nl=e=>{te(e,(t,i)=>{ot[t]&&(ot[t][0]=gn(i,ot[t][0],ot[t][1]))})},ot={id:[null,M.STRING],name:["filepond",M.STRING],disabled:[!1,M.BOOLEAN],className:[null,M.STRING],required:[!1,M.BOOLEAN],captureMethod:[null,M.STRING],allowSyncAcceptAttribute:[!0,M.BOOLEAN],allowDrop:[!0,M.BOOLEAN],allowBrowse:[!0,M.BOOLEAN],allowPaste:[!0,M.BOOLEAN],allowMultiple:[!1,M.BOOLEAN],allowReplace:[!0,M.BOOLEAN],allowRevert:[!0,M.BOOLEAN],allowRemove:[!0,M.BOOLEAN],allowProcess:[!0,M.BOOLEAN],allowReorder:[!1,M.BOOLEAN],allowDirectoriesOnly:[!1,M.BOOLEAN],storeAsFile:[!1,M.BOOLEAN],forceRevert:[!1,M.BOOLEAN],maxFiles:[null,M.INT],checkValidity:[!1,M.BOOLEAN],itemInsertLocationFreedom:[!0,M.BOOLEAN],itemInsertLocation:["before",M.STRING],itemInsertInterval:[75,M.INT],dropOnPage:[!1,M.BOOLEAN],dropOnElement:[!0,M.BOOLEAN],dropValidation:[!1,M.BOOLEAN],ignoredFiles:[[".ds_store","thumbs.db","desktop.ini"],M.ARRAY],instantUpload:[!0,M.BOOLEAN],maxParallelUploads:[2,M.INT],allowMinimumUploadDuration:[!0,M.BOOLEAN],chunkUploads:[!1,M.BOOLEAN],chunkForce:[!1,M.BOOLEAN],chunkSize:[5e6,M.INT],chunkRetryDelays:[[500,1e3,3e3],M.ARRAY],server:[null,M.SERVER_API],fileSizeBase:[1e3,M.INT],labelFileSizeBytes:["bytes",M.STRING],labelFileSizeKilobytes:["KB",M.STRING],labelFileSizeMegabytes:["MB",M.STRING],labelFileSizeGigabytes:["GB",M.STRING],labelDecimalSeparator:[In(),M.STRING],labelThousandsSeparator:[Fl(),M.STRING],labelIdle:['Drag & Drop your files or Browse',M.STRING],labelInvalidField:["Field contains invalid files",M.STRING],labelFileWaitingForSize:["Waiting for size",M.STRING],labelFileSizeNotAvailable:["Size not available",M.STRING],labelFileCountSingular:["file in list",M.STRING],labelFileCountPlural:["files in list",M.STRING],labelFileLoading:["Loading",M.STRING],labelFileAdded:["Added",M.STRING],labelFileLoadError:["Error during load",M.STRING],labelFileRemoved:["Removed",M.STRING],labelFileRemoveError:["Error during remove",M.STRING],labelFileProcessing:["Uploading",M.STRING],labelFileProcessingComplete:["Upload complete",M.STRING],labelFileProcessingAborted:["Upload cancelled",M.STRING],labelFileProcessingError:["Error during upload",M.STRING],labelFileProcessingRevertError:["Error during revert",M.STRING],labelTapToCancel:["tap to cancel",M.STRING],labelTapToRetry:["tap to retry",M.STRING],labelTapToUndo:["tap to undo",M.STRING],labelButtonRemoveItem:["Remove",M.STRING],labelButtonAbortItemLoad:["Abort",M.STRING],labelButtonRetryItemLoad:["Retry",M.STRING],labelButtonAbortItemProcessing:["Cancel",M.STRING],labelButtonUndoItemProcessing:["Undo",M.STRING],labelButtonRetryItemProcessing:["Retry",M.STRING],labelButtonProcessItem:["Upload",M.STRING],iconRemove:['',M.STRING],iconProcess:['',M.STRING],iconRetry:['',M.STRING],iconUndo:['',M.STRING],iconDone:['',M.STRING],oninit:[null,M.FUNCTION],onwarning:[null,M.FUNCTION],onerror:[null,M.FUNCTION],onactivatefile:[null,M.FUNCTION],oninitfile:[null,M.FUNCTION],onaddfilestart:[null,M.FUNCTION],onaddfileprogress:[null,M.FUNCTION],onaddfile:[null,M.FUNCTION],onprocessfilestart:[null,M.FUNCTION],onprocessfileprogress:[null,M.FUNCTION],onprocessfileabort:[null,M.FUNCTION],onprocessfilerevert:[null,M.FUNCTION],onprocessfile:[null,M.FUNCTION],onprocessfiles:[null,M.FUNCTION],onremovefile:[null,M.FUNCTION],onpreparefile:[null,M.FUNCTION],onupdatefiles:[null,M.FUNCTION],onreorderfiles:[null,M.FUNCTION],beforeDropFile:[null,M.FUNCTION],beforeAddFile:[null,M.FUNCTION],beforeRemoveFile:[null,M.FUNCTION],beforePrepareFile:[null,M.FUNCTION],stylePanelLayout:[null,M.STRING],stylePanelAspectRatio:[null,M.STRING],styleItemPanelAspectRatio:[null,M.STRING],styleButtonRemoveItemPosition:["left",M.STRING],styleButtonProcessItemPosition:["right",M.STRING],styleLoadIndicatorPosition:["right",M.STRING],styleProgressIndicatorPosition:["right",M.STRING],styleButtonRemoveItemAlign:[!1,M.BOOLEAN],files:[[],M.ARRAY],credits:[["https://pqina.nl/","Powered by PQINA"],M.ARRAY]},Xe=(e,t)=>Ne(t)?e[0]||null:ft(t)?e[t]||null:(typeof t=="object"&&(t=t.id),e.find(i=>i.id===t)||null),bn=e=>{if(Ne(e))return e;if(/:/.test(e)){let t=e.split(":");return t[1]/t[0]}return parseFloat(e)},Me=e=>e.filter(t=>!t.archived),_n={EMPTY:0,IDLE:1,ERROR:2,BUSY:3,READY:4},qt=null,Bl=()=>{if(qt===null)try{let e=new DataTransfer;e.items.add(new File(["hello world"],"This_Works.txt"));let t=document.createElement("input");t.setAttribute("type","file"),t.files=e.files,qt=t.files.length===1}catch{qt=!1}return qt},Gl=[k.LOAD_ERROR,k.PROCESSING_ERROR,k.PROCESSING_REVERT_ERROR],Vl=[k.LOADING,k.PROCESSING,k.PROCESSING_QUEUED,k.INIT],Ul=[k.PROCESSING_COMPLETE],kl=e=>Gl.includes(e.status),Hl=e=>Vl.includes(e.status),Wl=e=>Ul.includes(e.status),Ca=e=>ce(e.options.server)&&(ce(e.options.server.process)||qe(e.options.server.process)),Yl=e=>({GET_STATUS:()=>{let t=Me(e.items),{EMPTY:i,ERROR:a,BUSY:n,IDLE:r,READY:o}=_n;return t.length===0?i:t.some(kl)?a:t.some(Hl)?n:t.some(Wl)?o:r},GET_ITEM:t=>Xe(e.items,t),GET_ACTIVE_ITEM:t=>Xe(Me(e.items),t),GET_ACTIVE_ITEMS:()=>Me(e.items),GET_ITEMS:()=>e.items,GET_ITEM_NAME:t=>{let i=Xe(e.items,t);return i?i.filename:null},GET_ITEM_SIZE:t=>{let i=Xe(e.items,t);return i?i.fileSize:null},GET_STYLES:()=>Object.keys(e.options).filter(t=>/^style/.test(t)).map(t=>({name:t,value:e.options[t]})),GET_PANEL_ASPECT_RATIO:()=>/circle/.test(e.options.stylePanelLayout)?1:bn(e.options.stylePanelAspectRatio),GET_ITEM_PANEL_ASPECT_RATIO:()=>e.options.styleItemPanelAspectRatio,GET_ITEMS_BY_STATUS:t=>Me(e.items).filter(i=>i.status===t),GET_TOTAL_ITEMS:()=>Me(e.items).length,SHOULD_UPDATE_FILE_INPUT:()=>e.options.storeAsFile&&Bl()&&!Ca(e),IS_ASYNC:()=>Ca(e),GET_FILE_SIZE_LABELS:t=>({labelBytes:t("GET_LABEL_FILE_SIZE_BYTES")||void 0,labelKilobytes:t("GET_LABEL_FILE_SIZE_KILOBYTES")||void 0,labelMegabytes:t("GET_LABEL_FILE_SIZE_MEGABYTES")||void 0,labelGigabytes:t("GET_LABEL_FILE_SIZE_GIGABYTES")||void 0})}),$l=e=>{let t=Me(e.items).length;if(!e.options.allowMultiple)return t===0;let i=e.options.maxFiles;return i===null||tMath.max(Math.min(i,e),t),ql=(e,t,i)=>e.splice(t,0,i),Xl=(e,t,i)=>Ne(t)?null:typeof i>"u"?(e.push(t),t):(i=Rn(i,0,e.length),ql(e,i,t),t),Mi=e=>/^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i.test(e),xt=e=>`${e}`.split("/").pop().split("?").shift(),si=e=>e.split(".").pop(),jl=e=>{if(typeof e!="string")return"";let t=e.split("/").pop();return/svg/.test(t)?"svg":/zip|compressed/.test(t)?"zip":/plain/.test(t)?"txt":/msword/.test(t)?"doc":/[a-z]+/.test(t)?t==="jpeg"?"jpg":t:""},vt=(e,t="")=>(t+e).slice(-t.length),yn=(e=new Date)=>`${e.getFullYear()}-${vt(e.getMonth()+1,"00")}-${vt(e.getDate(),"00")}_${vt(e.getHours(),"00")}-${vt(e.getMinutes(),"00")}-${vt(e.getSeconds(),"00")}`,ut=(e,t,i=null,a=null)=>{let n=typeof i=="string"?e.slice(0,e.size,i):e.slice(0,e.size,e.type);return n.lastModifiedDate=new Date,e._relativePath&&(n._relativePath=e._relativePath),pe(t)||(t=yn()),t&&a===null&&si(t)?n.name=t:(a=a||jl(n.type),n.name=t+(a?"."+a:"")),n},Ql=()=>window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,Sn=(e,t)=>{let i=Ql();if(i){let a=new i;return a.append(e),a.getBlob(t)}return new Blob([e],{type:t})},Zl=(e,t)=>{let i=new ArrayBuffer(e.length),a=new Uint8Array(i);for(let n=0;n(/^data:(.+);/.exec(e)||[])[1]||null,Kl=e=>e.split(",")[1].replace(/\s/g,""),Jl=e=>atob(Kl(e)),es=e=>{let t=wn(e),i=Jl(e);return Zl(i,t)},ts=(e,t,i)=>ut(es(e),t,null,i),is=e=>{if(!/^content-disposition:/i.test(e))return null;let t=e.split(/filename=|filename\*=.+''/).splice(1).map(i=>i.trim().replace(/^["']|[;"']{0,2}$/g,"")).filter(i=>i.length);return t.length?decodeURI(t[t.length-1]):null},as=e=>{if(/content-length:/i.test(e)){let t=e.match(/[0-9]+/)[0];return t?parseInt(t,10):null}return null},ns=e=>/x-content-transfer-id:/i.test(e)&&(e.split(":")[1]||"").trim()||null,Yi=e=>{let t={source:null,name:null,size:null},i=e.split(` -`);for(let a of i){let n=is(a);if(n){t.name=n;continue}let r=as(a);if(r){t.size=r;continue}let o=ns(a);if(o){t.source=o;continue}}return t},rs=e=>{let t={source:null,complete:!1,progress:0,size:null,timestamp:null,duration:0,request:null},i=()=>t.progress,a=()=>{t.request&&t.request.abort&&t.request.abort()},n=()=>{let l=t.source;o.fire("init",l),l instanceof File?o.fire("load",l):l instanceof Blob?o.fire("load",ut(l,l.name)):Mi(l)?o.fire("load",ts(l)):r(l)},r=l=>{if(!e){o.fire("error",{type:"error",body:"Can't load URL",code:400});return}t.timestamp=Date.now(),t.request=e(l,s=>{t.duration=Date.now()-t.timestamp,t.complete=!0,s instanceof Blob&&(s=ut(s,s.name||xt(l))),o.fire("load",s instanceof Blob?s:s?s.body:null)},s=>{o.fire("error",typeof s=="string"?{type:"error",code:0,body:s}:s)},(s,u,c)=>{if(c&&(t.size=c),t.duration=Date.now()-t.timestamp,!s){t.progress=null;return}t.progress=u/c,o.fire("progress",t.progress)},()=>{o.fire("abort")},s=>{let u=Yi(typeof s=="string"?s:s.headers);o.fire("meta",{size:t.size||u.size,filename:u.name,source:u.source})})},o={...li(),setSource:l=>t.source=l,getProgress:i,abort:a,load:n};return o},za=e=>/GET|HEAD/.test(e),je=(e,t,i)=>{let a={onheaders:()=>{},onprogress:()=>{},onload:()=>{},ontimeout:()=>{},onerror:()=>{},onabort:()=>{},abort:()=>{n=!0,o.abort()}},n=!1,r=!1;i={method:"POST",headers:{},withCredentials:!1,...i},t=encodeURI(t),za(i.method)&&e&&(t=`${t}${encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))}`);let o=new XMLHttpRequest,l=za(i.method)?o:o.upload;return l.onprogress=s=>{n||a.onprogress(s.lengthComputable,s.loaded,s.total)},o.onreadystatechange=()=>{o.readyState<2||o.readyState===4&&o.status===0||r||(r=!0,a.onheaders(o))},o.onload=()=>{o.status>=200&&o.status<300?a.onload(o):a.onerror(o)},o.onerror=()=>a.onerror(o),o.onabort=()=>{n=!0,a.onabort()},o.ontimeout=()=>a.ontimeout(o),o.open(i.method,t,!0),ft(i.timeout)&&(o.timeout=i.timeout),Object.keys(i.headers).forEach(s=>{let u=unescape(encodeURIComponent(i.headers[s]));o.setRequestHeader(s,u)}),i.responseType&&(o.responseType=i.responseType),i.withCredentials&&(o.withCredentials=!0),o.send(e),a},ie=(e,t,i,a)=>({type:e,code:t,body:i,headers:a}),Qe=e=>t=>{e(ie("error",0,"Timeout",t.getAllResponseHeaders()))},Na=e=>/\?/.test(e),Mt=(...e)=>{let t="";return e.forEach(i=>{t+=Na(t)&&Na(i)?i.replace(/\?/,"&"):i}),t},Ri=(e="",t)=>{if(typeof t=="function")return t;if(!t||!pe(t.url))return null;let i=t.onload||(n=>n),a=t.onerror||(n=>null);return(n,r,o,l,s,u)=>{let c=je(n,Mt(e,t.url),{...t,responseType:"blob"});return c.onload=d=>{let h=d.getAllResponseHeaders(),f=Yi(h).name||xt(n);r(ie("load",d.status,t.method==="HEAD"?null:ut(i(d.response),f),h))},c.onerror=d=>{o(ie("error",d.status,a(d.response)||d.statusText,d.getAllResponseHeaders()))},c.onheaders=d=>{u(ie("headers",d.status,null,d.getAllResponseHeaders()))},c.ontimeout=Qe(o),c.onprogress=l,c.onabort=s,c}},Re={QUEUED:0,COMPLETE:1,PROCESSING:2,ERROR:3,WAITING:4},os=(e,t,i,a,n,r,o,l,s,u,c)=>{let d=[],{chunkTransferId:h,chunkServer:f,chunkSize:p,chunkRetryDelays:m}=c,g={serverId:h,aborted:!1},b=t.ondata||(A=>A),E=t.onload||((A,F)=>F==="HEAD"?A.getResponseHeader("Upload-Offset"):A.response),I=t.onerror||(A=>null),_=A=>{let F=new FormData;ce(n)&&F.append(i,JSON.stringify(n));let w=typeof t.headers=="function"?t.headers(a,n):{...t.headers,"Upload-Length":a.size},L={...t,headers:w},C=je(b(F),Mt(e,t.url),L);C.onload=P=>A(E(P,L.method)),C.onerror=P=>o(ie("error",P.status,I(P.response)||P.statusText,P.getAllResponseHeaders())),C.ontimeout=Qe(o)},y=A=>{let F=Mt(e,f.url,g.serverId),L={headers:typeof t.headers=="function"?t.headers(g.serverId):{...t.headers},method:"HEAD"},C=je(null,F,L);C.onload=P=>A(E(P,L.method)),C.onerror=P=>o(ie("error",P.status,I(P.response)||P.statusText,P.getAllResponseHeaders())),C.ontimeout=Qe(o)},T=Math.floor(a.size/p);for(let A=0;A<=T;A++){let F=A*p,w=a.slice(F,F+p,"application/offset+octet-stream");d[A]={index:A,size:w.size,offset:F,data:w,file:a,progress:0,retries:[...m],status:Re.QUEUED,error:null,request:null,timeout:null}}let v=()=>r(g.serverId),R=A=>A.status===Re.QUEUED||A.status===Re.ERROR,S=A=>{if(g.aborted)return;if(A=A||d.find(R),!A){d.every(G=>G.status===Re.COMPLETE)&&v();return}A.status=Re.PROCESSING,A.progress=null;let F=f.ondata||(G=>G),w=f.onerror||(G=>null),L=Mt(e,f.url,g.serverId),C=typeof f.headers=="function"?f.headers(A):{...f.headers,"Content-Type":"application/offset+octet-stream","Upload-Offset":A.offset,"Upload-Length":a.size,"Upload-Name":a.name},P=A.request=je(F(A.data),L,{...f,headers:C});P.onload=()=>{A.status=Re.COMPLETE,A.request=null,O()},P.onprogress=(G,B,X)=>{A.progress=G?B:null,x()},P.onerror=G=>{A.status=Re.ERROR,A.request=null,A.error=w(G.response)||G.statusText,D(A)||o(ie("error",G.status,w(G.response)||G.statusText,G.getAllResponseHeaders()))},P.ontimeout=G=>{A.status=Re.ERROR,A.request=null,D(A)||Qe(o)(G)},P.onabort=()=>{A.status=Re.QUEUED,A.request=null,s()}},D=A=>A.retries.length===0?!1:(A.status=Re.WAITING,clearTimeout(A.timeout),A.timeout=setTimeout(()=>{S(A)},A.retries.shift()),!0),x=()=>{let A=d.reduce((w,L)=>w===null||L.progress===null?null:w+L.progress,0);if(A===null)return l(!1,0,0);let F=d.reduce((w,L)=>w+L.size,0);l(!0,A,F)},O=()=>{d.filter(F=>F.status===Re.PROCESSING).length>=1||S()},z=()=>{d.forEach(A=>{clearTimeout(A.timeout),A.request&&A.request.abort()})};return g.serverId?y(A=>{g.aborted||(d.filter(F=>F.offset{F.status=Re.COMPLETE,F.progress=F.size}),O())}):_(A=>{g.aborted||(u(A),g.serverId=A,O())}),{abort:()=>{g.aborted=!0,z()}}},ls=(e,t,i,a)=>(n,r,o,l,s,u,c)=>{if(!n)return;let d=a.chunkUploads,h=d&&n.size>a.chunkSize,f=d&&(h||a.chunkForce);if(n instanceof Blob&&f)return os(e,t,i,n,r,o,l,s,u,c,a);let p=t.ondata||(y=>y),m=t.onload||(y=>y),g=t.onerror||(y=>null),b=typeof t.headers=="function"?t.headers(n,r)||{}:{...t.headers},E={...t,headers:b};var I=new FormData;ce(r)&&I.append(i,JSON.stringify(r)),(n instanceof Blob?[{name:null,file:n}]:n).forEach(y=>{I.append(i,y.file,y.name===null?y.file.name:`${y.name}${y.file.name}`)});let _=je(p(I),Mt(e,t.url),E);return _.onload=y=>{o(ie("load",y.status,m(y.response),y.getAllResponseHeaders()))},_.onerror=y=>{l(ie("error",y.status,g(y.response)||y.statusText,y.getAllResponseHeaders()))},_.ontimeout=Qe(l),_.onprogress=s,_.onabort=u,_},ss=(e="",t,i,a)=>typeof t=="function"?(...n)=>t(i,...n,a):!t||!pe(t.url)?null:ls(e,t,i,a),At=(e="",t)=>{if(typeof t=="function")return t;if(!t||!pe(t.url))return(n,r)=>r();let i=t.onload||(n=>n),a=t.onerror||(n=>null);return(n,r,o)=>{let l=je(n,e+t.url,t);return l.onload=s=>{r(ie("load",s.status,i(s.response),s.getAllResponseHeaders()))},l.onerror=s=>{o(ie("error",s.status,a(s.response)||s.statusText,s.getAllResponseHeaders()))},l.ontimeout=Qe(o),l}},vn=(e=0,t=1)=>e+Math.random()*(t-e),cs=(e,t=1e3,i=0,a=25,n=250)=>{let r=null,o=Date.now(),l=()=>{let s=Date.now()-o,u=vn(a,n);s+u>t&&(u=s+u-t);let c=s/t;if(c>=1||document.hidden){e(1);return}e(c),r=setTimeout(l,u)};return t>0&&l(),{clear:()=>{clearTimeout(r)}}},ds=(e,t)=>{let i={complete:!1,perceivedProgress:0,perceivedPerformanceUpdater:null,progress:null,timestamp:null,perceivedDuration:0,duration:0,request:null,response:null},{allowMinimumUploadDuration:a}=t,n=(c,d)=>{let h=()=>{i.duration===0||i.progress===null||u.fire("progress",u.getProgress())},f=()=>{i.complete=!0,u.fire("load-perceived",i.response.body)};u.fire("start"),i.timestamp=Date.now(),i.perceivedPerformanceUpdater=cs(p=>{i.perceivedProgress=p,i.perceivedDuration=Date.now()-i.timestamp,h(),i.response&&i.perceivedProgress===1&&!i.complete&&f()},a?vn(750,1500):0),i.request=e(c,d,p=>{i.response=ce(p)?p:{type:"load",code:200,body:`${p}`,headers:{}},i.duration=Date.now()-i.timestamp,i.progress=1,u.fire("load",i.response.body),(!a||a&&i.perceivedProgress===1)&&f()},p=>{i.perceivedPerformanceUpdater.clear(),u.fire("error",ce(p)?p:{type:"error",code:0,body:`${p}`})},(p,m,g)=>{i.duration=Date.now()-i.timestamp,i.progress=p?m/g:null,h()},()=>{i.perceivedPerformanceUpdater.clear(),u.fire("abort",i.response?i.response.body:null)},p=>{u.fire("transfer",p)})},r=()=>{i.request&&(i.perceivedPerformanceUpdater.clear(),i.request.abort&&i.request.abort(),i.complete=!0)},o=()=>{r(),i.complete=!1,i.perceivedProgress=0,i.progress=0,i.timestamp=null,i.perceivedDuration=0,i.duration=0,i.request=null,i.response=null},l=a?()=>i.progress?Math.min(i.progress,i.perceivedProgress):null:()=>i.progress||null,s=a?()=>Math.min(i.duration,i.perceivedDuration):()=>i.duration,u={...li(),process:n,abort:r,getProgress:l,getDuration:s,reset:o};return u},An=e=>e.substring(0,e.lastIndexOf("."))||e,us=e=>{let t=[e.name,e.size,e.type];return e instanceof Blob||Mi(e)?t[0]=e.name||yn():Mi(e)?(t[1]=e.length,t[2]=wn(e)):pe(e)&&(t[0]=xt(e),t[1]=0,t[2]="application/octet-stream"),{name:t[0],size:t[1],type:t[2]}},ht=e=>!!(e instanceof File||e instanceof Blob&&e.name),Ln=e=>{if(!ce(e))return e;let t=ni(e)?[]:{};for(let i in e){if(!e.hasOwnProperty(i))continue;let a=e[i];t[i]=a&&ce(a)?Ln(a):a}return t},hs=(e=null,t=null,i=null)=>{let a=ki(),n={archived:!1,frozen:!1,released:!1,source:null,file:i,serverFileReference:t,transferId:null,processingAborted:!1,status:t?k.PROCESSING_COMPLETE:k.INIT,activeLoader:null,activeProcessor:null},r=null,o={},l=R=>n.status=R,s=(R,...S)=>{n.released||n.frozen||T.fire(R,...S)},u=()=>si(n.file.name),c=()=>n.file.type,d=()=>n.file.size,h=()=>n.file,f=(R,S,D)=>{if(n.source=R,T.fireSync("init"),n.file){T.fireSync("load-skip");return}n.file=us(R),S.on("init",()=>{s("load-init")}),S.on("meta",x=>{n.file.size=x.size,n.file.filename=x.filename,x.source&&(e=se.LIMBO,n.serverFileReference=x.source,n.status=k.PROCESSING_COMPLETE),s("load-meta")}),S.on("progress",x=>{l(k.LOADING),s("load-progress",x)}),S.on("error",x=>{l(k.LOAD_ERROR),s("load-request-error",x)}),S.on("abort",()=>{l(k.INIT),s("load-abort")}),S.on("load",x=>{n.activeLoader=null;let O=A=>{n.file=ht(A)?A:n.file,e===se.LIMBO&&n.serverFileReference?l(k.PROCESSING_COMPLETE):l(k.IDLE),s("load")},z=A=>{n.file=x,s("load-meta"),l(k.LOAD_ERROR),s("load-file-error",A)};if(n.serverFileReference){O(x);return}D(x,O,z)}),S.setSource(R),n.activeLoader=S,S.load()},p=()=>{n.activeLoader&&n.activeLoader.load()},m=()=>{if(n.activeLoader){n.activeLoader.abort();return}l(k.INIT),s("load-abort")},g=(R,S)=>{if(n.processingAborted){n.processingAborted=!1;return}if(l(k.PROCESSING),r=null,!(n.file instanceof Blob)){T.on("load",()=>{g(R,S)});return}R.on("load",O=>{n.transferId=null,n.serverFileReference=O}),R.on("transfer",O=>{n.transferId=O}),R.on("load-perceived",O=>{n.activeProcessor=null,n.transferId=null,n.serverFileReference=O,l(k.PROCESSING_COMPLETE),s("process-complete",O)}),R.on("start",()=>{s("process-start")}),R.on("error",O=>{n.activeProcessor=null,l(k.PROCESSING_ERROR),s("process-error",O)}),R.on("abort",O=>{n.activeProcessor=null,n.serverFileReference=O,l(k.IDLE),s("process-abort"),r&&r()}),R.on("progress",O=>{s("process-progress",O)});let D=O=>{n.archived||R.process(O,{...o})},x=console.error;S(n.file,D,x),n.activeProcessor=R},b=()=>{n.processingAborted=!1,l(k.PROCESSING_QUEUED)},E=()=>new Promise(R=>{if(!n.activeProcessor){n.processingAborted=!0,l(k.IDLE),s("process-abort"),R();return}r=()=>{R()},n.activeProcessor.abort()}),I=(R,S)=>new Promise((D,x)=>{let O=n.serverFileReference!==null?n.serverFileReference:n.transferId;if(O===null){D();return}R(O,()=>{n.serverFileReference=null,n.transferId=null,D()},z=>{if(!S){D();return}l(k.PROCESSING_REVERT_ERROR),s("process-revert-error"),x(z)}),l(k.IDLE),s("process-revert")}),_=(R,S,D)=>{let x=R.split("."),O=x[0],z=x.pop(),A=o;x.forEach(F=>A=A[F]),JSON.stringify(A[z])!==JSON.stringify(S)&&(A[z]=S,s("metadata-update",{key:O,value:o[O],silent:D}))},T={id:{get:()=>a},origin:{get:()=>e,set:R=>e=R},serverId:{get:()=>n.serverFileReference},transferId:{get:()=>n.transferId},status:{get:()=>n.status},filename:{get:()=>n.file.name},filenameWithoutExtension:{get:()=>An(n.file.name)},fileExtension:{get:u},fileType:{get:c},fileSize:{get:d},file:{get:h},relativePath:{get:()=>n.file._relativePath},source:{get:()=>n.source},getMetadata:R=>Ln(R?o[R]:o),setMetadata:(R,S,D)=>{if(ce(R)){let x=R;return Object.keys(x).forEach(O=>{_(O,x[O],S)}),R}return _(R,S,D),S},extend:(R,S)=>v[R]=S,abortLoad:m,retryLoad:p,requestProcessing:b,abortProcessing:E,load:f,process:g,revert:I,...li(),freeze:()=>n.frozen=!0,release:()=>n.released=!0,released:{get:()=>n.released},archive:()=>n.archived=!0,archived:{get:()=>n.archived}},v=Ue(T);return v},fs=(e,t)=>Ne(t)?0:pe(t)?e.findIndex(i=>i.id===t):-1,Ba=(e,t)=>{let i=fs(e,t);if(!(i<0))return e[i]||null},Ga=(e,t,i,a,n,r)=>{let o=je(null,e,{method:"GET",responseType:"blob"});return o.onload=l=>{let s=l.getAllResponseHeaders(),u=Yi(s).name||xt(e);t(ie("load",l.status,ut(l.response,u),s))},o.onerror=l=>{i(ie("error",l.status,l.statusText,l.getAllResponseHeaders()))},o.onheaders=l=>{r(ie("headers",l.status,null,l.getAllResponseHeaders()))},o.ontimeout=Qe(i),o.onprogress=a,o.onabort=n,o},Va=e=>(e.indexOf("//")===0&&(e=location.protocol+e),e.toLowerCase().replace("blob:","").replace(/([a-z])?:\/\//,"$1").split("/")[0]),ps=e=>(e.indexOf(":")>-1||e.indexOf("//")>-1)&&Va(location.href)!==Va(e),Xt=e=>(...t)=>qe(e)?e(...t):e,ms=e=>!ht(e.file),yi=(e,t)=>{clearTimeout(t.listUpdateTimeout),t.listUpdateTimeout=setTimeout(()=>{e("DID_UPDATE_ITEMS",{items:Me(t.items)})},0)},Ua=(e,...t)=>new Promise(i=>{if(!e)return i(!0);let a=e(...t);if(a==null)return i(!0);if(typeof a=="boolean")return i(a);typeof a.then=="function"&&a.then(i)}),Si=(e,t)=>{e.items.sort((i,a)=>t(ge(i),ge(a)))},ye=(e,t)=>({query:i,success:a=()=>{},failure:n=()=>{},...r}={})=>{let o=Xe(e.items,i);if(!o){n({error:ie("error",0,"Item not found"),file:null});return}t(o,a,n,r||{})},gs=(e,t,i)=>({ABORT_ALL:()=>{Me(i.items).forEach(a=>{a.freeze(),a.abortLoad(),a.abortProcessing()})},DID_SET_FILES:({value:a=[]})=>{let n=a.map(o=>({source:o.source?o.source:o,options:o.options})),r=Me(i.items);r.forEach(o=>{n.find(l=>l.source===o.source||l.source===o.file)||e("REMOVE_ITEM",{query:o,remove:!1})}),r=Me(i.items),n.forEach((o,l)=>{r.find(s=>s.source===o.source||s.file===o.source)||e("ADD_ITEM",{...o,interactionMethod:Se.NONE,index:l})})},DID_UPDATE_ITEM_METADATA:({id:a,action:n,change:r})=>{r.silent||(clearTimeout(i.itemUpdateTimeout),i.itemUpdateTimeout=setTimeout(()=>{let o=Ba(i.items,a);if(!t("IS_ASYNC")){Le("SHOULD_PREPARE_OUTPUT",!1,{item:o,query:t,action:n,change:r}).then(c=>{let d=t("GET_BEFORE_PREPARE_FILE");d&&(c=d(o,c)),c&&e("REQUEST_PREPARE_OUTPUT",{query:a,item:o,success:h=>{e("DID_PREPARE_OUTPUT",{id:a,file:h})}},!0)});return}o.origin===se.LOCAL&&e("DID_LOAD_ITEM",{id:o.id,error:null,serverFileReference:o.source});let l=()=>{setTimeout(()=>{e("REQUEST_ITEM_PROCESSING",{query:a})},32)},s=c=>{o.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(c?l:()=>{}).catch(()=>{})},u=c=>{o.abortProcessing().then(c?l:()=>{})};if(o.status===k.PROCESSING_COMPLETE)return s(i.options.instantUpload);if(o.status===k.PROCESSING)return u(i.options.instantUpload);i.options.instantUpload&&l()},0))},MOVE_ITEM:({query:a,index:n})=>{let r=Xe(i.items,a);if(!r)return;let o=i.items.indexOf(r);n=Rn(n,0,i.items.length-1),o!==n&&i.items.splice(n,0,i.items.splice(o,1)[0])},SORT:({compare:a})=>{Si(i,a),e("DID_SORT_ITEMS",{items:t("GET_ACTIVE_ITEMS")})},ADD_ITEMS:({items:a,index:n,interactionMethod:r,success:o=()=>{},failure:l=()=>{}})=>{let s=n;if(n===-1||typeof n>"u"){let f=t("GET_ITEM_INSERT_LOCATION"),p=t("GET_TOTAL_ITEMS");s=f==="before"?0:p}let u=t("GET_IGNORED_FILES"),c=f=>ht(f)?!u.includes(f.name.toLowerCase()):!Ne(f),h=a.filter(c).map(f=>new Promise((p,m)=>{e("ADD_ITEM",{interactionMethod:r,source:f.source||f,success:p,failure:m,index:s++,options:f.options||{}})}));Promise.all(h).then(o).catch(l)},ADD_ITEM:({source:a,index:n=-1,interactionMethod:r,success:o=()=>{},failure:l=()=>{},options:s={}})=>{if(Ne(a)){l({error:ie("error",0,"No source"),file:null});return}if(ht(a)&&i.options.ignoredFiles.includes(a.name.toLowerCase()))return;if(!$l(i)){if(i.options.allowMultiple||!i.options.allowMultiple&&!i.options.allowReplace){let E=ie("warning",0,"Max files");e("DID_THROW_MAX_FILES",{source:a,error:E}),l({error:E,file:null});return}let b=Me(i.items)[0];if(b.status===k.PROCESSING_COMPLETE||b.status===k.PROCESSING_REVERT_ERROR){let E=t("GET_FORCE_REVERT");if(b.revert(At(i.options.server.url,i.options.server.revert),E).then(()=>{E&&e("ADD_ITEM",{source:a,index:n,interactionMethod:r,success:o,failure:l,options:s})}).catch(()=>{}),E)return}e("REMOVE_ITEM",{query:b.id})}let u=s.type==="local"?se.LOCAL:s.type==="limbo"?se.LIMBO:se.INPUT,c=hs(u,u===se.INPUT?null:a,s.file);Object.keys(s.metadata||{}).forEach(b=>{c.setMetadata(b,s.metadata[b])}),Ke("DID_CREATE_ITEM",c,{query:t,dispatch:e});let d=t("GET_ITEM_INSERT_LOCATION");i.options.itemInsertLocationFreedom||(n=d==="before"?-1:i.items.length),Xl(i.items,c,n),qe(d)&&a&&Si(i,d);let h=c.id;c.on("init",()=>{e("DID_INIT_ITEM",{id:h})}),c.on("load-init",()=>{e("DID_START_ITEM_LOAD",{id:h})}),c.on("load-meta",()=>{e("DID_UPDATE_ITEM_META",{id:h})}),c.on("load-progress",b=>{e("DID_UPDATE_ITEM_LOAD_PROGRESS",{id:h,progress:b})}),c.on("load-request-error",b=>{let E=Xt(i.options.labelFileLoadError)(b);if(b.code>=400&&b.code<500){e("DID_THROW_ITEM_INVALID",{id:h,error:b,status:{main:E,sub:`${b.code} (${b.body})`}}),l({error:b,file:ge(c)});return}e("DID_THROW_ITEM_LOAD_ERROR",{id:h,error:b,status:{main:E,sub:i.options.labelTapToRetry}})}),c.on("load-file-error",b=>{e("DID_THROW_ITEM_INVALID",{id:h,error:b.status,status:b.status}),l({error:b.status,file:ge(c)})}),c.on("load-abort",()=>{e("REMOVE_ITEM",{query:h})}),c.on("load-skip",()=>{e("COMPLETE_LOAD_ITEM",{query:h,item:c,data:{source:a,success:o}})}),c.on("load",()=>{let b=E=>{if(!E){e("REMOVE_ITEM",{query:h});return}c.on("metadata-update",I=>{e("DID_UPDATE_ITEM_METADATA",{id:h,change:I})}),Le("SHOULD_PREPARE_OUTPUT",!1,{item:c,query:t}).then(I=>{let _=t("GET_BEFORE_PREPARE_FILE");_&&(I=_(c,I));let y=()=>{e("COMPLETE_LOAD_ITEM",{query:h,item:c,data:{source:a,success:o}}),yi(e,i)};if(I){e("REQUEST_PREPARE_OUTPUT",{query:h,item:c,success:T=>{e("DID_PREPARE_OUTPUT",{id:h,file:T}),y()}},!0);return}y()})};Le("DID_LOAD_ITEM",c,{query:t,dispatch:e}).then(()=>{Ua(t("GET_BEFORE_ADD_FILE"),ge(c)).then(b)}).catch(E=>{if(!E||!E.error||!E.status)return b(!1);e("DID_THROW_ITEM_INVALID",{id:h,error:E.error,status:E.status})})}),c.on("process-start",()=>{e("DID_START_ITEM_PROCESSING",{id:h})}),c.on("process-progress",b=>{e("DID_UPDATE_ITEM_PROCESS_PROGRESS",{id:h,progress:b})}),c.on("process-error",b=>{e("DID_THROW_ITEM_PROCESSING_ERROR",{id:h,error:b,status:{main:Xt(i.options.labelFileProcessingError)(b),sub:i.options.labelTapToRetry}})}),c.on("process-revert-error",b=>{e("DID_THROW_ITEM_PROCESSING_REVERT_ERROR",{id:h,error:b,status:{main:Xt(i.options.labelFileProcessingRevertError)(b),sub:i.options.labelTapToRetry}})}),c.on("process-complete",b=>{e("DID_COMPLETE_ITEM_PROCESSING",{id:h,error:null,serverFileReference:b}),e("DID_DEFINE_VALUE",{id:h,value:b})}),c.on("process-abort",()=>{e("DID_ABORT_ITEM_PROCESSING",{id:h})}),c.on("process-revert",()=>{e("DID_REVERT_ITEM_PROCESSING",{id:h}),e("DID_DEFINE_VALUE",{id:h,value:null})}),e("DID_ADD_ITEM",{id:h,index:n,interactionMethod:r}),yi(e,i);let{url:f,load:p,restore:m,fetch:g}=i.options.server||{};c.load(a,rs(u===se.INPUT?pe(a)&&ps(a)&&g?Ri(f,g):Ga:u===se.LIMBO?Ri(f,m):Ri(f,p)),(b,E,I)=>{Le("LOAD_FILE",b,{query:t}).then(E).catch(I)})},REQUEST_PREPARE_OUTPUT:({item:a,success:n,failure:r=()=>{}})=>{let o={error:ie("error",0,"Item not found"),file:null};if(a.archived)return r(o);Le("PREPARE_OUTPUT",a.file,{query:t,item:a}).then(l=>{Le("COMPLETE_PREPARE_OUTPUT",l,{query:t,item:a}).then(s=>{if(a.archived)return r(o);n(s)})})},COMPLETE_LOAD_ITEM:({item:a,data:n})=>{let{success:r,source:o}=n,l=t("GET_ITEM_INSERT_LOCATION");if(qe(l)&&o&&Si(i,l),e("DID_LOAD_ITEM",{id:a.id,error:null,serverFileReference:a.origin===se.INPUT?null:o}),r(ge(a)),a.origin===se.LOCAL){e("DID_LOAD_LOCAL_ITEM",{id:a.id});return}if(a.origin===se.LIMBO){e("DID_COMPLETE_ITEM_PROCESSING",{id:a.id,error:null,serverFileReference:o}),e("DID_DEFINE_VALUE",{id:a.id,value:a.serverId||o});return}t("IS_ASYNC")&&i.options.instantUpload&&e("REQUEST_ITEM_PROCESSING",{query:a.id})},RETRY_ITEM_LOAD:ye(i,a=>{a.retryLoad()}),REQUEST_ITEM_PREPARE:ye(i,(a,n,r)=>{e("REQUEST_PREPARE_OUTPUT",{query:a.id,item:a,success:o=>{e("DID_PREPARE_OUTPUT",{id:a.id,file:o}),n({file:a,output:o})},failure:r},!0)}),REQUEST_ITEM_PROCESSING:ye(i,(a,n,r)=>{if(!(a.status===k.IDLE||a.status===k.PROCESSING_ERROR)){let l=()=>e("REQUEST_ITEM_PROCESSING",{query:a,success:n,failure:r}),s=()=>document.hidden?l():setTimeout(l,32);a.status===k.PROCESSING_COMPLETE||a.status===k.PROCESSING_REVERT_ERROR?a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(s).catch(()=>{}):a.status===k.PROCESSING&&a.abortProcessing().then(s);return}a.status!==k.PROCESSING_QUEUED&&(a.requestProcessing(),e("DID_REQUEST_ITEM_PROCESSING",{id:a.id}),e("PROCESS_ITEM",{query:a,success:n,failure:r},!0))}),PROCESS_ITEM:ye(i,(a,n,r)=>{let o=t("GET_MAX_PARALLEL_UPLOADS");if(t("GET_ITEMS_BY_STATUS",k.PROCESSING).length===o){i.processingQueue.push({id:a.id,success:n,failure:r});return}if(a.status===k.PROCESSING)return;let s=()=>{let c=i.processingQueue.shift();if(!c)return;let{id:d,success:h,failure:f}=c,p=Xe(i.items,d);if(!p||p.archived){s();return}e("PROCESS_ITEM",{query:d,success:h,failure:f},!0)};a.onOnce("process-complete",()=>{n(ge(a)),s();let c=i.options.server;if(i.options.instantUpload&&a.origin===se.LOCAL&&qe(c.remove)){let f=()=>{};a.origin=se.LIMBO,i.options.server.remove(a.source,f,f)}t("GET_ITEMS_BY_STATUS",k.PROCESSING_COMPLETE).length===i.items.length&&e("DID_COMPLETE_ITEM_PROCESSING_ALL")}),a.onOnce("process-error",c=>{r({error:c,file:ge(a)}),s()});let u=i.options;a.process(ds(ss(u.server.url,u.server.process,u.name,{chunkTransferId:a.transferId,chunkServer:u.server.patch,chunkUploads:u.chunkUploads,chunkForce:u.chunkForce,chunkSize:u.chunkSize,chunkRetryDelays:u.chunkRetryDelays}),{allowMinimumUploadDuration:t("GET_ALLOW_MINIMUM_UPLOAD_DURATION")}),(c,d,h)=>{Le("PREPARE_OUTPUT",c,{query:t,item:a}).then(f=>{e("DID_PREPARE_OUTPUT",{id:a.id,file:f}),d(f)}).catch(h)})}),RETRY_ITEM_PROCESSING:ye(i,a=>{e("REQUEST_ITEM_PROCESSING",{query:a})}),REQUEST_REMOVE_ITEM:ye(i,a=>{Ua(t("GET_BEFORE_REMOVE_FILE"),ge(a)).then(n=>{n&&e("REMOVE_ITEM",{query:a})})}),RELEASE_ITEM:ye(i,a=>{a.release()}),REMOVE_ITEM:ye(i,(a,n,r,o)=>{let l=()=>{let u=a.id;Ba(i.items,u).archive(),e("DID_REMOVE_ITEM",{error:null,id:u,item:a}),yi(e,i),n(ge(a))},s=i.options.server;a.origin===se.LOCAL&&s&&qe(s.remove)&&o.remove!==!1?(e("DID_START_ITEM_REMOVE",{id:a.id}),s.remove(a.source,()=>l(),u=>{e("DID_THROW_ITEM_REMOVE_ERROR",{id:a.id,error:ie("error",0,u,null),status:{main:Xt(i.options.labelFileRemoveError)(u),sub:i.options.labelTapToRetry}})})):((o.revert&&a.origin!==se.LOCAL&&a.serverId!==null||i.options.chunkUploads&&a.file.size>i.options.chunkSize||i.options.chunkUploads&&i.options.chunkForce)&&a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")),l())}),ABORT_ITEM_LOAD:ye(i,a=>{a.abortLoad()}),ABORT_ITEM_PROCESSING:ye(i,a=>{if(a.serverId){e("REVERT_ITEM_PROCESSING",{id:a.id});return}a.abortProcessing().then(()=>{i.options.instantUpload&&e("REMOVE_ITEM",{query:a.id})})}),REQUEST_REVERT_ITEM_PROCESSING:ye(i,a=>{if(!i.options.instantUpload){e("REVERT_ITEM_PROCESSING",{query:a});return}let n=l=>{l&&e("REVERT_ITEM_PROCESSING",{query:a})},r=t("GET_BEFORE_REMOVE_FILE");if(!r)return n(!0);let o=r(ge(a));if(o==null)return n(!0);if(typeof o=="boolean")return n(o);typeof o.then=="function"&&o.then(n)}),REVERT_ITEM_PROCESSING:ye(i,a=>{a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(()=>{(i.options.instantUpload||ms(a))&&e("REMOVE_ITEM",{query:a.id})}).catch(()=>{})}),SET_OPTIONS:({options:a})=>{let n=Object.keys(a),r=Es.filter(l=>n.includes(l));[...r,...Object.keys(a).filter(l=>!r.includes(l))].forEach(l=>{e(`SET_${oi(l,"_").toUpperCase()}`,{value:a[l]})})}}),Es=["server"],$i=e=>e,Be=e=>document.createElement(e),ae=(e,t)=>{let i=e.childNodes[0];i?t!==i.nodeValue&&(i.nodeValue=t):(i=document.createTextNode(t),e.appendChild(i))},ka=(e,t,i,a)=>{let n=(a%360-90)*Math.PI/180;return{x:e+i*Math.cos(n),y:t+i*Math.sin(n)}},Ts=(e,t,i,a,n,r)=>{let o=ka(e,t,i,n),l=ka(e,t,i,a);return["M",o.x,o.y,"A",i,i,0,r,0,l.x,l.y].join(" ")},Is=(e,t,i,a,n)=>{let r=1;return n>a&&n-a<=.5&&(r=0),a>n&&a-n>=.5&&(r=0),Ts(e,t,i,Math.min(.9999,a)*360,Math.min(.9999,n)*360,r)},bs=({root:e,props:t})=>{t.spin=!1,t.progress=0,t.opacity=0;let i=ei("svg");e.ref.path=ei("path",{"stroke-width":2,"stroke-linecap":"round"}),i.appendChild(e.ref.path),e.ref.svg=i,e.appendChild(i)},_s=({root:e,props:t})=>{if(t.opacity===0)return;t.align&&(e.element.dataset.align=t.align);let i=parseInt(ne(e.ref.path,"stroke-width"),10),a=e.rect.element.width*.5,n=0,r=0;t.spin?(n=0,r=.5):(n=0,r=t.progress);let o=Is(a,a,a-i,n,r);ne(e.ref.path,"d",o),ne(e.ref.path,"stroke-opacity",t.spin||t.progress>0?1:0)},Ha=re({tag:"div",name:"progress-indicator",ignoreRectUpdate:!0,ignoreRect:!0,create:bs,write:_s,mixins:{apis:["progress","spin","align"],styles:["opacity"],animations:{opacity:{type:"tween",duration:500},progress:{type:"spring",stiffness:.95,damping:.65,mass:10}}}}),Rs=({root:e,props:t})=>{e.element.innerHTML=(t.icon||"")+`${t.label}`,t.isDisabled=!1},ys=({root:e,props:t})=>{let{isDisabled:i}=t,a=e.query("GET_DISABLED")||t.opacity===0;a&&!i?(t.isDisabled=!0,ne(e.element,"disabled","disabled")):!a&&i&&(t.isDisabled=!1,e.element.removeAttribute("disabled"))},Mn=re({tag:"button",attributes:{type:"button"},ignoreRect:!0,ignoreRectUpdate:!0,name:"file-action-button",mixins:{apis:["label"],styles:["translateX","translateY","scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",translateX:"spring",translateY:"spring",opacity:{type:"tween",duration:250}},listeners:!0},create:Rs,write:ys}),On=(e,t=".",i=1e3,a={})=>{let{labelBytes:n="bytes",labelKilobytes:r="KB",labelMegabytes:o="MB",labelGigabytes:l="GB"}=a;e=Math.round(Math.abs(e));let s=i,u=i*i,c=i*i*i;return ee.toFixed(t).split(".").filter(a=>a!=="0").join(i),Ss=({root:e,props:t})=>{let i=Be("span");i.className="filepond--file-info-main",ne(i,"aria-hidden","true"),e.appendChild(i),e.ref.fileName=i;let a=Be("span");a.className="filepond--file-info-sub",e.appendChild(a),e.ref.fileSize=a,ae(a,e.query("GET_LABEL_FILE_WAITING_FOR_SIZE")),ae(i,$i(e.query("GET_ITEM_NAME",t.id)))},Oi=({root:e,props:t})=>{ae(e.ref.fileSize,On(e.query("GET_ITEM_SIZE",t.id),".",e.query("GET_FILE_SIZE_BASE"),e.query("GET_FILE_SIZE_LABELS",e.query))),ae(e.ref.fileName,$i(e.query("GET_ITEM_NAME",t.id)))},Ya=({root:e,props:t})=>{if(ft(e.query("GET_ITEM_SIZE",t.id))){Oi({root:e,props:t});return}ae(e.ref.fileSize,e.query("GET_LABEL_FILE_SIZE_NOT_AVAILABLE"))},ws=re({name:"file-info",ignoreRect:!0,ignoreRectUpdate:!0,write:me({DID_LOAD_ITEM:Oi,DID_UPDATE_ITEM_META:Oi,DID_THROW_ITEM_LOAD_ERROR:Ya,DID_THROW_ITEM_INVALID:Ya}),didCreateView:e=>{Ke("CREATE_VIEW",{...e,view:e})},create:Ss,mixins:{styles:["translateX","translateY"],animations:{translateX:"spring",translateY:"spring"}}}),xn=e=>Math.round(e*100),vs=({root:e})=>{let t=Be("span");t.className="filepond--file-status-main",e.appendChild(t),e.ref.main=t;let i=Be("span");i.className="filepond--file-status-sub",e.appendChild(i),e.ref.sub=i,Dn({root:e,action:{progress:null}})},Dn=({root:e,action:t})=>{let i=t.progress===null?e.query("GET_LABEL_FILE_LOADING"):`${e.query("GET_LABEL_FILE_LOADING")} ${xn(t.progress)}%`;ae(e.ref.main,i),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},As=({root:e,action:t})=>{let i=t.progress===null?e.query("GET_LABEL_FILE_PROCESSING"):`${e.query("GET_LABEL_FILE_PROCESSING")} ${xn(t.progress)}%`;ae(e.ref.main,i),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},Ls=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},Ms=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING_ABORTED")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_RETRY"))},Os=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING_COMPLETE")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_UNDO"))},$a=({root:e})=>{ae(e.ref.main,""),ae(e.ref.sub,"")},Lt=({root:e,action:t})=>{ae(e.ref.main,t.status.main),ae(e.ref.sub,t.status.sub)},xs=re({name:"file-status",ignoreRect:!0,ignoreRectUpdate:!0,write:me({DID_LOAD_ITEM:$a,DID_REVERT_ITEM_PROCESSING:$a,DID_REQUEST_ITEM_PROCESSING:Ls,DID_ABORT_ITEM_PROCESSING:Ms,DID_COMPLETE_ITEM_PROCESSING:Os,DID_UPDATE_ITEM_PROCESS_PROGRESS:As,DID_UPDATE_ITEM_LOAD_PROGRESS:Dn,DID_THROW_ITEM_LOAD_ERROR:Lt,DID_THROW_ITEM_INVALID:Lt,DID_THROW_ITEM_PROCESSING_ERROR:Lt,DID_THROW_ITEM_PROCESSING_REVERT_ERROR:Lt,DID_THROW_ITEM_REMOVE_ERROR:Lt}),didCreateView:e=>{Ke("CREATE_VIEW",{...e,view:e})},create:vs,mixins:{styles:["translateX","translateY","opacity"],animations:{opacity:{type:"tween",duration:250},translateX:"spring",translateY:"spring"}}}),xi={AbortItemLoad:{label:"GET_LABEL_BUTTON_ABORT_ITEM_LOAD",action:"ABORT_ITEM_LOAD",className:"filepond--action-abort-item-load",align:"LOAD_INDICATOR_POSITION"},RetryItemLoad:{label:"GET_LABEL_BUTTON_RETRY_ITEM_LOAD",action:"RETRY_ITEM_LOAD",icon:"GET_ICON_RETRY",className:"filepond--action-retry-item-load",align:"BUTTON_PROCESS_ITEM_POSITION"},RemoveItem:{label:"GET_LABEL_BUTTON_REMOVE_ITEM",action:"REQUEST_REMOVE_ITEM",icon:"GET_ICON_REMOVE",className:"filepond--action-remove-item",align:"BUTTON_REMOVE_ITEM_POSITION"},ProcessItem:{label:"GET_LABEL_BUTTON_PROCESS_ITEM",action:"REQUEST_ITEM_PROCESSING",icon:"GET_ICON_PROCESS",className:"filepond--action-process-item",align:"BUTTON_PROCESS_ITEM_POSITION"},AbortItemProcessing:{label:"GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING",action:"ABORT_ITEM_PROCESSING",className:"filepond--action-abort-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"},RetryItemProcessing:{label:"GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING",action:"RETRY_ITEM_PROCESSING",icon:"GET_ICON_RETRY",className:"filepond--action-retry-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"},RevertItemProcessing:{label:"GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING",action:"REQUEST_REVERT_ITEM_PROCESSING",icon:"GET_ICON_UNDO",className:"filepond--action-revert-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"}},Di=[];te(xi,e=>{Di.push(e)});var be=e=>{if(Pi(e)==="right")return 0;let t=e.ref.buttonRemoveItem.rect.element;return t.hidden?null:t.width+t.left},Ds=e=>e.ref.buttonAbortItemLoad.rect.element.width,jt=e=>Math.floor(e.ref.buttonRemoveItem.rect.element.height/4),Ps=e=>Math.floor(e.ref.buttonRemoveItem.rect.element.left/2),Fs=e=>e.query("GET_STYLE_LOAD_INDICATOR_POSITION"),Cs=e=>e.query("GET_STYLE_PROGRESS_INDICATOR_POSITION"),Pi=e=>e.query("GET_STYLE_BUTTON_REMOVE_ITEM_POSITION"),zs={buttonAbortItemLoad:{opacity:0},buttonRetryItemLoad:{opacity:0},buttonRemoveItem:{opacity:0},buttonProcessItem:{opacity:0},buttonAbortItemProcessing:{opacity:0},buttonRetryItemProcessing:{opacity:0},buttonRevertItemProcessing:{opacity:0},loadProgressIndicator:{opacity:0,align:Fs},processProgressIndicator:{opacity:0,align:Cs},processingCompleteIndicator:{opacity:0,scaleX:.75,scaleY:.75},info:{translateX:0,translateY:0,opacity:0},status:{translateX:0,translateY:0,opacity:0}},qa={buttonRemoveItem:{opacity:1},buttonProcessItem:{opacity:1},info:{translateX:be},status:{translateX:be}},wi={buttonAbortItemProcessing:{opacity:1},processProgressIndicator:{opacity:1},status:{opacity:1}},lt={DID_THROW_ITEM_INVALID:{buttonRemoveItem:{opacity:1},info:{translateX:be},status:{translateX:be,opacity:1}},DID_START_ITEM_LOAD:{buttonAbortItemLoad:{opacity:1},loadProgressIndicator:{opacity:1},status:{opacity:1}},DID_THROW_ITEM_LOAD_ERROR:{buttonRetryItemLoad:{opacity:1},buttonRemoveItem:{opacity:1},info:{translateX:be},status:{opacity:1}},DID_START_ITEM_REMOVE:{processProgressIndicator:{opacity:1,align:Pi},info:{translateX:be},status:{opacity:0}},DID_THROW_ITEM_REMOVE_ERROR:{processProgressIndicator:{opacity:0,align:Pi},buttonRemoveItem:{opacity:1},info:{translateX:be},status:{opacity:1,translateX:be}},DID_LOAD_ITEM:qa,DID_LOAD_LOCAL_ITEM:{buttonRemoveItem:{opacity:1},info:{translateX:be},status:{translateX:be}},DID_START_ITEM_PROCESSING:wi,DID_REQUEST_ITEM_PROCESSING:wi,DID_UPDATE_ITEM_PROCESS_PROGRESS:wi,DID_COMPLETE_ITEM_PROCESSING:{buttonRevertItemProcessing:{opacity:1},info:{opacity:1},status:{opacity:1}},DID_THROW_ITEM_PROCESSING_ERROR:{buttonRemoveItem:{opacity:1},buttonRetryItemProcessing:{opacity:1},status:{opacity:1},info:{translateX:be}},DID_THROW_ITEM_PROCESSING_REVERT_ERROR:{buttonRevertItemProcessing:{opacity:1},status:{opacity:1},info:{opacity:1}},DID_ABORT_ITEM_PROCESSING:{buttonRemoveItem:{opacity:1},buttonProcessItem:{opacity:1},info:{translateX:be},status:{opacity:1}},DID_REVERT_ITEM_PROCESSING:qa},Ns=re({create:({root:e})=>{e.element.innerHTML=e.query("GET_ICON_DONE")},name:"processing-complete-indicator",ignoreRect:!0,mixins:{styles:["scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",opacity:{type:"tween",duration:250}}}}),Bs=({root:e,props:t})=>{let i=Object.keys(xi).reduce((p,m)=>(p[m]={...xi[m]},p),{}),{id:a}=t,n=e.query("GET_ALLOW_REVERT"),r=e.query("GET_ALLOW_REMOVE"),o=e.query("GET_ALLOW_PROCESS"),l=e.query("GET_INSTANT_UPLOAD"),s=e.query("IS_ASYNC"),u=e.query("GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN"),c;s?o&&!n?c=p=>!/RevertItemProcessing/.test(p):!o&&n?c=p=>!/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(p):!o&&!n&&(c=p=>!/Process/.test(p)):c=p=>!/Process/.test(p);let d=c?Di.filter(c):Di.concat();if(l&&n&&(i.RevertItemProcessing.label="GET_LABEL_BUTTON_REMOVE_ITEM",i.RevertItemProcessing.icon="GET_ICON_REMOVE"),s&&!n){let p=lt.DID_COMPLETE_ITEM_PROCESSING;p.info.translateX=Ps,p.info.translateY=jt,p.status.translateY=jt,p.processingCompleteIndicator={opacity:1,scaleX:1,scaleY:1}}if(s&&!o&&(["DID_START_ITEM_PROCESSING","DID_REQUEST_ITEM_PROCESSING","DID_UPDATE_ITEM_PROCESS_PROGRESS","DID_THROW_ITEM_PROCESSING_ERROR"].forEach(p=>{lt[p].status.translateY=jt}),lt.DID_THROW_ITEM_PROCESSING_ERROR.status.translateX=Ds),u&&n){i.RevertItemProcessing.align="BUTTON_REMOVE_ITEM_POSITION";let p=lt.DID_COMPLETE_ITEM_PROCESSING;p.info.translateX=be,p.status.translateY=jt,p.processingCompleteIndicator={opacity:1,scaleX:1,scaleY:1}}r||(i.RemoveItem.disabled=!0),te(i,(p,m)=>{let g=e.createChildView(Mn,{label:e.query(m.label),icon:e.query(m.icon),opacity:0});d.includes(p)&&e.appendChildView(g),m.disabled&&(g.element.setAttribute("disabled","disabled"),g.element.setAttribute("hidden","hidden")),g.element.dataset.align=e.query(`GET_STYLE_${m.align}`),g.element.classList.add(m.className),g.on("click",b=>{b.stopPropagation(),!m.disabled&&e.dispatch(m.action,{query:a})}),e.ref[`button${p}`]=g}),e.ref.processingCompleteIndicator=e.appendChildView(e.createChildView(Ns)),e.ref.processingCompleteIndicator.element.dataset.align=e.query("GET_STYLE_BUTTON_PROCESS_ITEM_POSITION"),e.ref.info=e.appendChildView(e.createChildView(ws,{id:a})),e.ref.status=e.appendChildView(e.createChildView(xs,{id:a}));let h=e.appendChildView(e.createChildView(Ha,{opacity:0,align:e.query("GET_STYLE_LOAD_INDICATOR_POSITION")}));h.element.classList.add("filepond--load-indicator"),e.ref.loadProgressIndicator=h;let f=e.appendChildView(e.createChildView(Ha,{opacity:0,align:e.query("GET_STYLE_PROGRESS_INDICATOR_POSITION")}));f.element.classList.add("filepond--process-indicator"),e.ref.processProgressIndicator=f,e.ref.activeStyles=[]},Gs=({root:e,actions:t,props:i})=>{Vs({root:e,actions:t,props:i});let a=t.concat().filter(n=>/^DID_/.test(n.type)).reverse().find(n=>lt[n.type]);if(a){e.ref.activeStyles=[];let n=lt[a.type];te(zs,(r,o)=>{let l=e.ref[r];te(o,(s,u)=>{let c=n[r]&&typeof n[r][s]<"u"?n[r][s]:u;e.ref.activeStyles.push({control:l,key:s,value:c})})})}e.ref.activeStyles.forEach(({control:n,key:r,value:o})=>{n[r]=typeof o=="function"?o(e):o})},Vs=me({DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING:({root:e,action:t})=>{e.ref.buttonAbortItemProcessing.label=t.value},DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD:({root:e,action:t})=>{e.ref.buttonAbortItemLoad.label=t.value},DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL:({root:e,action:t})=>{e.ref.buttonAbortItemRemoval.label=t.value},DID_REQUEST_ITEM_PROCESSING:({root:e})=>{e.ref.processProgressIndicator.spin=!0,e.ref.processProgressIndicator.progress=0},DID_START_ITEM_LOAD:({root:e})=>{e.ref.loadProgressIndicator.spin=!0,e.ref.loadProgressIndicator.progress=0},DID_START_ITEM_REMOVE:({root:e})=>{e.ref.processProgressIndicator.spin=!0,e.ref.processProgressIndicator.progress=0},DID_UPDATE_ITEM_LOAD_PROGRESS:({root:e,action:t})=>{e.ref.loadProgressIndicator.spin=!1,e.ref.loadProgressIndicator.progress=t.progress},DID_UPDATE_ITEM_PROCESS_PROGRESS:({root:e,action:t})=>{e.ref.processProgressIndicator.spin=!1,e.ref.processProgressIndicator.progress=t.progress}}),Us=re({create:Bs,write:Gs,didCreateView:e=>{Ke("CREATE_VIEW",{...e,view:e})},name:"file"}),ks=({root:e,props:t})=>{e.ref.fileName=Be("legend"),e.appendChild(e.ref.fileName),e.ref.file=e.appendChildView(e.createChildView(Us,{id:t.id})),e.ref.data=!1},Hs=({root:e,props:t})=>{ae(e.ref.fileName,$i(e.query("GET_ITEM_NAME",t.id)))},Ws=re({create:ks,ignoreRect:!0,write:me({DID_LOAD_ITEM:Hs}),didCreateView:e=>{Ke("CREATE_VIEW",{...e,view:e})},tag:"fieldset",name:"file-wrapper"}),Xa={type:"spring",damping:.6,mass:7},Ys=({root:e,props:t})=>{[{name:"top"},{name:"center",props:{translateY:null,scaleY:null},mixins:{animations:{scaleY:Xa},styles:["translateY","scaleY"]}},{name:"bottom",props:{translateY:null},mixins:{animations:{translateY:Xa},styles:["translateY"]}}].forEach(i=>{$s(e,i,t.name)}),e.element.classList.add(`filepond--${t.name}`),e.ref.scalable=null},$s=(e,t,i)=>{let a=re({name:`panel-${t.name} filepond--${i}`,mixins:t.mixins,ignoreRectUpdate:!0}),n=e.createChildView(a,t.props);e.ref[t.name]=e.appendChildView(n)},qs=({root:e,props:t})=>{if((e.ref.scalable===null||t.scalable!==e.ref.scalable)&&(e.ref.scalable=fn(t.scalable)?t.scalable:!0,e.element.dataset.scalable=e.ref.scalable),!t.height)return;let i=e.ref.top.rect.element,a=e.ref.bottom.rect.element,n=Math.max(i.height+a.height,t.height);e.ref.center.translateY=i.height,e.ref.center.scaleY=(n-i.height-a.height)/100,e.ref.bottom.translateY=n-a.height},Pn=re({name:"panel",read:({root:e,props:t})=>t.heightCurrent=e.ref.bottom.translateY,write:qs,create:Ys,ignoreRect:!0,mixins:{apis:["height","heightCurrent","scalable"]}}),Xs=e=>{let t=e.map(a=>a.id),i;return{setIndex:a=>{i=a},getIndex:()=>i,getItemIndex:a=>t.indexOf(a.id)}},ja={type:"spring",stiffness:.75,damping:.45,mass:10},Qa="spring",Za={DID_START_ITEM_LOAD:"busy",DID_UPDATE_ITEM_LOAD_PROGRESS:"loading",DID_THROW_ITEM_INVALID:"load-invalid",DID_THROW_ITEM_LOAD_ERROR:"load-error",DID_LOAD_ITEM:"idle",DID_THROW_ITEM_REMOVE_ERROR:"remove-error",DID_START_ITEM_REMOVE:"busy",DID_START_ITEM_PROCESSING:"busy processing",DID_REQUEST_ITEM_PROCESSING:"busy processing",DID_UPDATE_ITEM_PROCESS_PROGRESS:"processing",DID_COMPLETE_ITEM_PROCESSING:"processing-complete",DID_THROW_ITEM_PROCESSING_ERROR:"processing-error",DID_THROW_ITEM_PROCESSING_REVERT_ERROR:"processing-revert-error",DID_ABORT_ITEM_PROCESSING:"cancelled",DID_REVERT_ITEM_PROCESSING:"idle"},js=({root:e,props:t})=>{if(e.ref.handleClick=a=>e.dispatch("DID_ACTIVATE_ITEM",{id:t.id}),e.element.id=`filepond--item-${t.id}`,e.element.addEventListener("click",e.ref.handleClick),e.ref.container=e.appendChildView(e.createChildView(Ws,{id:t.id})),e.ref.panel=e.appendChildView(e.createChildView(Pn,{name:"item-panel"})),e.ref.panel.height=null,t.markedForRemoval=!1,!e.query("GET_ALLOW_REORDER"))return;e.element.dataset.dragState="idle";let i=a=>{if(!a.isPrimary)return;let n=!1,r={x:a.pageX,y:a.pageY};t.dragOrigin={x:e.translateX,y:e.translateY},t.dragCenter={x:a.offsetX,y:a.offsetY};let o=Xs(e.query("GET_ACTIVE_ITEMS"));e.dispatch("DID_GRAB_ITEM",{id:t.id,dragState:o});let l=u=>{if(!u.isPrimary)return;u.stopPropagation(),u.preventDefault(),t.dragOffset={x:u.pageX-r.x,y:u.pageY-r.y},t.dragOffset.x*t.dragOffset.x+t.dragOffset.y*t.dragOffset.y>16&&!n&&(n=!0,e.element.removeEventListener("click",e.ref.handleClick)),e.dispatch("DID_DRAG_ITEM",{id:t.id,dragState:o})},s=u=>{u.isPrimary&&(document.removeEventListener("pointermove",l),document.removeEventListener("pointerup",s),t.dragOffset={x:u.pageX-r.x,y:u.pageY-r.y},e.dispatch("DID_DROP_ITEM",{id:t.id,dragState:o}),n&&setTimeout(()=>e.element.addEventListener("click",e.ref.handleClick),0))};document.addEventListener("pointermove",l),document.addEventListener("pointerup",s)};e.element.addEventListener("pointerdown",i)},Qs=me({DID_UPDATE_PANEL_HEIGHT:({root:e,action:t})=>{e.height=t.height}}),Zs=me({DID_GRAB_ITEM:({root:e,props:t})=>{t.dragOrigin={x:e.translateX,y:e.translateY}},DID_DRAG_ITEM:({root:e})=>{e.element.dataset.dragState="drag"},DID_DROP_ITEM:({root:e,props:t})=>{t.dragOffset=null,t.dragOrigin=null,e.element.dataset.dragState="drop"}},({root:e,actions:t,props:i,shouldOptimize:a})=>{e.element.dataset.dragState==="drop"&&e.scaleX<=1&&(e.element.dataset.dragState="idle");let n=t.concat().filter(o=>/^DID_/.test(o.type)).reverse().find(o=>Za[o.type]);n&&n.type!==i.currentState&&(i.currentState=n.type,e.element.dataset.filepondItemState=Za[i.currentState]||"");let r=e.query("GET_ITEM_PANEL_ASPECT_RATIO")||e.query("GET_PANEL_ASPECT_RATIO");r?a||(e.height=e.rect.element.width*r):(Qs({root:e,actions:t,props:i}),!e.height&&e.ref.container.rect.element.height>0&&(e.height=e.ref.container.rect.element.height)),a&&(e.ref.panel.height=null),e.ref.panel.height=e.height}),Ks=re({create:js,write:Zs,destroy:({root:e,props:t})=>{e.element.removeEventListener("click",e.ref.handleClick),e.dispatch("RELEASE_ITEM",{query:t.id})},tag:"li",name:"item",mixins:{apis:["id","interactionMethod","markedForRemoval","spawnDate","dragCenter","dragOrigin","dragOffset"],styles:["translateX","translateY","scaleX","scaleY","opacity","height"],animations:{scaleX:Qa,scaleY:Qa,translateX:ja,translateY:ja,opacity:{type:"tween",duration:150}}}}),qi=(e,t)=>Math.max(1,Math.floor((e+1)/t)),Xi=(e,t,i)=>{if(!i)return;let a=e.rect.element.width,n=t.length,r=null;if(n===0||i.topE){if(i.left{ne(e.element,"role","list"),e.ref.lastItemSpanwDate=Date.now()},ec=({root:e,action:t})=>{let{id:i,index:a,interactionMethod:n}=t;e.ref.addIndex=a;let r=Date.now(),o=r,l=1;if(n!==Se.NONE){l=0;let s=e.query("GET_ITEM_INSERT_INTERVAL"),u=r-e.ref.lastItemSpanwDate;o=u{e.dragOffset?(e.translateX=null,e.translateY=null,e.translateX=e.dragOrigin.x+e.dragOffset.x,e.translateY=e.dragOrigin.y+e.dragOffset.y,e.scaleX=1.025,e.scaleY=1.025):(e.translateX=t,e.translateY=i,Date.now()>e.spawnDate&&(e.opacity===0&&tc(e,t,i,a,n),e.scaleX=1,e.scaleY=1,e.opacity=1))},tc=(e,t,i,a,n)=>{e.interactionMethod===Se.NONE?(e.translateX=null,e.translateX=t,e.translateY=null,e.translateY=i):e.interactionMethod===Se.DROP?(e.translateX=null,e.translateX=t-a*20,e.translateY=null,e.translateY=i-n*10,e.scaleX=.8,e.scaleY=.8):e.interactionMethod===Se.BROWSE?(e.translateY=null,e.translateY=i-30):e.interactionMethod===Se.API&&(e.translateX=null,e.translateX=t-30,e.translateY=null)},ic=({root:e,action:t})=>{let{id:i}=t,a=e.childViews.find(n=>n.id===i);a&&(a.scaleX=.9,a.scaleY=.9,a.opacity=0,a.markedForRemoval=!0)},vi=e=>e.rect.element.height+e.rect.element.marginBottom*.5+e.rect.element.marginTop*.5,ac=e=>e.rect.element.width+e.rect.element.marginLeft*.5+e.rect.element.marginRight*.5,nc=({root:e,action:t})=>{let{id:i,dragState:a}=t,n=e.query("GET_ITEM",{id:i}),r=e.childViews.find(g=>g.id===i),o=e.childViews.length,l=a.getItemIndex(n);if(!r)return;let s={x:r.dragOrigin.x+r.dragOffset.x+r.dragCenter.x,y:r.dragOrigin.y+r.dragOffset.y+r.dragCenter.y},u=vi(r),c=ac(r),d=Math.floor(e.rect.outer.width/c);d>o&&(d=o);let h=Math.floor(o/d+1);Qt.setHeight=u*h,Qt.setWidth=c*d;var f={y:Math.floor(s.y/u),x:Math.floor(s.x/c),getGridIndex:function(){return s.y>Qt.getHeight||s.y<0||s.x>Qt.getWidth||s.x<0?l:this.y*d+this.x},getColIndex:function(){let b=e.query("GET_ACTIVE_ITEMS"),E=e.childViews.filter(x=>x.rect.element.height),I=b.map(x=>E.find(O=>O.id===x.id)),_=I.findIndex(x=>x===r),y=vi(r),T=I.length,v=T,R=0,S=0,D=0;for(let x=0;xx){if(s.y1?f.getGridIndex():f.getColIndex();e.dispatch("MOVE_ITEM",{query:r,index:p});let m=a.getIndex();if(m===void 0||m!==p){if(a.setIndex(p),m===void 0)return;e.dispatch("DID_REORDER_ITEMS",{items:e.query("GET_ACTIVE_ITEMS"),origin:l,target:p})}},rc=me({DID_ADD_ITEM:ec,DID_REMOVE_ITEM:ic,DID_DRAG_ITEM:nc}),oc=({root:e,props:t,actions:i,shouldOptimize:a})=>{rc({root:e,props:t,actions:i});let{dragCoordinates:n}=t,r=e.rect.element.width,o=e.childViews.filter(I=>I.rect.element.height),l=e.query("GET_ACTIVE_ITEMS").map(I=>o.find(_=>_.id===I.id)).filter(I=>I),s=n?Xi(e,l,n):null,u=e.ref.addIndex||null;e.ref.addIndex=null;let c=0,d=0,h=0;if(l.length===0)return;let f=l[0].rect.element,p=f.marginTop+f.marginBottom,m=f.marginLeft+f.marginRight,g=f.width+m,b=f.height+p,E=qi(r,g);if(E===1){let I=0,_=0;l.forEach((y,T)=>{if(s){let S=T-s;S===-2?_=-p*.25:S===-1?_=-p*.75:S===0?_=p*.75:S===1?_=p*.25:_=0}a&&(y.translateX=null,y.translateY=null),y.markedForRemoval||Ka(y,0,I+_);let R=(y.rect.element.height+p)*(y.markedForRemoval?y.opacity:1);I+=R})}else{let I=0,_=0;l.forEach((y,T)=>{T===s&&(c=1),T===u&&(h+=1),y.markedForRemoval&&y.opacity<.5&&(d-=1);let v=T+h+c+d,R=v%E,S=Math.floor(v/E),D=R*g,x=S*b,O=Math.sign(D-I),z=Math.sign(x-_);I=D,_=x,!y.markedForRemoval&&(a&&(y.translateX=null,y.translateY=null),Ka(y,D,x,O,z))})}},lc=(e,t)=>t.filter(i=>i.data&&i.data.id?e.id===i.data.id:!0),sc=re({create:Js,write:oc,tag:"ul",name:"list",didWriteView:({root:e})=>{e.childViews.filter(t=>t.markedForRemoval&&t.opacity===0&&t.resting).forEach(t=>{t._destroy(),e.removeChildView(t)})},filterFrameActionsForChild:lc,mixins:{apis:["dragCoordinates"]}}),cc=({root:e,props:t})=>{e.ref.list=e.appendChildView(e.createChildView(sc)),t.dragCoordinates=null,t.overflowing=!1},dc=({root:e,props:t,action:i})=>{e.query("GET_ITEM_INSERT_LOCATION_FREEDOM")&&(t.dragCoordinates={left:i.position.scopeLeft-e.ref.list.rect.element.left,top:i.position.scopeTop-(e.rect.outer.top+e.rect.element.marginTop+e.rect.element.scrollTop)})},uc=({props:e})=>{e.dragCoordinates=null},hc=me({DID_DRAG:dc,DID_END_DRAG:uc}),fc=({root:e,props:t,actions:i})=>{if(hc({root:e,props:t,actions:i}),e.ref.list.dragCoordinates=t.dragCoordinates,t.overflowing&&!t.overflow&&(t.overflowing=!1,e.element.dataset.state="",e.height=null),t.overflow){let a=Math.round(t.overflow);a!==e.height&&(t.overflowing=!0,e.element.dataset.state="overflow",e.height=a)}},pc=re({create:cc,write:fc,name:"list-scroller",mixins:{apis:["overflow","dragCoordinates"],styles:["height","translateY"],animations:{translateY:"spring"}}}),Oe=(e,t,i,a="")=>{i?ne(e,t,a):e.removeAttribute(t)},mc=e=>{if(!(!e||e.value==="")){try{e.value=""}catch{}if(e.value){let t=Be("form"),i=e.parentNode,a=e.nextSibling;t.appendChild(e),t.reset(),a?i.insertBefore(e,a):i.appendChild(e)}}},gc=({root:e,props:t})=>{e.element.id=`filepond--browser-${t.id}`,ne(e.element,"name",e.query("GET_NAME")),ne(e.element,"aria-controls",`filepond--assistant-${t.id}`),ne(e.element,"aria-labelledby",`filepond--drop-label-${t.id}`),Fn({root:e,action:{value:e.query("GET_ACCEPTED_FILE_TYPES")}}),Cn({root:e,action:{value:e.query("GET_ALLOW_MULTIPLE")}}),zn({root:e,action:{value:e.query("GET_ALLOW_DIRECTORIES_ONLY")}}),Fi({root:e}),Nn({root:e,action:{value:e.query("GET_REQUIRED")}}),Bn({root:e,action:{value:e.query("GET_CAPTURE_METHOD")}}),e.ref.handleChange=i=>{if(!e.element.value)return;let a=Array.from(e.element.files).map(n=>(n._relativePath=n.webkitRelativePath,n));setTimeout(()=>{t.onload(a),mc(e.element)},250)},e.element.addEventListener("change",e.ref.handleChange)},Fn=({root:e,action:t})=>{e.query("GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE")&&Oe(e.element,"accept",!!t.value,t.value?t.value.join(","):"")},Cn=({root:e,action:t})=>{Oe(e.element,"multiple",t.value)},zn=({root:e,action:t})=>{Oe(e.element,"webkitdirectory",t.value)},Fi=({root:e})=>{let t=e.query("GET_DISABLED"),i=e.query("GET_ALLOW_BROWSE"),a=t||!i;Oe(e.element,"disabled",a)},Nn=({root:e,action:t})=>{t.value?e.query("GET_TOTAL_ITEMS")===0&&Oe(e.element,"required",!0):Oe(e.element,"required",!1)},Bn=({root:e,action:t})=>{Oe(e.element,"capture",!!t.value,t.value===!0?"":t.value)},Ja=({root:e})=>{let{element:t}=e;e.query("GET_TOTAL_ITEMS")>0?(Oe(t,"required",!1),Oe(t,"name",!1)):(Oe(t,"name",!0,e.query("GET_NAME")),e.query("GET_CHECK_VALIDITY")&&t.setCustomValidity(""),e.query("GET_REQUIRED")&&Oe(t,"required",!0))},Ec=({root:e})=>{e.query("GET_CHECK_VALIDITY")&&e.element.setCustomValidity(e.query("GET_LABEL_INVALID_FIELD"))},Tc=re({tag:"input",name:"browser",ignoreRect:!0,ignoreRectUpdate:!0,attributes:{type:"file"},create:gc,destroy:({root:e})=>{e.element.removeEventListener("change",e.ref.handleChange)},write:me({DID_LOAD_ITEM:Ja,DID_REMOVE_ITEM:Ja,DID_THROW_ITEM_INVALID:Ec,DID_SET_DISABLED:Fi,DID_SET_ALLOW_BROWSE:Fi,DID_SET_ALLOW_DIRECTORIES_ONLY:zn,DID_SET_ALLOW_MULTIPLE:Cn,DID_SET_ACCEPTED_FILE_TYPES:Fn,DID_SET_CAPTURE_METHOD:Bn,DID_SET_REQUIRED:Nn})}),en={ENTER:13,SPACE:32},Ic=({root:e,props:t})=>{let i=Be("label");ne(i,"for",`filepond--browser-${t.id}`),ne(i,"id",`filepond--drop-label-${t.id}`),ne(i,"aria-hidden","true"),e.ref.handleKeyDown=a=>{(a.keyCode===en.ENTER||a.keyCode===en.SPACE)&&(a.preventDefault(),e.ref.label.click())},e.ref.handleClick=a=>{a.target===i||i.contains(a.target)||e.ref.label.click()},i.addEventListener("keydown",e.ref.handleKeyDown),e.element.addEventListener("click",e.ref.handleClick),Gn(i,t.caption),e.appendChild(i),e.ref.label=i},Gn=(e,t)=>{e.innerHTML=t;let i=e.querySelector(".filepond--label-action");return i&&ne(i,"tabindex","0"),t},bc=re({name:"drop-label",ignoreRect:!0,create:Ic,destroy:({root:e})=>{e.ref.label.addEventListener("keydown",e.ref.handleKeyDown),e.element.removeEventListener("click",e.ref.handleClick)},write:me({DID_SET_LABEL_IDLE:({root:e,action:t})=>{Gn(e.ref.label,t.value)}}),mixins:{styles:["opacity","translateX","translateY"],animations:{opacity:{type:"tween",duration:150},translateX:"spring",translateY:"spring"}}}),_c=re({name:"drip-blob",ignoreRect:!0,mixins:{styles:["translateX","translateY","scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",translateX:"spring",translateY:"spring",opacity:{type:"tween",duration:250}}}}),Rc=({root:e})=>{let t=e.rect.element.width*.5,i=e.rect.element.height*.5;e.ref.blob=e.appendChildView(e.createChildView(_c,{opacity:0,scaleX:2.5,scaleY:2.5,translateX:t,translateY:i}))},yc=({root:e,action:t})=>{if(!e.ref.blob){Rc({root:e});return}e.ref.blob.translateX=t.position.scopeLeft,e.ref.blob.translateY=t.position.scopeTop,e.ref.blob.scaleX=1,e.ref.blob.scaleY=1,e.ref.blob.opacity=1},Sc=({root:e})=>{e.ref.blob&&(e.ref.blob.opacity=0)},wc=({root:e})=>{e.ref.blob&&(e.ref.blob.scaleX=2.5,e.ref.blob.scaleY=2.5,e.ref.blob.opacity=0)},vc=({root:e,props:t,actions:i})=>{Ac({root:e,props:t,actions:i});let{blob:a}=e.ref;i.length===0&&a&&a.opacity===0&&(e.removeChildView(a),e.ref.blob=null)},Ac=me({DID_DRAG:yc,DID_DROP:wc,DID_END_DRAG:Sc}),Lc=re({ignoreRect:!0,ignoreRectUpdate:!0,name:"drip",write:vc}),Vn=(e,t)=>{try{let i=new DataTransfer;t.forEach(a=>{a instanceof File?i.items.add(a):i.items.add(new File([a],a.name,{type:a.type}))}),e.files=i.files}catch{return!1}return!0},Mc=({root:e})=>e.ref.fields={},ci=(e,t)=>e.ref.fields[t],ji=e=>{e.query("GET_ACTIVE_ITEMS").forEach(t=>{e.ref.fields[t.id]&&e.element.appendChild(e.ref.fields[t.id])})},tn=({root:e})=>ji(e),Oc=({root:e,action:t})=>{let n=!(e.query("GET_ITEM",t.id).origin===se.LOCAL)&&e.query("SHOULD_UPDATE_FILE_INPUT"),r=Be("input");r.type=n?"file":"hidden",r.name=e.query("GET_NAME"),r.disabled=e.query("GET_DISABLED"),e.ref.fields[t.id]=r,ji(e)},xc=({root:e,action:t})=>{let i=ci(e,t.id);if(!i||(t.serverFileReference!==null&&(i.value=t.serverFileReference),!e.query("SHOULD_UPDATE_FILE_INPUT")))return;let a=e.query("GET_ITEM",t.id);Vn(i,[a.file])},Dc=({root:e,action:t})=>{e.query("SHOULD_UPDATE_FILE_INPUT")&&setTimeout(()=>{let i=ci(e,t.id);i&&Vn(i,[t.file])},0)},Pc=({root:e})=>{e.element.disabled=e.query("GET_DISABLED")},Fc=({root:e,action:t})=>{let i=ci(e,t.id);i&&(i.parentNode&&i.parentNode.removeChild(i),delete e.ref.fields[t.id])},Cc=({root:e,action:t})=>{let i=ci(e,t.id);i&&(t.value===null?i.removeAttribute("value"):i.type!="file"&&(i.value=t.value),ji(e))},zc=me({DID_SET_DISABLED:Pc,DID_ADD_ITEM:Oc,DID_LOAD_ITEM:xc,DID_REMOVE_ITEM:Fc,DID_DEFINE_VALUE:Cc,DID_PREPARE_OUTPUT:Dc,DID_REORDER_ITEMS:tn,DID_SORT_ITEMS:tn}),Nc=re({tag:"fieldset",name:"data",create:Mc,write:zc,ignoreRect:!0}),Bc=e=>"getRootNode"in e?e.getRootNode():document,Gc=["jpg","jpeg","png","gif","bmp","webp","svg","tiff"],Vc=["css","csv","html","txt"],Uc={zip:"zip|compressed",epub:"application/epub+zip"},Un=(e="")=>(e=e.toLowerCase(),Gc.includes(e)?"image/"+(e==="jpg"?"jpeg":e==="svg"?"svg+xml":e):Vc.includes(e)?"text/"+e:Uc[e]||""),Qi=e=>new Promise((t,i)=>{let a=jc(e);if(a.length&&!kc(e))return t(a);Hc(e).then(t)}),kc=e=>e.files?e.files.length>0:!1,Hc=e=>new Promise((t,i)=>{let a=(e.items?Array.from(e.items):[]).filter(n=>Wc(n)).map(n=>Yc(n));if(!a.length){t(e.files?Array.from(e.files):[]);return}Promise.all(a).then(n=>{let r=[];n.forEach(o=>{r.push.apply(r,o)}),t(r.filter(o=>o).map(o=>(o._relativePath||(o._relativePath=o.webkitRelativePath),o)))}).catch(console.error)}),Wc=e=>{if(kn(e)){let t=Zi(e);if(t)return t.isFile||t.isDirectory}return e.kind==="file"},Yc=e=>new Promise((t,i)=>{if(Xc(e)){$c(Zi(e)).then(t).catch(i);return}t([e.getAsFile()])}),$c=e=>new Promise((t,i)=>{let a=[],n=0,r=0,o=()=>{r===0&&n===0&&t(a)},l=s=>{n++;let u=s.createReader(),c=()=>{u.readEntries(d=>{if(d.length===0){n--,o();return}d.forEach(h=>{h.isDirectory?l(h):(r++,h.file(f=>{let p=qc(f);h.fullPath&&(p._relativePath=h.fullPath),a.push(p),r--,o()}))}),c()},i)};c()};l(e)}),qc=e=>{if(e.type.length)return e;let t=e.lastModifiedDate,i=e.name,a=Un(si(e.name));return a.length&&(e=e.slice(0,e.size,a),e.name=i,e.lastModifiedDate=t),e},Xc=e=>kn(e)&&(Zi(e)||{}).isDirectory,kn=e=>"webkitGetAsEntry"in e,Zi=e=>e.webkitGetAsEntry(),jc=e=>{let t=[];try{if(t=Zc(e),t.length)return t;t=Qc(e)}catch{}return t},Qc=e=>{let t=e.getData("url");return typeof t=="string"&&t.length?[t]:[]},Zc=e=>{let t=e.getData("text/html");if(typeof t=="string"&&t.length){let i=t.match(/src\s*=\s*"(.+?)"/);if(i)return[i[1]]}return[]},ii=[],Ze=e=>({pageLeft:e.pageX,pageTop:e.pageY,scopeLeft:e.offsetX||e.layerX,scopeTop:e.offsetY||e.layerY}),Kc=(e,t,i)=>{let a=Jc(t),n={element:e,filterElement:i,state:null,ondrop:()=>{},onenter:()=>{},ondrag:()=>{},onexit:()=>{},onload:()=>{},allowdrop:()=>{}};return n.destroy=a.addListener(n),n},Jc=e=>{let t=ii.find(a=>a.element===e);if(t)return t;let i=ed(e);return ii.push(i),i},ed=e=>{let t=[],i={dragenter:id,dragover:ad,dragleave:rd,drop:nd},a={};te(i,(r,o)=>{a[r]=o(e,t),e.addEventListener(r,a[r],!1)});let n={element:e,addListener:r=>(t.push(r),()=>{t.splice(t.indexOf(r),1),t.length===0&&(ii.splice(ii.indexOf(n),1),te(i,o=>{e.removeEventListener(o,a[o],!1)}))})};return n},td=(e,t)=>("elementFromPoint"in e||(e=document),e.elementFromPoint(t.x,t.y)),Ki=(e,t)=>{let i=Bc(t),a=td(i,{x:e.pageX-window.pageXOffset,y:e.pageY-window.pageYOffset});return a===t||t.contains(a)},Hn=null,Zt=(e,t)=>{try{e.dropEffect=t}catch{}},id=(e,t)=>i=>{i.preventDefault(),Hn=i.target,t.forEach(a=>{let{element:n,onenter:r}=a;Ki(i,n)&&(a.state="enter",r(Ze(i)))})},ad=(e,t)=>i=>{i.preventDefault();let a=i.dataTransfer;Qi(a).then(n=>{let r=!1;t.some(o=>{let{filterElement:l,element:s,onenter:u,onexit:c,ondrag:d,allowdrop:h}=o;Zt(a,"copy");let f=h(n);if(!f){Zt(a,"none");return}if(Ki(i,s)){if(r=!0,o.state===null){o.state="enter",u(Ze(i));return}if(o.state="over",l&&!f){Zt(a,"none");return}d(Ze(i))}else l&&!r&&Zt(a,"none"),o.state&&(o.state=null,c(Ze(i)))})})},nd=(e,t)=>i=>{i.preventDefault();let a=i.dataTransfer;Qi(a).then(n=>{t.forEach(r=>{let{filterElement:o,element:l,ondrop:s,onexit:u,allowdrop:c}=r;if(r.state=null,!(o&&!Ki(i,l))){if(!c(n))return u(Ze(i));s(Ze(i),n)}})})},rd=(e,t)=>i=>{Hn===i.target&&t.forEach(a=>{let{onexit:n}=a;a.state=null,n(Ze(i))})},od=(e,t,i)=>{e.classList.add("filepond--hopper");let{catchesDropsOnPage:a,requiresDropOnElement:n,filterItems:r=c=>c}=i,o=Kc(e,a?document.documentElement:e,n),l="",s="";o.allowdrop=c=>t(r(c)),o.ondrop=(c,d)=>{let h=r(d);if(!t(h)){u.ondragend(c);return}s="drag-drop",u.onload(h,c)},o.ondrag=c=>{u.ondrag(c)},o.onenter=c=>{s="drag-over",u.ondragstart(c)},o.onexit=c=>{s="drag-exit",u.ondragend(c)};let u={updateHopperState:()=>{l!==s&&(e.dataset.hopperState=s,l=s)},onload:()=>{},ondragstart:()=>{},ondrag:()=>{},ondragend:()=>{},destroy:()=>{o.destroy()}};return u},Ci=!1,st=[],Wn=e=>{let t=document.activeElement;if(t&&/textarea|input/i.test(t.nodeName)){let i=!1,a=t;for(;a!==document.body;){if(a.classList.contains("filepond--root")){i=!0;break}a=a.parentNode}if(!i)return}Qi(e.clipboardData).then(i=>{i.length&&st.forEach(a=>a(i))})},ld=e=>{st.includes(e)||(st.push(e),!Ci&&(Ci=!0,document.addEventListener("paste",Wn)))},sd=e=>{Hi(st,st.indexOf(e)),st.length===0&&(document.removeEventListener("paste",Wn),Ci=!1)},cd=()=>{let e=i=>{t.onload(i)},t={destroy:()=>{sd(e)},onload:()=>{}};return ld(e),t},dd=({root:e,props:t})=>{e.element.id=`filepond--assistant-${t.id}`,ne(e.element,"role","status"),ne(e.element,"aria-live","polite"),ne(e.element,"aria-relevant","additions")},an=null,nn=null,Ai=[],di=(e,t)=>{e.element.textContent=t},ud=e=>{e.element.textContent=""},Yn=(e,t,i)=>{let a=e.query("GET_TOTAL_ITEMS");di(e,`${i} ${t}, ${a} ${a===1?e.query("GET_LABEL_FILE_COUNT_SINGULAR"):e.query("GET_LABEL_FILE_COUNT_PLURAL")}`),clearTimeout(nn),nn=setTimeout(()=>{ud(e)},1500)},$n=e=>e.element.parentNode.contains(document.activeElement),hd=({root:e,action:t})=>{if(!$n(e))return;e.element.textContent="";let i=e.query("GET_ITEM",t.id);Ai.push(i.filename),clearTimeout(an),an=setTimeout(()=>{Yn(e,Ai.join(", "),e.query("GET_LABEL_FILE_ADDED")),Ai.length=0},750)},fd=({root:e,action:t})=>{if(!$n(e))return;let i=t.item;Yn(e,i.filename,e.query("GET_LABEL_FILE_REMOVED"))},pd=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename,n=e.query("GET_LABEL_FILE_PROCESSING_COMPLETE");di(e,`${a} ${n}`)},rn=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename,n=e.query("GET_LABEL_FILE_PROCESSING_ABORTED");di(e,`${a} ${n}`)},Kt=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename;di(e,`${t.status.main} ${a} ${t.status.sub}`)},md=re({create:dd,ignoreRect:!0,ignoreRectUpdate:!0,write:me({DID_LOAD_ITEM:hd,DID_REMOVE_ITEM:fd,DID_COMPLETE_ITEM_PROCESSING:pd,DID_ABORT_ITEM_PROCESSING:rn,DID_REVERT_ITEM_PROCESSING:rn,DID_THROW_ITEM_REMOVE_ERROR:Kt,DID_THROW_ITEM_LOAD_ERROR:Kt,DID_THROW_ITEM_INVALID:Kt,DID_THROW_ITEM_PROCESSING_ERROR:Kt}),tag:"span",name:"assistant"}),qn=(e,t="-")=>e.replace(new RegExp(`${t}.`,"g"),i=>i.charAt(1).toUpperCase()),Xn=(e,t=16,i=!0)=>{let a=Date.now(),n=null;return(...r)=>{clearTimeout(n);let o=Date.now()-a,l=()=>{a=Date.now(),e(...r)};oe.preventDefault(),Ed=({root:e,props:t})=>{let i=e.query("GET_ID");i&&(e.element.id=i);let a=e.query("GET_CLASS_NAME");a&&a.split(" ").filter(s=>s.length).forEach(s=>{e.element.classList.add(s)}),e.ref.label=e.appendChildView(e.createChildView(bc,{...t,translateY:null,caption:e.query("GET_LABEL_IDLE")})),e.ref.list=e.appendChildView(e.createChildView(pc,{translateY:null})),e.ref.panel=e.appendChildView(e.createChildView(Pn,{name:"panel-root"})),e.ref.assistant=e.appendChildView(e.createChildView(md,{...t})),e.ref.data=e.appendChildView(e.createChildView(Nc,{...t})),e.ref.measure=Be("div"),e.ref.measure.style.height="100%",e.element.appendChild(e.ref.measure),e.ref.bounds=null,e.query("GET_STYLES").filter(s=>!Ne(s.value)).map(({name:s,value:u})=>{e.element.dataset[s]=u}),e.ref.widthPrevious=null,e.ref.widthUpdated=Xn(()=>{e.ref.updateHistory=[],e.dispatch("DID_RESIZE_ROOT")},250),e.ref.previousAspectRatio=null,e.ref.updateHistory=[];let n=window.matchMedia("(pointer: fine) and (hover: hover)").matches,r="PointerEvent"in window;e.query("GET_ALLOW_REORDER")&&r&&!n&&(e.element.addEventListener("touchmove",ai,{passive:!1}),e.element.addEventListener("gesturestart",ai));let o=e.query("GET_CREDITS");if(o.length===2){let s=document.createElement("a");s.className="filepond--credits",s.setAttribute("aria-hidden","true"),s.href=o[0],s.tabindex=-1,s.target="_blank",s.rel="noopener noreferrer",s.textContent=o[1],e.element.appendChild(s),e.ref.credits=s}},Td=({root:e,props:t,actions:i})=>{if(yd({root:e,props:t,actions:i}),i.filter(T=>/^DID_SET_STYLE_/.test(T.type)).filter(T=>!Ne(T.data.value)).map(({type:T,data:v})=>{let R=qn(T.substring(8).toLowerCase(),"_");e.element.dataset[R]=v.value,e.invalidateLayout()}),e.rect.element.hidden)return;e.rect.element.width!==e.ref.widthPrevious&&(e.ref.widthPrevious=e.rect.element.width,e.ref.widthUpdated());let a=e.ref.bounds;a||(a=e.ref.bounds=_d(e),e.element.removeChild(e.ref.measure),e.ref.measure=null);let{hopper:n,label:r,list:o,panel:l}=e.ref;n&&n.updateHopperState();let s=e.query("GET_PANEL_ASPECT_RATIO"),u=e.query("GET_ALLOW_MULTIPLE"),c=e.query("GET_TOTAL_ITEMS"),d=u?e.query("GET_MAX_FILES")||gd:1,h=c===d,f=i.find(T=>T.type==="DID_ADD_ITEM");if(h&&f){let T=f.data.interactionMethod;r.opacity=0,u?r.translateY=-40:T===Se.API?r.translateX=40:T===Se.BROWSE?r.translateY=40:r.translateY=30}else h||(r.opacity=1,r.translateX=0,r.translateY=0);let p=Id(e),m=bd(e),g=r.rect.element.height,b=!u||h?0:g,E=h?o.rect.element.marginTop:0,I=c===0?0:o.rect.element.marginBottom,_=b+E+m.visual+I,y=b+E+m.bounds+I;if(o.translateY=Math.max(0,b-o.rect.element.marginTop)-p.top,s){let T=e.rect.element.width,v=T*s;s!==e.ref.previousAspectRatio&&(e.ref.previousAspectRatio=s,e.ref.updateHistory=[]);let R=e.ref.updateHistory;R.push(T);let S=2;if(R.length>S*2){let x=R.length,O=x-10,z=0;for(let A=x;A>=O;A--)if(R[A]===R[A-2]&&z++,z>=S)return}l.scalable=!1,l.height=v;let D=v-b-(I-p.bottom)-(h?E:0);m.visual>D?o.overflow=D:o.overflow=null,e.height=v}else if(a.fixedHeight){l.scalable=!1;let T=a.fixedHeight-b-(I-p.bottom)-(h?E:0);m.visual>T?o.overflow=T:o.overflow=null}else if(a.cappedHeight){let T=_>=a.cappedHeight,v=Math.min(a.cappedHeight,_);l.scalable=!0,l.height=T?v:v-p.top-p.bottom;let R=v-b-(I-p.bottom)-(h?E:0);_>a.cappedHeight&&m.visual>R?o.overflow=R:o.overflow=null,e.height=Math.min(a.cappedHeight,y-p.top-p.bottom)}else{let T=c>0?p.top+p.bottom:0;l.scalable=!0,l.height=Math.max(g,_-T),e.height=Math.max(g,y-T)}e.ref.credits&&l.heightCurrent&&(e.ref.credits.style.transform=`translateY(${l.heightCurrent}px)`)},Id=e=>{let t=e.ref.list.childViews[0].childViews[0];return t?{top:t.rect.element.marginTop,bottom:t.rect.element.marginBottom}:{top:0,bottom:0}},bd=e=>{let t=0,i=0,a=e.ref.list,n=a.childViews[0],r=n.childViews.filter(E=>E.rect.element.height),o=e.query("GET_ACTIVE_ITEMS").map(E=>r.find(I=>I.id===E.id)).filter(E=>E);if(o.length===0)return{visual:t,bounds:i};let l=n.rect.element.width,s=Xi(n,o,a.dragCoordinates),u=o[0].rect.element,c=u.marginTop+u.marginBottom,d=u.marginLeft+u.marginRight,h=u.width+d,f=u.height+c,p=typeof s<"u"&&s>=0?1:0,m=o.find(E=>E.markedForRemoval&&E.opacity<.45)?-1:0,g=o.length+p+m,b=qi(l,h);return b===1?o.forEach(E=>{let I=E.rect.element.height+c;i+=I,t+=I*E.opacity}):(i=Math.ceil(g/b)*f,t=i),{visual:t,bounds:i}},_d=e=>{let t=e.ref.measureHeight||null;return{cappedHeight:parseInt(e.style.maxHeight,10)||null,fixedHeight:t===0?null:t}},Ji=(e,t)=>{let i=e.query("GET_ALLOW_REPLACE"),a=e.query("GET_ALLOW_MULTIPLE"),n=e.query("GET_TOTAL_ITEMS"),r=e.query("GET_MAX_FILES"),o=t.length;return!a&&o>1?(e.dispatch("DID_THROW_MAX_FILES",{source:t,error:ie("warning",0,"Max files")}),!0):(r=a?r:1,!a&&i?!1:ft(r)&&n+o>r?(e.dispatch("DID_THROW_MAX_FILES",{source:t,error:ie("warning",0,"Max files")}),!0):!1)},Rd=(e,t,i)=>{let a=e.childViews[0];return Xi(a,t,{left:i.scopeLeft-a.rect.element.left,top:i.scopeTop-(e.rect.outer.top+e.rect.element.marginTop+e.rect.element.scrollTop)})},on=e=>{let t=e.query("GET_ALLOW_DROP"),i=e.query("GET_DISABLED"),a=t&&!i;if(a&&!e.ref.hopper){let n=od(e.element,r=>{let o=e.query("GET_BEFORE_DROP_FILE")||(()=>!0);return e.query("GET_DROP_VALIDATION")?r.every(s=>Ke("ALLOW_HOPPER_ITEM",s,{query:e.query}).every(u=>u===!0)&&o(s)):!0},{filterItems:r=>{let o=e.query("GET_IGNORED_FILES");return r.filter(l=>ht(l)?!o.includes(l.name.toLowerCase()):!0)},catchesDropsOnPage:e.query("GET_DROP_ON_PAGE"),requiresDropOnElement:e.query("GET_DROP_ON_ELEMENT")});n.onload=(r,o)=>{let s=e.ref.list.childViews[0].childViews.filter(c=>c.rect.element.height),u=e.query("GET_ACTIVE_ITEMS").map(c=>s.find(d=>d.id===c.id)).filter(c=>c);Le("ADD_ITEMS",r,{dispatch:e.dispatch}).then(c=>{if(Ji(e,c))return!1;e.dispatch("ADD_ITEMS",{items:c,index:Rd(e.ref.list,u,o),interactionMethod:Se.DROP})}),e.dispatch("DID_DROP",{position:o}),e.dispatch("DID_END_DRAG",{position:o})},n.ondragstart=r=>{e.dispatch("DID_START_DRAG",{position:r})},n.ondrag=Xn(r=>{e.dispatch("DID_DRAG",{position:r})}),n.ondragend=r=>{e.dispatch("DID_END_DRAG",{position:r})},e.ref.hopper=n,e.ref.drip=e.appendChildView(e.createChildView(Lc))}else!a&&e.ref.hopper&&(e.ref.hopper.destroy(),e.ref.hopper=null,e.removeChildView(e.ref.drip))},ln=(e,t)=>{let i=e.query("GET_ALLOW_BROWSE"),a=e.query("GET_DISABLED"),n=i&&!a;n&&!e.ref.browser?e.ref.browser=e.appendChildView(e.createChildView(Tc,{...t,onload:r=>{Le("ADD_ITEMS",r,{dispatch:e.dispatch}).then(o=>{if(Ji(e,o))return!1;e.dispatch("ADD_ITEMS",{items:o,index:-1,interactionMethod:Se.BROWSE})})}}),0):!n&&e.ref.browser&&(e.removeChildView(e.ref.browser),e.ref.browser=null)},sn=e=>{let t=e.query("GET_ALLOW_PASTE"),i=e.query("GET_DISABLED"),a=t&&!i;a&&!e.ref.paster?(e.ref.paster=cd(),e.ref.paster.onload=n=>{Le("ADD_ITEMS",n,{dispatch:e.dispatch}).then(r=>{if(Ji(e,r))return!1;e.dispatch("ADD_ITEMS",{items:r,index:-1,interactionMethod:Se.PASTE})})}):!a&&e.ref.paster&&(e.ref.paster.destroy(),e.ref.paster=null)},yd=me({DID_SET_ALLOW_BROWSE:({root:e,props:t})=>{ln(e,t)},DID_SET_ALLOW_DROP:({root:e})=>{on(e)},DID_SET_ALLOW_PASTE:({root:e})=>{sn(e)},DID_SET_DISABLED:({root:e,props:t})=>{on(e),sn(e),ln(e,t),e.query("GET_DISABLED")?e.element.dataset.disabled="disabled":e.element.removeAttribute("data-disabled")}}),Sd=re({name:"root",read:({root:e})=>{e.ref.measure&&(e.ref.measureHeight=e.ref.measure.offsetHeight)},create:Ed,write:Td,destroy:({root:e})=>{e.ref.paster&&e.ref.paster.destroy(),e.ref.hopper&&e.ref.hopper.destroy(),e.element.removeEventListener("touchmove",ai),e.element.removeEventListener("gesturestart",ai)},mixins:{styles:["height"]}}),wd=(e={})=>{let t=null,i=ti(),a=ko(Al(i),[Yl,Ol(i)],[gs,Ml(i)]);a.dispatch("SET_OPTIONS",{options:e});let n=()=>{document.hidden||a.dispatch("KICK")};document.addEventListener("visibilitychange",n);let r=null,o=!1,l=!1,s=null,u=null,c=()=>{o||(o=!0),clearTimeout(r),r=setTimeout(()=>{o=!1,s=null,u=null,l&&(l=!1,a.dispatch("DID_STOP_RESIZE"))},500)};window.addEventListener("resize",c);let d=Sd(a,{id:ki()}),h=!1,f=!1,p={_read:()=>{o&&(u=window.innerWidth,s||(s=u),!l&&u!==s&&(a.dispatch("DID_START_RESIZE"),l=!0)),f&&h&&(h=d.element.offsetParent===null),!h&&(d._read(),f=d.rect.element.hidden)},_write:w=>{let L=a.processActionQueue().filter(C=>!/^SET_/.test(C.type));h&&!L.length||(E(L),h=d._write(w,L,l),Pl(a.query("GET_ITEMS")),h&&a.processDispatchQueue())}},m=w=>L=>{let C={type:w};if(!L)return C;if(L.hasOwnProperty("error")&&(C.error=L.error?{...L.error}:null),L.status&&(C.status={...L.status}),L.file&&(C.output=L.file),L.source)C.file=L.source;else if(L.item||L.id){let P=L.item?L.item:a.query("GET_ITEM",L.id);C.file=P?ge(P):null}return L.items&&(C.items=L.items.map(ge)),/progress/.test(w)&&(C.progress=L.progress),L.hasOwnProperty("origin")&&L.hasOwnProperty("target")&&(C.origin=L.origin,C.target=L.target),C},g={DID_DESTROY:m("destroy"),DID_INIT:m("init"),DID_THROW_MAX_FILES:m("warning"),DID_INIT_ITEM:m("initfile"),DID_START_ITEM_LOAD:m("addfilestart"),DID_UPDATE_ITEM_LOAD_PROGRESS:m("addfileprogress"),DID_LOAD_ITEM:m("addfile"),DID_THROW_ITEM_INVALID:[m("error"),m("addfile")],DID_THROW_ITEM_LOAD_ERROR:[m("error"),m("addfile")],DID_THROW_ITEM_REMOVE_ERROR:[m("error"),m("removefile")],DID_PREPARE_OUTPUT:m("preparefile"),DID_START_ITEM_PROCESSING:m("processfilestart"),DID_UPDATE_ITEM_PROCESS_PROGRESS:m("processfileprogress"),DID_ABORT_ITEM_PROCESSING:m("processfileabort"),DID_COMPLETE_ITEM_PROCESSING:m("processfile"),DID_COMPLETE_ITEM_PROCESSING_ALL:m("processfiles"),DID_REVERT_ITEM_PROCESSING:m("processfilerevert"),DID_THROW_ITEM_PROCESSING_ERROR:[m("error"),m("processfile")],DID_REMOVE_ITEM:m("removefile"),DID_UPDATE_ITEMS:m("updatefiles"),DID_ACTIVATE_ITEM:m("activatefile"),DID_REORDER_ITEMS:m("reorderfiles")},b=w=>{let L={pond:F,...w};delete L.type,d.element.dispatchEvent(new CustomEvent(`FilePond:${w.type}`,{detail:L,bubbles:!0,cancelable:!0,composed:!0}));let C=[];w.hasOwnProperty("error")&&C.push(w.error),w.hasOwnProperty("file")&&C.push(w.file);let P=["type","error","file"];Object.keys(w).filter(B=>!P.includes(B)).forEach(B=>C.push(w[B])),F.fire(w.type,...C);let G=a.query(`GET_ON${w.type.toUpperCase()}`);G&&G(...C)},E=w=>{w.length&&w.filter(L=>g[L.type]).forEach(L=>{let C=g[L.type];(Array.isArray(C)?C:[C]).forEach(P=>{L.type==="DID_INIT_ITEM"?b(P(L.data)):setTimeout(()=>{b(P(L.data))},0)})})},I=w=>a.dispatch("SET_OPTIONS",{options:w}),_=w=>a.query("GET_ACTIVE_ITEM",w),y=w=>new Promise((L,C)=>{a.dispatch("REQUEST_ITEM_PREPARE",{query:w,success:P=>{L(P)},failure:P=>{C(P)}})}),T=(w,L={})=>new Promise((C,P)=>{S([{source:w,options:L}],{index:L.index}).then(G=>C(G&&G[0])).catch(P)}),v=w=>w.file&&w.id,R=(w,L)=>(typeof w=="object"&&!v(w)&&!L&&(L=w,w=void 0),a.dispatch("REMOVE_ITEM",{...L,query:w}),a.query("GET_ACTIVE_ITEM",w)===null),S=(...w)=>new Promise((L,C)=>{let P=[],G={};if(ni(w[0]))P.push.apply(P,w[0]),Object.assign(G,w[1]||{});else{let B=w[w.length-1];typeof B=="object"&&!(B instanceof Blob)&&Object.assign(G,w.pop()),P.push(...w)}a.dispatch("ADD_ITEMS",{items:P,index:G.index,interactionMethod:Se.API,success:L,failure:C})}),D=()=>a.query("GET_ACTIVE_ITEMS"),x=w=>new Promise((L,C)=>{a.dispatch("REQUEST_ITEM_PROCESSING",{query:w,success:P=>{L(P)},failure:P=>{C(P)}})}),O=(...w)=>{let L=Array.isArray(w[0])?w[0]:w,C=L.length?L:D();return Promise.all(C.map(y))},z=(...w)=>{let L=Array.isArray(w[0])?w[0]:w;if(!L.length){let C=D().filter(P=>!(P.status===k.IDLE&&P.origin===se.LOCAL)&&P.status!==k.PROCESSING&&P.status!==k.PROCESSING_COMPLETE&&P.status!==k.PROCESSING_REVERT_ERROR);return Promise.all(C.map(x))}return Promise.all(L.map(x))},A=(...w)=>{let L=Array.isArray(w[0])?w[0]:w,C;typeof L[L.length-1]=="object"?C=L.pop():Array.isArray(w[0])&&(C=w[1]);let P=D();return L.length?L.map(B=>$e(B)?P[B]?P[B].id:null:B).filter(B=>B).map(B=>R(B,C)):Promise.all(P.map(B=>R(B,C)))},F={...li(),...p,...Ll(a,i),setOptions:I,addFile:T,addFiles:S,getFile:_,processFile:x,prepareFile:y,removeFile:R,moveFile:(w,L)=>a.dispatch("MOVE_ITEM",{query:w,index:L}),getFiles:D,processFiles:z,removeFiles:A,prepareFiles:O,sort:w=>a.dispatch("SORT",{compare:w}),browse:()=>{var w=d.element.querySelector("input[type=file]");w&&w.click()},destroy:()=>{F.fire("destroy",d.element),a.dispatch("ABORT_ALL"),d._destroy(),window.removeEventListener("resize",c),document.removeEventListener("visibilitychange",n),a.dispatch("DID_DESTROY")},insertBefore:w=>Oa(d.element,w),insertAfter:w=>xa(d.element,w),appendTo:w=>w.appendChild(d.element),replaceElement:w=>{Oa(d.element,w),w.parentNode.removeChild(w),t=w},restoreElement:()=>{t&&(xa(t,d.element),d.element.parentNode.removeChild(d.element),t=null)},isAttachedTo:w=>d.element===w||t===w,element:{get:()=>d.element},status:{get:()=>a.query("GET_STATUS")}};return a.dispatch("DID_INIT"),Ue(F)},jn=(e={})=>{let t={};return te(ti(),(a,n)=>{t[a]=n[0]}),wd({...t,...e})},vd=e=>e.charAt(0).toLowerCase()+e.slice(1),Ad=e=>qn(e.replace(/^data-/,"")),Qn=(e,t)=>{te(t,(i,a)=>{te(e,(n,r)=>{let o=new RegExp(i);if(!o.test(n)||(delete e[n],a===!1))return;if(pe(a)){e[a]=r;return}let s=a.group;ce(a)&&!e[s]&&(e[s]={}),e[s][vd(n.replace(o,""))]=r}),a.mapping&&Qn(e[a.group],a.mapping)})},Ld=(e,t={})=>{let i=[];te(e.attributes,n=>{i.push(e.attributes[n])});let a=i.filter(n=>n.name).reduce((n,r)=>{let o=ne(e,r.name);return n[Ad(r.name)]=o===r.name?!0:o,n},{});return Qn(a,t),a},Md=(e,t={})=>{let i={"^class$":"className","^multiple$":"allowMultiple","^capture$":"captureMethod","^webkitdirectory$":"allowDirectoriesOnly","^server":{group:"server",mapping:{"^process":{group:"process"},"^revert":{group:"revert"},"^fetch":{group:"fetch"},"^restore":{group:"restore"},"^load":{group:"load"}}},"^type$":!1,"^files$":!1};Ke("SET_ATTRIBUTE_TO_OPTION_MAP",i);let a={...t},n=Ld(e.nodeName==="FIELDSET"?e.querySelector("input[type=file]"):e,i);Object.keys(n).forEach(o=>{ce(n[o])?(ce(a[o])||(a[o]={}),Object.assign(a[o],n[o])):a[o]=n[o]}),a.files=(t.files||[]).concat(Array.from(e.querySelectorAll("input:not([type=file])")).map(o=>({source:o.value,options:{type:o.dataset.type}})));let r=jn(a);return e.files&&Array.from(e.files).forEach(o=>{r.addFile(o)}),r.replaceElement(e),r},Od=(...e)=>Uo(e[0])?Md(...e):jn(...e),xd=["fire","_read","_write"],cn=e=>{let t={};return En(e,t,xd),t},Dd=(e,t)=>e.replace(/(?:{([a-zA-Z]+)})/g,(i,a)=>t[a]),Pd=e=>{let t=new Blob(["(",e.toString(),")()"],{type:"application/javascript"}),i=URL.createObjectURL(t),a=new Worker(i);return{transfer:(n,r)=>{},post:(n,r,o)=>{let l=ki();a.onmessage=s=>{s.data.id===l&&r(s.data.message)},a.postMessage({id:l,message:n},o)},terminate:()=>{a.terminate(),URL.revokeObjectURL(i)}}},Fd=e=>new Promise((t,i)=>{let a=new Image;a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Zn=(e,t)=>{let i=e.slice(0,e.size,e.type);return i.lastModifiedDate=e.lastModifiedDate,i.name=t,i},Cd=e=>Zn(e,e.name),dn=[],zd=e=>{if(dn.includes(e))return;dn.push(e);let t=e({addFilter:Cl,utils:{Type:M,forin:te,isString:pe,isFile:ht,toNaturalFileSize:On,replaceInString:Dd,getExtensionFromFilename:si,getFilenameWithoutExtension:An,guesstimateMimeType:Un,getFileFromBlob:ut,getFilenameFromURL:xt,createRoute:me,createWorker:Pd,createView:re,createItemAPI:ge,loadImage:Fd,copyFile:Cd,renameFile:Zn,createBlob:Sn,applyFilterChain:Le,text:ae,getNumericAspectRatioFromString:bn},views:{fileActionButton:Mn}});zl(t.options)},Nd=()=>Object.prototype.toString.call(window.operamini)==="[object OperaMini]",Bd=()=>"Promise"in window,Gd=()=>"slice"in Blob.prototype,Vd=()=>"URL"in window&&"createObjectURL"in window.URL,Ud=()=>"visibilityState"in document,kd=()=>"performance"in window,Hd=()=>"supports"in(window.CSS||{}),Wd=()=>/MSIE|Trident/.test(window.navigator.userAgent),zi=(()=>{let e=un()&&!Nd()&&Ud()&&Bd()&&Gd()&&Vd()&&kd()&&(Hd()||Wd());return()=>e})(),Ve={apps:[]},Yd="filepond",Je=()=>{},Kn={},pt={},Dt={},Ni={},ct=Je,dt=Je,Bi=Je,Gi=Je,_e=Je,Vi=Je,Ot=Je;if(zi()){fl(()=>{Ve.apps.forEach(i=>i._read())},i=>{Ve.apps.forEach(a=>a._write(i))});let e=()=>{document.dispatchEvent(new CustomEvent("FilePond:loaded",{detail:{supported:zi,create:ct,destroy:dt,parse:Bi,find:Gi,registerPlugin:_e,setOptions:Ot}})),document.removeEventListener("DOMContentLoaded",e)};document.readyState!=="loading"?setTimeout(()=>e(),0):document.addEventListener("DOMContentLoaded",e);let t=()=>te(ti(),(i,a)=>{Ni[i]=a[1]});Kn={..._n},Dt={...se},pt={...k},Ni={},t(),ct=(...i)=>{let a=Od(...i);return a.on("destroy",dt),Ve.apps.push(a),cn(a)},dt=i=>{let a=Ve.apps.findIndex(n=>n.isAttachedTo(i));return a>=0?(Ve.apps.splice(a,1)[0].restoreElement(),!0):!1},Bi=i=>Array.from(i.querySelectorAll(`.${Yd}`)).filter(r=>!Ve.apps.find(o=>o.isAttachedTo(r))).map(r=>ct(r)),Gi=i=>{let a=Ve.apps.find(n=>n.isAttachedTo(i));return a?cn(a):null},_e=(...i)=>{i.forEach(zd),t()},Vi=()=>{let i={};return te(ti(),(a,n)=>{i[a]=n[0]}),i},Ot=i=>(ce(i)&&(Ve.apps.forEach(a=>{a.setOptions(i)}),Nl(i)),Vi())}function Jn(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,a)}return i}function mr(e){for(var t=1;te.length)&&(t=e.length);for(var i=0,a=new Array(t);i
',cu=Number.isNaN||Pe.isNaN;function Y(e){return typeof e=="number"&&!cu(e)}var hr=function(t){return t>0&&t<1/0};function ta(e){return typeof e>"u"}function it(e){return aa(e)==="object"&&e!==null}var du=Object.prototype.hasOwnProperty;function gt(e){if(!it(e))return!1;try{var t=e.constructor,i=t.prototype;return t&&i&&du.call(i,"isPrototypeOf")}catch{return!1}}function Ee(e){return typeof e=="function"}var uu=Array.prototype.slice;function wr(e){return Array.from?Array.from(e):uu.call(e)}function oe(e,t){return e&&Ee(t)&&(Array.isArray(e)||Y(e.length)?wr(e).forEach(function(i,a){t.call(e,i,a,e)}):it(e)&&Object.keys(e).forEach(function(i){t.call(e,e[i],i,e)})),e}var K=Object.assign||function(t){for(var i=arguments.length,a=new Array(i>1?i-1:0),n=1;n0&&a.forEach(function(r){it(r)&&Object.keys(r).forEach(function(o){t[o]=r[o]})}),t},hu=/\.\d*(?:0|9){12}\d*$/;function Tt(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return hu.test(e)?Math.round(e*t)/t:e}var fu=/^width|height|left|top|marginLeft|marginTop$/;function He(e,t){var i=e.style;oe(t,function(a,n){fu.test(n)&&Y(a)&&(a="".concat(a,"px")),i[n]=a})}function pu(e,t){return e.classList?e.classList.contains(t):e.className.indexOf(t)>-1}function de(e,t){if(t){if(Y(e.length)){oe(e,function(a){de(a,t)});return}if(e.classList){e.classList.add(t);return}var i=e.className.trim();i?i.indexOf(t)<0&&(e.className="".concat(i," ").concat(t)):e.className=t}}function De(e,t){if(t){if(Y(e.length)){oe(e,function(i){De(i,t)});return}if(e.classList){e.classList.remove(t);return}e.className.indexOf(t)>=0&&(e.className=e.className.replace(t,""))}}function Et(e,t,i){if(t){if(Y(e.length)){oe(e,function(a){Et(a,t,i)});return}i?de(e,t):De(e,t)}}var mu=/([a-z\d])([A-Z])/g;function Ea(e){return e.replace(mu,"$1-$2").toLowerCase()}function ha(e,t){return it(e[t])?e[t]:e.dataset?e.dataset[t]:e.getAttribute("data-".concat(Ea(t)))}function Gt(e,t,i){it(i)?e[t]=i:e.dataset?e.dataset[t]=i:e.setAttribute("data-".concat(Ea(t)),i)}function gu(e,t){if(it(e[t]))try{delete e[t]}catch{e[t]=void 0}else if(e.dataset)try{delete e.dataset[t]}catch{e.dataset[t]=void 0}else e.removeAttribute("data-".concat(Ea(t)))}var vr=/\s\s*/,Ar=function(){var e=!1;if(pi){var t=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return e=!0,t},set:function(r){t=r}});Pe.addEventListener("test",i,a),Pe.removeEventListener("test",i,a)}return e}();function xe(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i;t.trim().split(vr).forEach(function(r){if(!Ar){var o=e.listeners;o&&o[r]&&o[r][i]&&(n=o[r][i],delete o[r][i],Object.keys(o[r]).length===0&&delete o[r],Object.keys(o).length===0&&delete e.listeners)}e.removeEventListener(r,n,a)})}function we(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i;t.trim().split(vr).forEach(function(r){if(a.once&&!Ar){var o=e.listeners,l=o===void 0?{}:o;n=function(){delete l[r][i],e.removeEventListener(r,n,a);for(var u=arguments.length,c=new Array(u),d=0;dMath.abs(i)&&(i=h)})}),i}function hi(e,t){var i=e.pageX,a=e.pageY,n={endX:i,endY:a};return t?n:mr({startX:i,startY:a},n)}function Iu(e){var t=0,i=0,a=0;return oe(e,function(n){var r=n.startX,o=n.startY;t+=r,i+=o,a+=1}),t/=a,i/=a,{pageX:t,pageY:i}}function We(e){var t=e.aspectRatio,i=e.height,a=e.width,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",r=hr(a),o=hr(i);if(r&&o){var l=i*t;n==="contain"&&l>a||n==="cover"&&l90?{width:s,height:l}:{width:l,height:s}}function _u(e,t,i,a){var n=t.aspectRatio,r=t.naturalWidth,o=t.naturalHeight,l=t.rotate,s=l===void 0?0:l,u=t.scaleX,c=u===void 0?1:u,d=t.scaleY,h=d===void 0?1:d,f=i.aspectRatio,p=i.naturalWidth,m=i.naturalHeight,g=a.fillColor,b=g===void 0?"transparent":g,E=a.imageSmoothingEnabled,I=E===void 0?!0:E,_=a.imageSmoothingQuality,y=_===void 0?"low":_,T=a.maxWidth,v=T===void 0?1/0:T,R=a.maxHeight,S=R===void 0?1/0:R,D=a.minWidth,x=D===void 0?0:D,O=a.minHeight,z=O===void 0?0:O,A=document.createElement("canvas"),F=A.getContext("2d"),w=We({aspectRatio:f,width:v,height:S}),L=We({aspectRatio:f,width:x,height:z},"cover"),C=Math.min(w.width,Math.max(L.width,p)),P=Math.min(w.height,Math.max(L.height,m)),G=We({aspectRatio:n,width:v,height:S}),B=We({aspectRatio:n,width:x,height:z},"cover"),X=Math.min(G.width,Math.max(B.width,r)),q=Math.min(G.height,Math.max(B.height,o)),j=[-X/2,-q/2,X,q];return A.width=Tt(C),A.height=Tt(P),F.fillStyle=b,F.fillRect(0,0,C,P),F.save(),F.translate(C/2,P/2),F.rotate(s*Math.PI/180),F.scale(c,h),F.imageSmoothingEnabled=I,F.imageSmoothingQuality=y,F.drawImage.apply(F,[e].concat(gr(j.map(function(ue){return Math.floor(Tt(ue))})))),F.restore(),A}var Mr=String.fromCharCode;function Ru(e,t,i){var a="";i+=t;for(var n=t;n0;)i.push(Mr.apply(null,wr(n.subarray(0,a)))),n=n.subarray(a);return"data:".concat(t,";base64,").concat(btoa(i.join("")))}function vu(e){var t=new DataView(e),i;try{var a,n,r;if(t.getUint8(0)===255&&t.getUint8(1)===216)for(var o=t.byteLength,l=2;l+1=8&&(r=u+d)}}}if(r){var h=t.getUint16(r,a),f,p;for(p=0;p=0?r:yr),height:Math.max(a.offsetHeight,o>=0?o:Sr)};this.containerData=l,He(n,{width:l.width,height:l.height}),de(t,Te),De(n,Te)},initCanvas:function(){var t=this.containerData,i=this.imageData,a=this.options.viewMode,n=Math.abs(i.rotate)%180===90,r=n?i.naturalHeight:i.naturalWidth,o=n?i.naturalWidth:i.naturalHeight,l=r/o,s=t.width,u=t.height;t.height*l>t.width?a===3?s=t.height*l:u=t.width/l:a===3?u=t.width/l:s=t.height*l;var c={aspectRatio:l,naturalWidth:r,naturalHeight:o,width:s,height:u};this.canvasData=c,this.limited=a===1||a===2,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=K({},c)},limitCanvas:function(t,i){var a=this.options,n=this.containerData,r=this.canvasData,o=this.cropBoxData,l=a.viewMode,s=r.aspectRatio,u=this.cropped&&o;if(t){var c=Number(a.minCanvasWidth)||0,d=Number(a.minCanvasHeight)||0;l>1?(c=Math.max(c,n.width),d=Math.max(d,n.height),l===3&&(d*s>c?c=d*s:d=c/s)):l>0&&(c?c=Math.max(c,u?o.width:0):d?d=Math.max(d,u?o.height:0):u&&(c=o.width,d=o.height,d*s>c?c=d*s:d=c/s));var h=We({aspectRatio:s,width:c,height:d});c=h.width,d=h.height,r.minWidth=c,r.minHeight=d,r.maxWidth=1/0,r.maxHeight=1/0}if(i)if(l>(u?0:1)){var f=n.width-r.width,p=n.height-r.height;r.minLeft=Math.min(0,f),r.minTop=Math.min(0,p),r.maxLeft=Math.max(0,f),r.maxTop=Math.max(0,p),u&&this.limited&&(r.minLeft=Math.min(o.left,o.left+(o.width-r.width)),r.minTop=Math.min(o.top,o.top+(o.height-r.height)),r.maxLeft=o.left,r.maxTop=o.top,l===2&&(r.width>=n.width&&(r.minLeft=Math.min(0,f),r.maxLeft=Math.max(0,f)),r.height>=n.height&&(r.minTop=Math.min(0,p),r.maxTop=Math.max(0,p))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=n.width,r.maxTop=n.height},renderCanvas:function(t,i){var a=this.canvasData,n=this.imageData;if(i){var r=bu({width:n.naturalWidth*Math.abs(n.scaleX||1),height:n.naturalHeight*Math.abs(n.scaleY||1),degree:n.rotate||0}),o=r.width,l=r.height,s=a.width*(o/a.naturalWidth),u=a.height*(l/a.naturalHeight);a.left-=(s-a.width)/2,a.top-=(u-a.height)/2,a.width=s,a.height=u,a.aspectRatio=o/l,a.naturalWidth=o,a.naturalHeight=l,this.limitCanvas(!0,!1)}(a.width>a.maxWidth||a.widtha.maxHeight||a.heighti.width?r.height=r.width/a:r.width=r.height*a),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*n),r.height=Math.max(r.minHeight,r.height*n),r.left=i.left+(i.width-r.width)/2,r.top=i.top+(i.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=K({},r)},limitCropBox:function(t,i){var a=this.options,n=this.containerData,r=this.canvasData,o=this.cropBoxData,l=this.limited,s=a.aspectRatio;if(t){var u=Number(a.minCropBoxWidth)||0,c=Number(a.minCropBoxHeight)||0,d=l?Math.min(n.width,r.width,r.width+r.left,n.width-r.left):n.width,h=l?Math.min(n.height,r.height,r.height+r.top,n.height-r.top):n.height;u=Math.min(u,n.width),c=Math.min(c,n.height),s&&(u&&c?c*s>u?c=u/s:u=c*s:u?c=u/s:c&&(u=c*s),h*s>d?h=d/s:d=h*s),o.minWidth=Math.min(u,d),o.minHeight=Math.min(c,h),o.maxWidth=d,o.maxHeight=h}i&&(l?(o.minLeft=Math.max(0,r.left),o.minTop=Math.max(0,r.top),o.maxLeft=Math.min(n.width,r.left+r.width)-o.width,o.maxTop=Math.min(n.height,r.top+r.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=n.width-o.width,o.maxTop=n.height-o.height))},renderCropBox:function(){var t=this.options,i=this.containerData,a=this.cropBoxData;(a.width>a.maxWidth||a.widtha.maxHeight||a.height=i.width&&a.height>=i.height?Ir:ma),He(this.cropBox,K({width:a.width,height:a.height},Nt({translateX:a.left,translateY:a.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),It(this.element,la,this.getData())}},Mu={initPreview:function(){var t=this.element,i=this.crossOrigin,a=this.options.preview,n=i?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",o=document.createElement("img");if(i&&(o.crossOrigin=i),o.src=n,o.alt=r,this.viewBox.appendChild(o),this.viewBoxImage=o,!!a){var l=a;typeof a=="string"?l=t.ownerDocument.querySelectorAll(a):a.querySelector&&(l=[a]),this.previews=l,oe(l,function(s){var u=document.createElement("img");Gt(s,ui,{width:s.offsetWidth,height:s.offsetHeight,html:s.innerHTML}),i&&(u.crossOrigin=i),u.src=n,u.alt=r,u.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',s.innerHTML="",s.appendChild(u)})}},resetPreview:function(){oe(this.previews,function(t){var i=ha(t,ui);He(t,{width:i.width,height:i.height}),t.innerHTML=i.html,gu(t,ui)})},preview:function(){var t=this.imageData,i=this.canvasData,a=this.cropBoxData,n=a.width,r=a.height,o=t.width,l=t.height,s=a.left-i.left-t.left,u=a.top-i.top-t.top;!this.cropped||this.disabled||(He(this.viewBoxImage,K({width:o,height:l},Nt(K({translateX:-s,translateY:-u},t)))),oe(this.previews,function(c){var d=ha(c,ui),h=d.width,f=d.height,p=h,m=f,g=1;n&&(g=h/n,m=r*g),r&&m>f&&(g=f/r,p=n*g,m=f),He(c,{width:p,height:m}),He(c.getElementsByTagName("img")[0],K({width:o*g,height:l*g},Nt(K({translateX:-s*g,translateY:-u*g},t))))}))}},Ou={bind:function(){var t=this.element,i=this.options,a=this.cropper;Ee(i.cropstart)&&we(t,da,i.cropstart),Ee(i.cropmove)&&we(t,ca,i.cropmove),Ee(i.cropend)&&we(t,sa,i.cropend),Ee(i.crop)&&we(t,la,i.crop),Ee(i.zoom)&&we(t,ua,i.zoom),we(a,nr,this.onCropStart=this.cropStart.bind(this)),i.zoomable&&i.zoomOnWheel&&we(a,cr,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),i.toggleDragModeOnDblclick&&we(a,ar,this.onDblclick=this.dblclick.bind(this)),we(t.ownerDocument,rr,this.onCropMove=this.cropMove.bind(this)),we(t.ownerDocument,or,this.onCropEnd=this.cropEnd.bind(this)),i.responsive&&we(window,sr,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,i=this.options,a=this.cropper;Ee(i.cropstart)&&xe(t,da,i.cropstart),Ee(i.cropmove)&&xe(t,ca,i.cropmove),Ee(i.cropend)&&xe(t,sa,i.cropend),Ee(i.crop)&&xe(t,la,i.crop),Ee(i.zoom)&&xe(t,ua,i.zoom),xe(a,nr,this.onCropStart),i.zoomable&&i.zoomOnWheel&&xe(a,cr,this.onWheel,{passive:!1,capture:!0}),i.toggleDragModeOnDblclick&&xe(a,ar,this.onDblclick),xe(t.ownerDocument,rr,this.onCropMove),xe(t.ownerDocument,or,this.onCropEnd),i.responsive&&xe(window,sr,this.onResize)}},xu={resize:function(){if(!this.disabled){var t=this.options,i=this.container,a=this.containerData,n=i.offsetWidth/a.width,r=i.offsetHeight/a.height,o=Math.abs(n-1)>Math.abs(r-1)?n:r;if(o!==1){var l,s;t.restore&&(l=this.getCanvasData(),s=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(oe(l,function(u,c){l[c]=u*o})),this.setCropBoxData(oe(s,function(u,c){s[c]=u*o})))}}},dblclick:function(){this.disabled||this.options.dragMode===Rr||this.setDragMode(pu(this.dragBox,ra)?_r:ga)},wheel:function(t){var i=this,a=Number(this.options.wheelZoomRatio)||.1,n=1;this.disabled||(t.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){i.wheeling=!1},50),t.deltaY?n=t.deltaY>0?1:-1:t.wheelDelta?n=-t.wheelDelta/120:t.detail&&(n=t.detail>0?1:-1),this.zoom(-n*a,t)))},cropStart:function(t){var i=t.buttons,a=t.button;if(!(this.disabled||(t.type==="mousedown"||t.type==="pointerdown"&&t.pointerType==="mouse")&&(Y(i)&&i!==1||Y(a)&&a!==0||t.ctrlKey))){var n=this.options,r=this.pointers,o;t.changedTouches?oe(t.changedTouches,function(l){r[l.identifier]=hi(l)}):r[t.pointerId||0]=hi(t),Object.keys(r).length>1&&n.zoomable&&n.zoomOnTouch?o=br:o=ha(t.target,Bt),nu.test(o)&&It(this.element,da,{originalEvent:t,action:o})!==!1&&(t.preventDefault(),this.action=o,this.cropping=!1,o===Tr&&(this.cropping=!0,de(this.dragBox,fi)))}},cropMove:function(t){var i=this.action;if(!(this.disabled||!i)){var a=this.pointers;t.preventDefault(),It(this.element,ca,{originalEvent:t,action:i})!==!1&&(t.changedTouches?oe(t.changedTouches,function(n){K(a[n.identifier]||{},hi(n,!0))}):K(a[t.pointerId||0]||{},hi(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var i=this.action,a=this.pointers;t.changedTouches?oe(t.changedTouches,function(n){delete a[n.identifier]}):delete a[t.pointerId||0],i&&(t.preventDefault(),Object.keys(a).length||(this.action=""),this.cropping&&(this.cropping=!1,Et(this.dragBox,fi,this.cropped&&this.options.modal)),It(this.element,sa,{originalEvent:t,action:i}))}}},Du={change:function(t){var i=this.options,a=this.canvasData,n=this.containerData,r=this.cropBoxData,o=this.pointers,l=this.action,s=i.aspectRatio,u=r.left,c=r.top,d=r.width,h=r.height,f=u+d,p=c+h,m=0,g=0,b=n.width,E=n.height,I=!0,_;!s&&t.shiftKey&&(s=d&&h?d/h:1),this.limited&&(m=r.minLeft,g=r.minTop,b=m+Math.min(n.width,a.width,a.left+a.width),E=g+Math.min(n.height,a.height,a.top+a.height));var y=o[Object.keys(o)[0]],T={x:y.endX-y.startX,y:y.endY-y.startY},v=function(S){switch(S){case et:f+T.x>b&&(T.x=b-f);break;case tt:u+T.xE&&(T.y=E-p);break}};switch(l){case ma:u+=T.x,c+=T.y;break;case et:if(T.x>=0&&(f>=b||s&&(c<=g||p>=E))){I=!1;break}v(et),d+=T.x,d<0&&(l=tt,d=-d,u-=d),s&&(h=d/s,c+=(r.height-h)/2);break;case ke:if(T.y<=0&&(c<=g||s&&(u<=m||f>=b))){I=!1;break}v(ke),h-=T.y,c+=T.y,h<0&&(l=mt,h=-h,c-=h),s&&(d=h*s,u+=(r.width-d)/2);break;case tt:if(T.x<=0&&(u<=m||s&&(c<=g||p>=E))){I=!1;break}v(tt),d-=T.x,u+=T.x,d<0&&(l=et,d=-d,u-=d),s&&(h=d/s,c+=(r.height-h)/2);break;case mt:if(T.y>=0&&(p>=E||s&&(u<=m||f>=b))){I=!1;break}v(mt),h+=T.y,h<0&&(l=ke,h=-h,c-=h),s&&(d=h*s,u+=(r.width-d)/2);break;case Pt:if(s){if(T.y<=0&&(c<=g||f>=b)){I=!1;break}v(ke),h-=T.y,c+=T.y,d=h*s}else v(ke),v(et),T.x>=0?fg&&(h-=T.y,c+=T.y):(h-=T.y,c+=T.y);d<0&&h<0?(l=zt,h=-h,d=-d,c-=h,u-=d):d<0?(l=Ft,d=-d,u-=d):h<0&&(l=Ct,h=-h,c-=h);break;case Ft:if(s){if(T.y<=0&&(c<=g||u<=m)){I=!1;break}v(ke),h-=T.y,c+=T.y,d=h*s,u+=r.width-d}else v(ke),v(tt),T.x<=0?u>m?(d-=T.x,u+=T.x):T.y<=0&&c<=g&&(I=!1):(d-=T.x,u+=T.x),T.y<=0?c>g&&(h-=T.y,c+=T.y):(h-=T.y,c+=T.y);d<0&&h<0?(l=Ct,h=-h,d=-d,c-=h,u-=d):d<0?(l=Pt,d=-d,u-=d):h<0&&(l=zt,h=-h,c-=h);break;case zt:if(s){if(T.x<=0&&(u<=m||p>=E)){I=!1;break}v(tt),d-=T.x,u+=T.x,h=d/s}else v(mt),v(tt),T.x<=0?u>m?(d-=T.x,u+=T.x):T.y>=0&&p>=E&&(I=!1):(d-=T.x,u+=T.x),T.y>=0?p=0&&(f>=b||p>=E)){I=!1;break}v(et),d+=T.x,h=d/s}else v(mt),v(et),T.x>=0?f=0&&p>=E&&(I=!1):d+=T.x,T.y>=0?p0?l=T.y>0?Ct:Pt:T.x<0&&(u-=d,l=T.y>0?zt:Ft),T.y<0&&(c-=h),this.cropped||(De(this.cropBox,Te),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}I&&(r.width=d,r.height=h,r.left=u,r.top=c,this.action=l,this.renderCropBox()),oe(o,function(R){R.startX=R.endX,R.startY=R.endY})}},Pu={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&de(this.dragBox,fi),De(this.cropBox,Te),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=K({},this.initialImageData),this.canvasData=K({},this.initialCanvasData),this.cropBoxData=K({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(K(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),De(this.dragBox,fi),de(this.cropBox,Te)),this},replace:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&t&&(this.isImg&&(this.element.src=t),i?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,oe(this.previews,function(a){a.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,De(this.cropper,tr)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,de(this.cropper,tr)),this},destroy:function(){var t=this.element;return t[Z]?(t[Z]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.canvasData,n=a.left,r=a.top;return this.moveTo(ta(t)?t:n+Number(t),ta(i)?i:r+Number(i))},moveTo:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.canvasData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.movable&&(Y(t)&&(a.left=t,n=!0),Y(i)&&(a.top=i,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,i){var a=this.canvasData;return t=Number(t),t<0?t=1/(1-t):t=1+t,this.zoomTo(a.width*t/a.naturalWidth,null,i)},zoomTo:function(t,i,a){var n=this.options,r=this.canvasData,o=r.width,l=r.height,s=r.naturalWidth,u=r.naturalHeight;if(t=Number(t),t>=0&&this.ready&&!this.disabled&&n.zoomable){var c=s*t,d=u*t;if(It(this.element,ua,{ratio:t,oldRatio:o/s,originalEvent:a})===!1)return this;if(a){var h=this.pointers,f=Lr(this.cropper),p=h&&Object.keys(h).length?Iu(h):{pageX:a.pageX,pageY:a.pageY};r.left-=(c-o)*((p.pageX-f.left-r.left)/o),r.top-=(d-l)*((p.pageY-f.top-r.top)/l)}else gt(i)&&Y(i.x)&&Y(i.y)?(r.left-=(c-o)*((i.x-r.left)/o),r.top-=(d-l)*((i.y-r.top)/l)):(r.left-=(c-o)/2,r.top-=(d-l)/2);r.width=c,r.height=d,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),Y(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var i=this.imageData.scaleY;return this.scale(t,Y(i)?i:1)},scaleY:function(t){var i=this.imageData.scaleX;return this.scale(Y(i)?i:1,t)},scale:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.imageData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.scalable&&(Y(t)&&(a.scaleX=t,n=!0),Y(i)&&(a.scaleY=i,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,i=this.options,a=this.imageData,n=this.canvasData,r=this.cropBoxData,o;if(this.ready&&this.cropped){o={x:r.left-n.left,y:r.top-n.top,width:r.width,height:r.height};var l=a.width/a.naturalWidth;if(oe(o,function(c,d){o[d]=c/l}),t){var s=Math.round(o.y+o.height),u=Math.round(o.x+o.width);o.x=Math.round(o.x),o.y=Math.round(o.y),o.width=u-o.x,o.height=s-o.y}}else o={x:0,y:0,width:0,height:0};return i.rotatable&&(o.rotate=a.rotate||0),i.scalable&&(o.scaleX=a.scaleX||1,o.scaleY=a.scaleY||1),o},setData:function(t){var i=this.options,a=this.imageData,n=this.canvasData,r={};if(this.ready&&!this.disabled&>(t)){var o=!1;i.rotatable&&Y(t.rotate)&&t.rotate!==a.rotate&&(a.rotate=t.rotate,o=!0),i.scalable&&(Y(t.scaleX)&&t.scaleX!==a.scaleX&&(a.scaleX=t.scaleX,o=!0),Y(t.scaleY)&&t.scaleY!==a.scaleY&&(a.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var l=a.width/a.naturalWidth;Y(t.x)&&(r.left=t.x*l+n.left),Y(t.y)&&(r.top=t.y*l+n.top),Y(t.width)&&(r.width=t.width*l),Y(t.height)&&(r.height=t.height*l),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?K({},this.containerData):{}},getImageData:function(){return this.sized?K({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,i={};return this.ready&&oe(["left","top","width","height","naturalWidth","naturalHeight"],function(a){i[a]=t[a]}),i},setCanvasData:function(t){var i=this.canvasData,a=i.aspectRatio;return this.ready&&!this.disabled&>(t)&&(Y(t.left)&&(i.left=t.left),Y(t.top)&&(i.top=t.top),Y(t.width)?(i.width=t.width,i.height=t.width/a):Y(t.height)&&(i.height=t.height,i.width=t.height*a),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,i;return this.ready&&this.cropped&&(i={left:t.left,top:t.top,width:t.width,height:t.height}),i||{}},setCropBoxData:function(t){var i=this.cropBoxData,a=this.options.aspectRatio,n,r;return this.ready&&this.cropped&&!this.disabled&>(t)&&(Y(t.left)&&(i.left=t.left),Y(t.top)&&(i.top=t.top),Y(t.width)&&t.width!==i.width&&(n=!0,i.width=t.width),Y(t.height)&&t.height!==i.height&&(r=!0,i.height=t.height),a&&(n?i.height=i.width/a:r&&(i.width=i.height*a)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var i=this.canvasData,a=_u(this.image,this.imageData,i,t);if(!this.cropped)return a;var n=this.getData(t.rounded),r=n.x,o=n.y,l=n.width,s=n.height,u=a.width/Math.floor(i.naturalWidth);u!==1&&(r*=u,o*=u,l*=u,s*=u);var c=l/s,d=We({aspectRatio:c,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),h=We({aspectRatio:c,width:t.minWidth||0,height:t.minHeight||0},"cover"),f=We({aspectRatio:c,width:t.width||(u!==1?a.width:l),height:t.height||(u!==1?a.height:s)}),p=f.width,m=f.height;p=Math.min(d.width,Math.max(h.width,p)),m=Math.min(d.height,Math.max(h.height,m));var g=document.createElement("canvas"),b=g.getContext("2d");g.width=Tt(p),g.height=Tt(m),b.fillStyle=t.fillColor||"transparent",b.fillRect(0,0,p,m);var E=t.imageSmoothingEnabled,I=E===void 0?!0:E,_=t.imageSmoothingQuality;b.imageSmoothingEnabled=I,_&&(b.imageSmoothingQuality=_);var y=a.width,T=a.height,v=r,R=o,S,D,x,O,z,A;v<=-l||v>y?(v=0,S=0,x=0,z=0):v<=0?(x=-v,v=0,S=Math.min(y,l+v),z=S):v<=y&&(x=0,S=Math.min(l,y-v),z=S),S<=0||R<=-s||R>T?(R=0,D=0,O=0,A=0):R<=0?(O=-R,R=0,D=Math.min(T,s+R),A=D):R<=T&&(O=0,D=Math.min(s,T-R),A=D);var F=[v,R,S,D];if(z>0&&A>0){var w=p/l;F.push(x*w,O*w,z*w,A*w)}return b.drawImage.apply(b,[a].concat(gr(F.map(function(L){return Math.floor(Tt(L))})))),g},setAspectRatio:function(t){var i=this.options;return!this.disabled&&!ta(t)&&(i.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var i=this.options,a=this.dragBox,n=this.face;if(this.ready&&!this.disabled){var r=t===ga,o=i.movable&&t===_r;t=r||o?t:Rr,i.dragMode=t,Gt(a,Bt,t),Et(a,ra,r),Et(a,oa,o),i.cropBoxMovable||(Gt(n,Bt,t),Et(n,ra,r),Et(n,oa,o))}return this}},Fu=Pe.Cropper,Ta=function(){function e(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if($d(this,e),!t||!lu.test(t.tagName))throw new Error("The first argument is required and must be an or element.");this.element=t,this.options=K({},ur,gt(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return qd(e,[{key:"init",value:function(){var i=this.element,a=i.tagName.toLowerCase(),n;if(!i[Z]){if(i[Z]=this,a==="img"){if(this.isImg=!0,n=i.getAttribute("src")||"",this.originalUrl=n,!n)return;n=i.src}else a==="canvas"&&window.HTMLCanvasElement&&(n=i.toDataURL());this.load(n)}}},{key:"load",value:function(i){var a=this;if(i){this.url=i,this.imageData={};var n=this.element,r=this.options;if(!r.rotatable&&!r.scalable&&(r.checkOrientation=!1),!r.checkOrientation||!window.ArrayBuffer){this.clone();return}if(ru.test(i)){ou.test(i)?this.read(Su(i)):this.clone();return}var o=new XMLHttpRequest,l=this.clone.bind(this);this.reloading=!0,this.xhr=o,o.onabort=l,o.onerror=l,o.ontimeout=l,o.onprogress=function(){o.getResponseHeader("content-type")!==dr&&o.abort()},o.onload=function(){a.read(o.response)},o.onloadend=function(){a.reloading=!1,a.xhr=null},r.checkCrossOrigin&&fr(i)&&n.crossOrigin&&(i=pr(i)),o.open("GET",i,!0),o.responseType="arraybuffer",o.withCredentials=n.crossOrigin==="use-credentials",o.send()}}},{key:"read",value:function(i){var a=this.options,n=this.imageData,r=vu(i),o=0,l=1,s=1;if(r>1){this.url=wu(i,dr);var u=Au(r);o=u.rotate,l=u.scaleX,s=u.scaleY}a.rotatable&&(n.rotate=o),a.scalable&&(n.scaleX=l,n.scaleY=s),this.clone()}},{key:"clone",value:function(){var i=this.element,a=this.url,n=i.crossOrigin,r=a;this.options.checkCrossOrigin&&fr(a)&&(n||(n="anonymous"),r=pr(a)),this.crossOrigin=n,this.crossOriginUrl=r;var o=document.createElement("img");n&&(o.crossOrigin=n),o.src=r||a,o.alt=i.alt||"The image to crop",this.image=o,o.onload=this.start.bind(this),o.onerror=this.stop.bind(this),de(o,ir),i.parentNode.insertBefore(o,i.nextSibling)}},{key:"start",value:function(){var i=this,a=this.image;a.onload=null,a.onerror=null,this.sizing=!0;var n=Pe.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(Pe.navigator.userAgent),r=function(u,c){K(i.imageData,{naturalWidth:u,naturalHeight:c,aspectRatio:u/c}),i.initialImageData=K({},i.imageData),i.sizing=!1,i.sized=!0,i.build()};if(a.naturalWidth&&!n){r(a.naturalWidth,a.naturalHeight);return}var o=document.createElement("img"),l=document.body||document.documentElement;this.sizingImage=o,o.onload=function(){r(o.width,o.height),n||l.removeChild(o)},o.src=a.src,n||(o.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",l.appendChild(o))}},{key:"stop",value:function(){var i=this.image;i.onload=null,i.onerror=null,i.parentNode.removeChild(i),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var i=this.element,a=this.options,n=this.image,r=i.parentNode,o=document.createElement("div");o.innerHTML=su;var l=o.querySelector(".".concat(Z,"-container")),s=l.querySelector(".".concat(Z,"-canvas")),u=l.querySelector(".".concat(Z,"-drag-box")),c=l.querySelector(".".concat(Z,"-crop-box")),d=c.querySelector(".".concat(Z,"-face"));this.container=r,this.cropper=l,this.canvas=s,this.dragBox=u,this.cropBox=c,this.viewBox=l.querySelector(".".concat(Z,"-view-box")),this.face=d,s.appendChild(n),de(i,Te),r.insertBefore(l,i.nextSibling),De(n,ir),this.initPreview(),this.bind(),a.initialAspectRatio=Math.max(0,a.initialAspectRatio)||NaN,a.aspectRatio=Math.max(0,a.aspectRatio)||NaN,a.viewMode=Math.max(0,Math.min(3,Math.round(a.viewMode)))||0,de(c,Te),a.guides||de(c.getElementsByClassName("".concat(Z,"-dashed")),Te),a.center||de(c.getElementsByClassName("".concat(Z,"-center")),Te),a.background&&de(l,"".concat(Z,"-bg")),a.highlight||de(d,eu),a.cropBoxMovable&&(de(d,oa),Gt(d,Bt,ma)),a.cropBoxResizable||(de(c.getElementsByClassName("".concat(Z,"-line")),Te),de(c.getElementsByClassName("".concat(Z,"-point")),Te)),this.render(),this.ready=!0,this.setDragMode(a.dragMode),a.autoCrop&&this.crop(),this.setData(a.data),Ee(a.ready)&&we(i,lr,a.ready,{once:!0}),It(i,lr)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var i=this.cropper.parentNode;i&&i.removeChild(this.cropper),De(this.element,Te)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=Fu,e}},{key:"setDefaults",value:function(i){K(ur,gt(i)&&i)}}]),e}();K(Ta.prototype,Lu,Mu,Ou,xu,Du,Pu);var Or=({addFilter:e,utils:t})=>{let{Type:i,replaceInString:a,toNaturalFileSize:n}=t;return e("ALLOW_HOPPER_ITEM",(r,{query:o})=>{if(!o("GET_ALLOW_FILE_SIZE_VALIDATION"))return!0;let l=o("GET_MAX_FILE_SIZE");if(l!==null&&r.size>l)return!1;let s=o("GET_MIN_FILE_SIZE");return!(s!==null&&r.sizenew Promise((l,s)=>{if(!o("GET_ALLOW_FILE_SIZE_VALIDATION"))return l(r);let u=o("GET_FILE_VALIDATE_SIZE_FILTER");if(u&&!u(r))return l(r);let c=o("GET_MAX_FILE_SIZE");if(c!==null&&r.size>c){s({status:{main:o("GET_LABEL_MAX_FILE_SIZE_EXCEEDED"),sub:a(o("GET_LABEL_MAX_FILE_SIZE"),{filesize:n(c,".",o("GET_FILE_SIZE_BASE"),o("GET_FILE_SIZE_LABELS",o))})}});return}let d=o("GET_MIN_FILE_SIZE");if(d!==null&&r.sizep+m.fileSize,0)>h){s({status:{main:o("GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED"),sub:a(o("GET_LABEL_MAX_TOTAL_FILE_SIZE"),{filesize:n(h,".",o("GET_FILE_SIZE_BASE"),o("GET_FILE_SIZE_LABELS",o))})}});return}l(r)})),{options:{allowFileSizeValidation:[!0,i.BOOLEAN],maxFileSize:[null,i.INT],minFileSize:[null,i.INT],maxTotalFileSize:[null,i.INT],fileValidateSizeFilter:[null,i.FUNCTION],labelMinFileSizeExceeded:["File is too small",i.STRING],labelMinFileSize:["Minimum file size is {filesize}",i.STRING],labelMaxFileSizeExceeded:["File is too large",i.STRING],labelMaxFileSize:["Maximum file size is {filesize}",i.STRING],labelMaxTotalFileSizeExceeded:["Maximum total size exceeded",i.STRING],labelMaxTotalFileSize:["Maximum total file size is {filesize}",i.STRING]}}},Cu=typeof window<"u"&&typeof window.document<"u";Cu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Or}));var xr=Or;var Dr=({addFilter:e,utils:t})=>{let{Type:i,isString:a,replaceInString:n,guesstimateMimeType:r,getExtensionFromFilename:o,getFilenameFromURL:l}=t,s=(f,p)=>{let m=(/^[^/]+/.exec(f)||[]).pop(),g=p.slice(0,-2);return m===g},u=(f,p)=>f.some(m=>/\*$/.test(m)?s(p,m):m===p),c=f=>{let p="";if(a(f)){let m=l(f),g=o(m);g&&(p=r(g))}else p=f.type;return p},d=(f,p,m)=>{if(p.length===0)return!0;let g=c(f);return m?new Promise((b,E)=>{m(f,g).then(I=>{u(p,I)?b():E()}).catch(E)}):u(p,g)},h=f=>p=>f[p]===null?!1:f[p]||p;return e("SET_ATTRIBUTE_TO_OPTION_MAP",f=>Object.assign(f,{accept:"acceptedFileTypes"})),e("ALLOW_HOPPER_ITEM",(f,{query:p})=>p("GET_ALLOW_FILE_TYPE_VALIDATION")?d(f,p("GET_ACCEPTED_FILE_TYPES")):!0),e("LOAD_FILE",(f,{query:p})=>new Promise((m,g)=>{if(!p("GET_ALLOW_FILE_TYPE_VALIDATION")){m(f);return}let b=p("GET_ACCEPTED_FILE_TYPES"),E=p("GET_FILE_VALIDATE_TYPE_DETECT_TYPE"),I=d(f,b,E),_=()=>{let y=b.map(h(p("GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP"))).filter(v=>v!==!1),T=y.filter((v,R)=>y.indexOf(v)===R);g({status:{main:p("GET_LABEL_FILE_TYPE_NOT_ALLOWED"),sub:n(p("GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES"),{allTypes:T.join(", "),allButLastType:T.slice(0,-1).join(", "),lastType:T[T.length-1]})}})};if(typeof I=="boolean")return I?m(f):_();I.then(()=>{m(f)}).catch(_)})),{options:{allowFileTypeValidation:[!0,i.BOOLEAN],acceptedFileTypes:[[],i.ARRAY],labelFileTypeNotAllowed:["File is of invalid type",i.STRING],fileValidateTypeLabelExpectedTypes:["Expects {allButLastType} or {lastType}",i.STRING],fileValidateTypeLabelExpectedTypesMap:[{},i.OBJECT],fileValidateTypeDetectType:[null,i.FUNCTION]}}},zu=typeof window<"u"&&typeof window.document<"u";zu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Dr}));var Pr=Dr;var Fr=e=>/^image/.test(e.type),Cr=({addFilter:e,utils:t})=>{let{Type:i,isFile:a,getNumericAspectRatioFromString:n}=t,r=(u,c)=>!(!Fr(u.file)||!c("GET_ALLOW_IMAGE_CROP")),o=u=>typeof u=="object",l=u=>typeof u=="number",s=(u,c)=>u.setMetadata("crop",Object.assign({},u.getMetadata("crop"),c));return e("DID_CREATE_ITEM",(u,{query:c})=>{u.extend("setImageCrop",d=>{if(!(!r(u,c)||!o(center)))return u.setMetadata("crop",d),d}),u.extend("setImageCropCenter",d=>{if(!(!r(u,c)||!o(d)))return s(u,{center:d})}),u.extend("setImageCropZoom",d=>{if(!(!r(u,c)||!l(d)))return s(u,{zoom:Math.max(1,d)})}),u.extend("setImageCropRotation",d=>{if(!(!r(u,c)||!l(d)))return s(u,{rotation:d})}),u.extend("setImageCropFlip",d=>{if(!(!r(u,c)||!o(d)))return s(u,{flip:d})}),u.extend("setImageCropAspectRatio",d=>{if(!r(u,c)||typeof d>"u")return;let h=u.getMetadata("crop"),f=n(d),p={center:{x:.5,y:.5},flip:h?Object.assign({},h.flip):{horizontal:!1,vertical:!1},rotation:0,zoom:1,aspectRatio:f};return u.setMetadata("crop",p),p})}),e("DID_LOAD_ITEM",(u,{query:c})=>new Promise((d,h)=>{let f=u.file;if(!a(f)||!Fr(f)||!c("GET_ALLOW_IMAGE_CROP")||u.getMetadata("crop"))return d(u);let m=c("GET_IMAGE_CROP_ASPECT_RATIO");u.setMetadata("crop",{center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},rotation:0,zoom:1,aspectRatio:m?n(m):null}),d(u)})),{options:{allowImageCrop:[!0,i.BOOLEAN],imageCropAspectRatio:[null,i.STRING]}}},Nu=typeof window<"u"&&typeof window.document<"u";Nu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Cr}));var zr=Cr;var Ia=e=>/^image/.test(e.type),Nr=e=>{let{addFilter:t,utils:i,views:a}=e,{Type:n,createRoute:r,createItemAPI:o=c=>c}=i,{fileActionButton:l}=a;t("SHOULD_REMOVE_ON_REVERT",(c,{item:d,query:h})=>new Promise(f=>{let{file:p}=d,m=h("GET_ALLOW_IMAGE_EDIT")&&h("GET_IMAGE_EDIT_ALLOW_EDIT")&&Ia(p);f(!m)})),t("DID_LOAD_ITEM",(c,{query:d,dispatch:h})=>new Promise((f,p)=>{if(c.origin>1){f(c);return}let{file:m}=c;if(!d("GET_ALLOW_IMAGE_EDIT")||!d("GET_IMAGE_EDIT_INSTANT_EDIT")){f(c);return}if(!Ia(m)){f(c);return}let g=(E,I,_)=>y=>{s.shift(),y?I(E):_(E),h("KICK"),b()},b=()=>{if(!s.length)return;let{item:E,resolve:I,reject:_}=s[0];h("EDIT_ITEM",{id:E.id,handleEditorResponse:g(E,I,_)})};u({item:c,resolve:f,reject:p}),s.length===1&&b()})),t("DID_CREATE_ITEM",(c,{query:d,dispatch:h})=>{c.extend("edit",()=>{h("EDIT_ITEM",{id:c.id})})});let s=[],u=c=>(s.push(c),c);return t("CREATE_VIEW",c=>{let{is:d,view:h,query:f}=c;if(!f("GET_ALLOW_IMAGE_EDIT"))return;let p=f("GET_ALLOW_IMAGE_PREVIEW");if(!(d("file-info")&&!p||d("file")&&p))return;let g=f("GET_IMAGE_EDIT_EDITOR");if(!g)return;g.filepondCallbackBridge||(g.outputData=!0,g.outputFile=!1,g.filepondCallbackBridge={onconfirm:g.onconfirm||(()=>{}),oncancel:g.oncancel||(()=>{})});let b=({root:_,props:y,action:T})=>{let{id:v}=y,{handleEditorResponse:R}=T;g.cropAspectRatio=_.query("GET_IMAGE_CROP_ASPECT_RATIO")||g.cropAspectRatio,g.outputCanvasBackgroundColor=_.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR")||g.outputCanvasBackgroundColor;let S=_.query("GET_ITEM",v);if(!S)return;let D=S.file,x=S.getMetadata("crop"),O={center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},zoom:1,rotation:0,aspectRatio:null},z=S.getMetadata("resize"),A=S.getMetadata("filter")||null,F=S.getMetadata("filters")||null,w=S.getMetadata("colors")||null,L=S.getMetadata("markup")||null,C={crop:x||O,size:z?{upscale:z.upscale,mode:z.mode,width:z.size.width,height:z.size.height}:null,filter:F?F.id||F.matrix:_.query("GET_ALLOW_IMAGE_FILTER")&&_.query("GET_IMAGE_FILTER_COLOR_MATRIX")&&!w?A:null,color:w,markup:L};g.onconfirm=({data:P})=>{let{crop:G,size:B,filter:X,color:q,colorMatrix:j,markup:ue}=P,U={};if(G&&(U.crop=G),B){let W=(S.getMetadata("resize")||{}).size,$={width:B.width,height:B.height};!($.width&&$.height)&&W&&($.width=W.width,$.height=W.height),($.width||$.height)&&(U.resize={upscale:B.upscale,mode:B.mode,size:$})}ue&&(U.markup=ue),U.colors=q,U.filters=X,U.filter=j,S.setMetadata(U),g.filepondCallbackBridge.onconfirm(P,o(S)),R&&(g.onclose=()=>{R(!0),g.onclose=null})},g.oncancel=()=>{g.filepondCallbackBridge.oncancel(o(S)),R&&(g.onclose=()=>{R(!1),g.onclose=null})},g.open(D,C)},E=({root:_,props:y})=>{if(!f("GET_IMAGE_EDIT_ALLOW_EDIT"))return;let{id:T}=y,v=f("GET_ITEM",T);if(!v)return;let R=v.file;if(Ia(R))if(_.ref.handleEdit=S=>{S.stopPropagation(),_.dispatch("EDIT_ITEM",{id:T})},p){let S=h.createChildView(l,{label:"edit",icon:f("GET_IMAGE_EDIT_ICON_EDIT"),opacity:0});S.element.classList.add("filepond--action-edit-item"),S.element.dataset.align=f("GET_STYLE_IMAGE_EDIT_BUTTON_EDIT_ITEM_POSITION"),S.on("click",_.ref.handleEdit),_.ref.buttonEditItem=h.appendChildView(S)}else{let S=h.element.querySelector(".filepond--file-info-main"),D=document.createElement("button");D.className="filepond--action-edit-item-alt",D.innerHTML=f("GET_IMAGE_EDIT_ICON_EDIT")+"edit",D.addEventListener("click",_.ref.handleEdit),S.appendChild(D),_.ref.editButton=D}};h.registerDestroyer(({root:_})=>{_.ref.buttonEditItem&&_.ref.buttonEditItem.off("click",_.ref.handleEdit),_.ref.editButton&&_.ref.editButton.removeEventListener("click",_.ref.handleEdit)});let I={EDIT_ITEM:b,DID_LOAD_ITEM:E};if(p){let _=({root:y})=>{y.ref.buttonEditItem&&(y.ref.buttonEditItem.opacity=1)};I.DID_IMAGE_PREVIEW_SHOW=_}h.registerWriter(r(I))}),{options:{allowImageEdit:[!0,n.BOOLEAN],styleImageEditButtonEditItemPosition:["bottom center",n.STRING],imageEditInstantEdit:[!1,n.BOOLEAN],imageEditAllowEdit:[!0,n.BOOLEAN],imageEditIconEdit:['',n.STRING],imageEditEditor:[null,n.OBJECT]}}},Bu=typeof window<"u"&&typeof window.document<"u";Bu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Nr}));var Br=Nr;var Gu=e=>/^image\/jpeg/.test(e.type),at={JPEG:65496,APP1:65505,EXIF:1165519206,TIFF:18761,Orientation:274,Unknown:65280},nt=(e,t,i=!1)=>e.getUint16(t,i),Gr=(e,t,i=!1)=>e.getUint32(t,i),Vu=e=>new Promise((t,i)=>{let a=new FileReader;a.onload=function(n){let r=new DataView(n.target.result);if(nt(r,0)!==at.JPEG){t(-1);return}let o=r.byteLength,l=2;for(;ltypeof window<"u"&&typeof window.document<"u")(),ku=()=>Uu,Hu="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QA6RXhpZgAATU0AKgAAAAgAAwESAAMAAAABAAYAAAEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////wAALCAABAAIBASIA/8QAJgABAAAAAAAAAAAAAAAAAAAAAxABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQAAPwBH/9k=",Vr,mi=ku()?new Image:{};mi.onload=()=>Vr=mi.naturalWidth>mi.naturalHeight;mi.src=Hu;var Wu=()=>Vr,Ur=({addFilter:e,utils:t})=>{let{Type:i,isFile:a}=t;return e("DID_LOAD_ITEM",(n,{query:r})=>new Promise((o,l)=>{let s=n.file;if(!a(s)||!Gu(s)||!r("GET_ALLOW_IMAGE_EXIF_ORIENTATION")||!Wu())return o(n);Vu(s).then(u=>{n.setMetadata("exif",{orientation:u}),o(n)})})),{options:{allowImageExifOrientation:[!0,i.BOOLEAN]}}},Yu=typeof window<"u"&&typeof window.document<"u";Yu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Ur}));var kr=Ur;var $u=e=>/^image/.test(e.type),Hr=(e,t)=>Ut(e.x*t,e.y*t),Wr=(e,t)=>Ut(e.x+t.x,e.y+t.y),qu=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:Ut(e.x/t,e.y/t)},gi=(e,t,i)=>{let a=Math.cos(t),n=Math.sin(t),r=Ut(e.x-i.x,e.y-i.y);return Ut(i.x+a*r.x-n*r.y,i.y+n*r.x+a*r.y)},Ut=(e=0,t=0)=>({x:e,y:t}),Ie=(e,t,i=1,a)=>{if(typeof e=="string")return parseFloat(e)*i;if(typeof e=="number")return e*(a?t[a]:Math.min(t.width,t.height))},Xu=(e,t,i)=>{let a=e.borderStyle||e.lineStyle||"solid",n=e.backgroundColor||e.fontColor||"transparent",r=e.borderColor||e.lineColor||"transparent",o=Ie(e.borderWidth||e.lineWidth,t,i),l=e.lineCap||"round",s=e.lineJoin||"round",u=typeof a=="string"?"":a.map(d=>Ie(d,t,i)).join(","),c=e.opacity||1;return{"stroke-linecap":l,"stroke-linejoin":s,"stroke-width":o||0,"stroke-dasharray":u,stroke:r,fill:n,opacity:c}},ve=e=>e!=null,ju=(e,t,i=1)=>{let a=Ie(e.x,t,i,"width")||Ie(e.left,t,i,"width"),n=Ie(e.y,t,i,"height")||Ie(e.top,t,i,"height"),r=Ie(e.width,t,i,"width"),o=Ie(e.height,t,i,"height"),l=Ie(e.right,t,i,"width"),s=Ie(e.bottom,t,i,"height");return ve(n)||(ve(o)&&ve(s)?n=t.height-o-s:n=s),ve(a)||(ve(r)&&ve(l)?a=t.width-r-l:a=l),ve(r)||(ve(a)&&ve(l)?r=t.width-a-l:r=0),ve(o)||(ve(n)&&ve(s)?o=t.height-n-s:o=0),{x:a||0,y:n||0,width:r||0,height:o||0}},Qu=e=>e.map((t,i)=>`${i===0?"M":"L"} ${t.x} ${t.y}`).join(" "),Ce=(e,t)=>Object.keys(t).forEach(i=>e.setAttribute(i,t[i])),Zu="http://www.w3.org/2000/svg",bt=(e,t)=>{let i=document.createElementNS(Zu,e);return t&&Ce(i,t),i},Ku=e=>Ce(e,{...e.rect,...e.styles}),Ju=e=>{let t=e.rect.x+e.rect.width*.5,i=e.rect.y+e.rect.height*.5,a=e.rect.width*.5,n=e.rect.height*.5;return Ce(e,{cx:t,cy:i,rx:a,ry:n,...e.styles})},eh={contain:"xMidYMid meet",cover:"xMidYMid slice"},th=(e,t)=>{Ce(e,{...e.rect,...e.styles,preserveAspectRatio:eh[t.fit]||"none"})},ih={left:"start",center:"middle",right:"end"},ah=(e,t,i,a)=>{let n=Ie(t.fontSize,i,a),r=t.fontFamily||"sans-serif",o=t.fontWeight||"normal",l=ih[t.textAlign]||"start";Ce(e,{...e.rect,...e.styles,"stroke-width":0,"font-weight":o,"font-size":n,"font-family":r,"text-anchor":l}),e.text!==t.text&&(e.text=t.text,e.textContent=t.text.length?t.text:" ")},nh=(e,t,i,a)=>{Ce(e,{...e.rect,...e.styles,fill:"none"});let n=e.childNodes[0],r=e.childNodes[1],o=e.childNodes[2],l=e.rect,s={x:e.rect.x+e.rect.width,y:e.rect.y+e.rect.height};if(Ce(n,{x1:l.x,y1:l.y,x2:s.x,y2:s.y}),!t.lineDecoration)return;r.style.display="none",o.style.display="none";let u=qu({x:s.x-l.x,y:s.y-l.y}),c=Ie(.05,i,a);if(t.lineDecoration.indexOf("arrow-begin")!==-1){let d=Hr(u,c),h=Wr(l,d),f=gi(l,2,h),p=gi(l,-2,h);Ce(r,{style:"display:block;",d:`M${f.x},${f.y} L${l.x},${l.y} L${p.x},${p.y}`})}if(t.lineDecoration.indexOf("arrow-end")!==-1){let d=Hr(u,-c),h=Wr(s,d),f=gi(s,2,h),p=gi(s,-2,h);Ce(o,{style:"display:block;",d:`M${f.x},${f.y} L${s.x},${s.y} L${p.x},${p.y}`})}},rh=(e,t,i,a)=>{Ce(e,{...e.styles,fill:"none",d:Qu(t.points.map(n=>({x:Ie(n.x,i,a,"width"),y:Ie(n.y,i,a,"height")})))})},Ei=e=>t=>bt(e,{id:t.id}),oh=e=>{let t=bt("image",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0"});return t.onload=()=>{t.setAttribute("opacity",e.opacity||1)},t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.src),t},lh=e=>{let t=bt("g",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round"}),i=bt("line");t.appendChild(i);let a=bt("path");t.appendChild(a);let n=bt("path");return t.appendChild(n),t},sh={image:oh,rect:Ei("rect"),ellipse:Ei("ellipse"),text:Ei("text"),path:Ei("path"),line:lh},ch={rect:Ku,ellipse:Ju,image:th,text:ah,path:rh,line:nh},dh=(e,t)=>sh[e](t),uh=(e,t,i,a,n)=>{t!=="path"&&(e.rect=ju(i,a,n)),e.styles=Xu(i,a,n),ch[t](e,i,a,n)},hh=["x","y","left","top","right","bottom","width","height"],fh=e=>typeof e=="string"&&/%/.test(e)?parseFloat(e)/100:e,ph=e=>{let[t,i]=e,a=i.points?{}:hh.reduce((n,r)=>(n[r]=fh(i[r]),n),{});return[t,{zIndex:0,...i,...a}]},mh=(e,t)=>e[1].zIndex>t[1].zIndex?1:e[1].zIndexe.utils.createView({name:"image-preview-markup",tag:"svg",ignoreRect:!0,mixins:{apis:["width","height","crop","markup","resize","dirty"]},write:({root:t,props:i})=>{if(!i.dirty)return;let{crop:a,resize:n,markup:r}=i,o=i.width,l=i.height,s=a.width,u=a.height;if(n){let{size:f}=n,p=f&&f.width,m=f&&f.height,g=n.mode,b=n.upscale;p&&!m&&(m=p),m&&!p&&(p=m);let E=s{let[p,m]=f,g=dh(p,m);uh(g,p,m,c,d),t.element.appendChild(g)})}}),Vt=(e,t)=>({x:e,y:t}),Eh=(e,t)=>e.x*t.x+e.y*t.y,Yr=(e,t)=>Vt(e.x-t.x,e.y-t.y),Th=(e,t)=>Eh(Yr(e,t),Yr(e,t)),$r=(e,t)=>Math.sqrt(Th(e,t)),qr=(e,t)=>{let i=e,a=1.5707963267948966,n=t,r=1.5707963267948966-t,o=Math.sin(a),l=Math.sin(n),s=Math.sin(r),u=Math.cos(r),c=i/o,d=c*l,h=c*s;return Vt(u*d,u*h)},Ih=(e,t)=>{let i=e.width,a=e.height,n=qr(i,t),r=qr(a,t),o=Vt(e.x+Math.abs(n.x),e.y-Math.abs(n.y)),l=Vt(e.x+e.width+Math.abs(r.y),e.y+Math.abs(r.x)),s=Vt(e.x-Math.abs(r.y),e.y+e.height-Math.abs(r.x));return{width:$r(o,l),height:$r(o,s)}},bh=(e,t,i=1)=>{let a=e.height/e.width,n=1,r=t,o=1,l=a;l>r&&(l=r,o=l/a);let s=Math.max(n/o,r/l),u=e.width/(i*s*o),c=u*t;return{width:u,height:c}},jr=(e,t,i,a)=>{let n=a.x>.5?1-a.x:a.x,r=a.y>.5?1-a.y:a.y,o=n*2*e.width,l=r*2*e.height,s=Ih(t,i);return Math.max(s.width/o,s.height/l)},Qr=(e,t)=>{let i=e.width,a=i*t;a>e.height&&(a=e.height,i=a/t);let n=(e.width-i)*.5,r=(e.height-a)*.5;return{x:n,y:r,width:i,height:a}},_h=(e,t={})=>{let{zoom:i,rotation:a,center:n,aspectRatio:r}=t;r||(r=e.height/e.width);let o=bh(e,r,i),l={x:o.width*.5,y:o.height*.5},s={x:0,y:0,width:o.width,height:o.height,center:l},u=typeof t.scaleToFit>"u"||t.scaleToFit,c=jr(e,Qr(s,r),a,u?n:{x:.5,y:.5}),d=i*c;return{widthFloat:o.width/d,heightFloat:o.height/d,width:Math.round(o.width/d),height:Math.round(o.height/d)}},Fe={type:"spring",stiffness:.5,damping:.45,mass:10},Rh=e=>e.utils.createView({name:"image-bitmap",ignoreRect:!0,mixins:{styles:["scaleX","scaleY"]},create:({root:t,props:i})=>{t.appendChild(i.image)}}),yh=e=>e.utils.createView({name:"image-canvas-wrapper",tag:"div",ignoreRect:!0,mixins:{apis:["crop","width","height"],styles:["originX","originY","translateX","translateY","scaleX","scaleY","rotateZ"],animations:{originX:Fe,originY:Fe,scaleX:Fe,scaleY:Fe,translateX:Fe,translateY:Fe,rotateZ:Fe}},create:({root:t,props:i})=>{i.width=i.image.width,i.height=i.image.height,t.ref.bitmap=t.appendChildView(t.createChildView(Rh(e),{image:i.image}))},write:({root:t,props:i})=>{let{flip:a}=i.crop,{bitmap:n}=t.ref;n.scaleX=a.horizontal?-1:1,n.scaleY=a.vertical?-1:1}}),Sh=e=>e.utils.createView({name:"image-clip",tag:"div",ignoreRect:!0,mixins:{apis:["crop","markup","resize","width","height","dirty","background"],styles:["width","height","opacity"],animations:{opacity:{type:"tween",duration:250}}},didWriteView:function({root:t,props:i}){i.background&&(t.element.style.backgroundColor=i.background)},create:({root:t,props:i})=>{t.ref.image=t.appendChildView(t.createChildView(yh(e),Object.assign({},i))),t.ref.createMarkup=()=>{t.ref.markup||(t.ref.markup=t.appendChildView(t.createChildView(gh(e),Object.assign({},i))))},t.ref.destroyMarkup=()=>{t.ref.markup&&(t.removeChildView(t.ref.markup),t.ref.markup=null)};let a=t.query("GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR");a!==null&&(a==="grid"?t.element.dataset.transparencyIndicator=a:t.element.dataset.transparencyIndicator="color")},write:({root:t,props:i,shouldOptimize:a})=>{let{crop:n,markup:r,resize:o,dirty:l,width:s,height:u}=i;t.ref.image.crop=n;let c={x:0,y:0,width:s,height:u,center:{x:s*.5,y:u*.5}},d={width:t.ref.image.width,height:t.ref.image.height},h={x:n.center.x*d.width,y:n.center.y*d.height},f={x:c.center.x-d.width*n.center.x,y:c.center.y-d.height*n.center.y},p=Math.PI*2+n.rotation%(Math.PI*2),m=n.aspectRatio||d.height/d.width,g=typeof n.scaleToFit>"u"||n.scaleToFit,b=jr(d,Qr(c,m),p,g?n.center:{x:.5,y:.5}),E=n.zoom*b;r&&r.length?(t.ref.createMarkup(),t.ref.markup.width=s,t.ref.markup.height=u,t.ref.markup.resize=o,t.ref.markup.dirty=l,t.ref.markup.markup=r,t.ref.markup.crop=_h(d,n)):t.ref.markup&&t.ref.destroyMarkup();let I=t.ref.image;if(a){I.originX=null,I.originY=null,I.translateX=null,I.translateY=null,I.rotateZ=null,I.scaleX=null,I.scaleY=null;return}I.originX=h.x,I.originY=h.y,I.translateX=f.x,I.translateY=f.y,I.rotateZ=p,I.scaleX=E,I.scaleY=E}}),wh=e=>e.utils.createView({name:"image-preview",tag:"div",ignoreRect:!0,mixins:{apis:["image","crop","markup","resize","dirty","background"],styles:["translateY","scaleX","scaleY","opacity"],animations:{scaleX:Fe,scaleY:Fe,translateY:Fe,opacity:{type:"tween",duration:400}}},create:({root:t,props:i})=>{t.ref.clip=t.appendChildView(t.createChildView(Sh(e),{id:i.id,image:i.image,crop:i.crop,markup:i.markup,resize:i.resize,dirty:i.dirty,background:i.background}))},write:({root:t,props:i,shouldOptimize:a})=>{let{clip:n}=t.ref,{image:r,crop:o,markup:l,resize:s,dirty:u}=i;if(n.crop=o,n.markup=l,n.resize=s,n.dirty=u,n.opacity=a?0:1,a||t.rect.element.hidden)return;let c=r.height/r.width,d=o.aspectRatio||c,h=t.rect.inner.width,f=t.rect.inner.height,p=t.query("GET_IMAGE_PREVIEW_HEIGHT"),m=t.query("GET_IMAGE_PREVIEW_MIN_HEIGHT"),g=t.query("GET_IMAGE_PREVIEW_MAX_HEIGHT"),b=t.query("GET_PANEL_ASPECT_RATIO"),E=t.query("GET_ALLOW_MULTIPLE");b&&!E&&(p=h*b,d=b);let I=p!==null?p:Math.max(m,Math.min(h*d,g)),_=I/d;_>h&&(_=h,I=_*d),I>f&&(I=f,_=f/d),n.width=_,n.height=I}}),vh=` +var Go=Object.defineProperty;var Uo=(e,t)=>{for(var i in t)Go(e,i,{get:t[i],enumerable:!0})};var ea={};Uo(ea,{FileOrigin:()=>Pt,FileStatus:()=>pt,OptionTypes:()=>Ni,Status:()=>Kn,create:()=>dt,destroy:()=>ut,find:()=>Vi,getOptions:()=>Gi,parse:()=>Bi,registerPlugin:()=>_e,setOptions:()=>Ot,supported:()=>zi});var ko=e=>e instanceof HTMLElement,Ho=(e,t=[],i=[])=>{let a={...e},n=[],r=[],o=()=>({...a}),l=()=>{let p=[...n];return n.length=0,p},s=()=>{let p=[...r];r.length=0,p.forEach(({type:f,data:g})=>{u(f,g)})},u=(p,f,g)=>{if(g&&!document.hidden){r.push({type:p,data:f});return}m[p]&&m[p](f),n.push({type:p,data:f})},c=(p,...f)=>h[p]?h[p](...f):null,d={getState:o,processActionQueue:l,processDispatchQueue:s,dispatch:u,query:c},h={};t.forEach(p=>{h={...p(a),...h}});let m={};return i.forEach(p=>{m={...p(u,c,a),...m}}),d},Wo=(e,t,i)=>{if(typeof i=="function"){e[t]=i;return}Object.defineProperty(e,t,{...i})},te=(e,t)=>{for(let i in e)e.hasOwnProperty(i)&&t(i,e[i])},Ue=e=>{let t={};return te(e,i=>{Wo(t,i,e[i])}),t},ne=(e,t,i=null)=>{if(i===null)return e.getAttribute(t)||e.hasAttribute(t);e.setAttribute(t,i)},Yo="http://www.w3.org/2000/svg",$o=["svg","path"],wa=e=>$o.includes(e),ei=(e,t,i={})=>{typeof t=="object"&&(i=t,t=null);let a=wa(e)?document.createElementNS(Yo,e):document.createElement(e);return t&&(wa(e)?ne(a,"class",t):a.className=t),te(i,(n,r)=>{ne(a,n,r)}),a},qo=e=>(t,i)=>{typeof i<"u"&&e.children[i]?e.insertBefore(t,e.children[i]):e.appendChild(t)},jo=(e,t)=>(i,a)=>(typeof a<"u"?t.splice(a,0,i):t.push(i),i),Xo=(e,t)=>i=>(t.splice(t.indexOf(i),1),i.element.parentNode&&e.removeChild(i.element),i),Qo=(()=>typeof window<"u"&&typeof window.document<"u")(),un=()=>Qo,Zo=un()?ei("svg"):{},Ko="children"in Zo?e=>e.children.length:e=>e.childNodes.length,hn=(e,t,i,a)=>{let n=i[0]||e.left,r=i[1]||e.top,o=n+e.width,l=r+e.height*(a[1]||1),s={element:{...e},inner:{left:e.left,top:e.top,right:e.right,bottom:e.bottom},outer:{left:n,top:r,right:o,bottom:l}};return t.filter(u=>!u.isRectIgnored()).map(u=>u.rect).forEach(u=>{va(s.inner,{...u.inner}),va(s.outer,{...u.outer})}),Aa(s.inner),s.outer.bottom+=s.element.marginBottom,s.outer.right+=s.element.marginRight,Aa(s.outer),s},va=(e,t)=>{t.top+=e.top,t.right+=e.left,t.bottom+=e.top,t.left+=e.left,t.bottom>e.bottom&&(e.bottom=t.bottom),t.right>e.right&&(e.right=t.right)},Aa=e=>{e.width=e.right-e.left,e.height=e.bottom-e.top},$e=e=>typeof e=="number",Jo=(e,t,i,a=.001)=>Math.abs(e-t){let a=null,n=null,r=0,o=!1,u=Ue({interpolate:(c,d)=>{if(o)return;if(!($e(a)&&$e(n))){o=!0,r=0;return}let h=-(n-a)*e;r+=h/i,n+=r,r*=t,Jo(n,a,r)||d?(n=a,r=0,o=!0,u.onupdate(n),u.oncomplete(n)):u.onupdate(n)},target:{set:c=>{if($e(c)&&!$e(n)&&(n=c),a===null&&(a=c,n=c),a=c,n===a||typeof a>"u"){o=!0,r=0,u.onupdate(n),u.oncomplete(n);return}o=!1},get:()=>a},resting:{get:()=>o},onupdate:c=>{},oncomplete:c=>{}});return u};var tl=e=>e<.5?2*e*e:-1+(4-2*e)*e,il=({duration:e=500,easing:t=tl,delay:i=0}={})=>{let a=null,n,r,o=!0,l=!1,s=null,c=Ue({interpolate:(d,h)=>{o||s===null||(a===null&&(a=d),!(d-a=e||h?(n=1,r=l?0:1,c.onupdate(r*s),c.oncomplete(r*s),o=!0):(r=n/e,c.onupdate((n>=0?t(l?1-r:r):0)*s))))},target:{get:()=>l?0:s,set:d=>{if(s===null){s=d,c.onupdate(d),c.oncomplete(d);return}do},onupdate:d=>{},oncomplete:d=>{}});return c},La={spring:el,tween:il},al=(e,t,i)=>{let a=e[t]&&typeof e[t][i]=="object"?e[t][i]:e[t]||e,n=typeof a=="string"?a:a.type,r=typeof a=="object"?{...a}:{};return La[n]?La[n](r):null},Ui=(e,t,i,a=!1)=>{t=Array.isArray(t)?t:[t],t.forEach(n=>{e.forEach(r=>{let o=r,l=()=>i[r],s=u=>i[r]=u;typeof r=="object"&&(o=r.key,l=r.getter||l,s=r.setter||s),!(n[o]&&!a)&&(n[o]={get:l,set:s})})})},nl=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a})=>{let n={...t},r=[];return te(e,(o,l)=>{let s=al(l);if(!s)return;s.onupdate=c=>{t[o]=c},s.target=n[o],Ui([{key:o,setter:c=>{s.target!==c&&(s.target=c)},getter:()=>t[o]}],[i,a],t,!0),r.push(s)}),{write:o=>{let l=document.hidden,s=!0;return r.forEach(u=>{u.resting||(s=!1),u.interpolate(o,l)}),s},destroy:()=>{}}},rl=e=>(t,i)=>{e.addEventListener(t,i)},ol=e=>(t,i)=>{e.removeEventListener(t,i)},ll=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a,viewState:n,view:r})=>{let o=[],l=rl(r.element),s=ol(r.element);return a.on=(u,c)=>{o.push({type:u,fn:c}),l(u,c)},a.off=(u,c)=>{o.splice(o.findIndex(d=>d.type===u&&d.fn===c),1),s(u,c)},{write:()=>!0,destroy:()=>{o.forEach(u=>{s(u.type,u.fn)})}}},sl=({mixinConfig:e,viewProps:t,viewExternalAPI:i})=>{Ui(e,i,t)},me=e=>e!=null,cl={opacity:1,scaleX:1,scaleY:1,translateX:0,translateY:0,rotateX:0,rotateY:0,rotateZ:0,originX:0,originY:0},dl=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a,view:n})=>{let r={...t},o={};Ui(e,[i,a],t);let l=()=>[t.translateX||0,t.translateY||0],s=()=>[t.scaleX||0,t.scaleY||0],u=()=>n.rect?hn(n.rect,n.childViews,l(),s()):null;return i.rect={get:u},a.rect={get:u},e.forEach(c=>{t[c]=typeof r[c]>"u"?cl[c]:r[c]}),{write:()=>{if(ul(o,t))return hl(n.element,t),Object.assign(o,{...t}),!0},destroy:()=>{}}},ul=(e,t)=>{if(Object.keys(e).length!==Object.keys(t).length)return!0;for(let i in t)if(t[i]!==e[i])return!0;return!1},hl=(e,{opacity:t,perspective:i,translateX:a,translateY:n,scaleX:r,scaleY:o,rotateX:l,rotateY:s,rotateZ:u,originX:c,originY:d,width:h,height:m})=>{let p="",f="";(me(c)||me(d))&&(f+=`transform-origin: ${c||0}px ${d||0}px;`),me(i)&&(p+=`perspective(${i}px) `),(me(a)||me(n))&&(p+=`translate3d(${a||0}px, ${n||0}px, 0) `),(me(r)||me(o))&&(p+=`scale3d(${me(r)?r:1}, ${me(o)?o:1}, 1) `),me(u)&&(p+=`rotateZ(${u}rad) `),me(l)&&(p+=`rotateX(${l}rad) `),me(s)&&(p+=`rotateY(${s}rad) `),p.length&&(f+=`transform:${p};`),me(t)&&(f+=`opacity:${t};`,t===0&&(f+="visibility:hidden;"),t<1&&(f+="pointer-events:none;")),me(m)&&(f+=`height:${m}px;`),me(h)&&(f+=`width:${h}px;`);let g=e.elementCurrentStyle||"";(f.length!==g.length||f!==g)&&(e.style.cssText=f,e.elementCurrentStyle=f)},ml={styles:dl,listeners:ll,animations:nl,apis:sl},Ma=(e={},t={},i={})=>(t.layoutCalculated||(e.paddingTop=parseInt(i.paddingTop,10)||0,e.marginTop=parseInt(i.marginTop,10)||0,e.marginRight=parseInt(i.marginRight,10)||0,e.marginBottom=parseInt(i.marginBottom,10)||0,e.marginLeft=parseInt(i.marginLeft,10)||0,t.layoutCalculated=!0),e.left=t.offsetLeft||0,e.top=t.offsetTop||0,e.width=t.offsetWidth||0,e.height=t.offsetHeight||0,e.right=e.left+e.width,e.bottom=e.top+e.height,e.scrollTop=t.scrollTop,e.hidden=t.offsetParent===null,e),re=({tag:e="div",name:t=null,attributes:i={},read:a=()=>{},write:n=()=>{},create:r=()=>{},destroy:o=()=>{},filterFrameActionsForChild:l=(m,p)=>p,didCreateView:s=()=>{},didWriteView:u=()=>{},ignoreRect:c=!1,ignoreRectUpdate:d=!1,mixins:h=[]}={})=>(m,p={})=>{let f=ei(e,`filepond--${t}`,i),g=window.getComputedStyle(f,null),b=Ma(),E=null,I=!1,_=[],y=[],T={},v={},R=[n],S=[a],P=[o],x=()=>f,O=()=>_.concat(),z=()=>T,A=U=>(W,$)=>W(U,$),F=()=>E||(E=hn(b,_,[0,0],[1,1]),E),w=()=>g,L=()=>{E=null,_.forEach($=>$._read()),!(d&&b.width&&b.height)&&Ma(b,f,g);let W={root:X,props:p,rect:b};S.forEach($=>$(W))},C=(U,W,$)=>{let le=W.length===0;return R.forEach(J=>{J({props:p,root:X,actions:W,timestamp:U,shouldOptimize:$})===!1&&(le=!1)}),y.forEach(J=>{J.write(U)===!1&&(le=!1)}),_.filter(J=>!!J.element.parentNode).forEach(J=>{J._write(U,l(J,W),$)||(le=!1)}),_.forEach((J,G)=>{J.element.parentNode||(X.appendChild(J.element,G),J._read(),J._write(U,l(J,W),$),le=!1)}),I=le,u({props:p,root:X,actions:W,timestamp:U}),le},D=()=>{y.forEach(U=>U.destroy()),P.forEach(U=>{U({root:X,props:p})}),_.forEach(U=>U._destroy())},V={element:{get:x},style:{get:w},childViews:{get:O}},B={...V,rect:{get:F},ref:{get:z},is:U=>t===U,appendChild:qo(f),createChildView:A(m),linkView:U=>(_.push(U),U),unlinkView:U=>{_.splice(_.indexOf(U),1)},appendChildView:jo(f,_),removeChildView:Xo(f,_),registerWriter:U=>R.push(U),registerReader:U=>S.push(U),registerDestroyer:U=>P.push(U),invalidateLayout:()=>f.layoutCalculated=!1,dispatch:m.dispatch,query:m.query},j={element:{get:x},childViews:{get:O},rect:{get:F},resting:{get:()=>I},isRectIgnored:()=>c,_read:L,_write:C,_destroy:D},q={...V,rect:{get:()=>b}};Object.keys(h).sort((U,W)=>U==="styles"?1:W==="styles"?-1:0).forEach(U=>{let W=ml[U]({mixinConfig:h[U],viewProps:p,viewState:v,viewInternalAPI:B,viewExternalAPI:j,view:Ue(q)});W&&y.push(W)});let X=Ue(B);r({root:X,props:p});let ue=Ko(f);return _.forEach((U,W)=>{X.appendChild(U.element,ue+W)}),s(X),Ue(j)},pl=(e,t,i=60)=>{let a="__framePainter";if(window[a]){window[a].readers.push(e),window[a].writers.push(t);return}window[a]={readers:[e],writers:[t]};let n=window[a],r=1e3/i,o=null,l=null,s=null,u=null,c=()=>{document.hidden?(s=()=>window.setTimeout(()=>d(performance.now()),r),u=()=>window.clearTimeout(l)):(s=()=>window.requestAnimationFrame(d),u=()=>window.cancelAnimationFrame(l))};document.addEventListener("visibilitychange",()=>{u&&u(),c(),d(performance.now())});let d=h=>{l=s(d),o||(o=h);let m=h-o;m<=r||(o=h-m%r,n.readers.forEach(p=>p()),n.writers.forEach(p=>p(h)))};return c(),d(performance.now()),{pause:()=>{u(l)}}},fe=(e,t)=>({root:i,props:a,actions:n=[],timestamp:r,shouldOptimize:o})=>{n.filter(l=>e[l.type]).forEach(l=>e[l.type]({root:i,props:a,action:l.data,timestamp:r,shouldOptimize:o})),t&&t({root:i,props:a,actions:n,timestamp:r,shouldOptimize:o})},Oa=(e,t)=>t.parentNode.insertBefore(e,t),xa=(e,t)=>t.parentNode.insertBefore(e,t.nextSibling),ni=e=>Array.isArray(e),Ne=e=>e==null,fl=e=>e.trim(),ri=e=>""+e,gl=(e,t=",")=>Ne(e)?[]:ni(e)?e:ri(e).split(t).map(fl).filter(i=>i.length),mn=e=>typeof e=="boolean",pn=e=>mn(e)?e:e==="true",pe=e=>typeof e=="string",fn=e=>$e(e)?e:pe(e)?ri(e).replace(/[a-z]+/gi,""):0,Jt=e=>parseInt(fn(e),10),Pa=e=>parseFloat(fn(e)),mt=e=>$e(e)&&isFinite(e)&&Math.floor(e)===e,Da=(e,t=1e3)=>{if(mt(e))return e;let i=ri(e).trim();return/MB$/i.test(i)?(i=i.replace(/MB$i/,"").trim(),Jt(i)*t*t):/KB/i.test(i)?(i=i.replace(/KB$i/,"").trim(),Jt(i)*t):Jt(i)},qe=e=>typeof e=="function",El=e=>{let t=self,i=e.split("."),a=null;for(;a=i.shift();)if(t=t[a],!t)return null;return t},Fa={process:"POST",patch:"PATCH",revert:"DELETE",fetch:"GET",restore:"GET",load:"GET"},Tl=e=>{let t={};return t.url=pe(e)?e:e.url||"",t.timeout=e.timeout?parseInt(e.timeout,10):0,t.headers=e.headers?e.headers:{},te(Fa,i=>{t[i]=Il(i,e[i],Fa[i],t.timeout,t.headers)}),t.process=e.process||pe(e)||e.url?t.process:null,t.remove=e.remove||null,delete t.headers,t},Il=(e,t,i,a,n)=>{if(t===null)return null;if(typeof t=="function")return t;let r={url:i==="GET"||i==="PATCH"?`?${e}=`:"",method:i,headers:n,withCredentials:!1,timeout:a,onload:null,ondata:null,onerror:null};if(pe(t))return r.url=t,r;if(Object.assign(r,t),pe(r.headers)){let o=r.headers.split(/:(.+)/);r.headers={header:o[0],value:o[1]}}return r.withCredentials=pn(r.withCredentials),r},bl=e=>Tl(e),_l=e=>e===null,ce=e=>typeof e=="object"&&e!==null,Rl=e=>ce(e)&&pe(e.url)&&ce(e.process)&&ce(e.revert)&&ce(e.restore)&&ce(e.fetch),Li=e=>ni(e)?"array":_l(e)?"null":mt(e)?"int":/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(e)?"bytes":Rl(e)?"api":typeof e,yl=e=>e.replace(/{\s*'/g,'{"').replace(/'\s*}/g,'"}').replace(/'\s*:/g,'":').replace(/:\s*'/g,':"').replace(/,\s*'/g,',"').replace(/'\s*,/g,'",'),Sl={array:gl,boolean:pn,int:e=>Li(e)==="bytes"?Da(e):Jt(e),number:Pa,float:Pa,bytes:Da,string:e=>qe(e)?e:ri(e),function:e=>El(e),serverapi:bl,object:e=>{try{return JSON.parse(yl(e))}catch{return null}}},wl=(e,t)=>Sl[t](e),gn=(e,t,i)=>{if(e===t)return e;let a=Li(e);if(a!==i){let n=wl(e,i);if(a=Li(n),n===null)throw`Trying to assign value with incorrect type to "${option}", allowed type: "${i}"`;e=n}return e},vl=(e,t)=>{let i=e;return{enumerable:!0,get:()=>i,set:a=>{i=gn(a,e,t)}}},Al=e=>{let t={};return te(e,i=>{let a=e[i];t[i]=vl(a[0],a[1])}),Ue(t)},Ll=e=>({items:[],listUpdateTimeout:null,itemUpdateTimeout:null,processingQueue:[],options:Al(e)}),oi=(e,t="-")=>e.split(/(?=[A-Z])/).map(i=>i.toLowerCase()).join(t),Ml=(e,t)=>{let i={};return te(t,a=>{i[a]={get:()=>e.getState().options[a],set:n=>{e.dispatch(`SET_${oi(a,"_").toUpperCase()}`,{value:n})}}}),i},Ol=e=>(t,i,a)=>{let n={};return te(e,r=>{let o=oi(r,"_").toUpperCase();n[`SET_${o}`]=l=>{try{a.options[r]=l.value}catch{}t(`DID_SET_${o}`,{value:a.options[r]})}}),n},xl=e=>t=>{let i={};return te(e,a=>{i[`GET_${oi(a,"_").toUpperCase()}`]=n=>t.options[a]}),i},Se={API:1,DROP:2,BROWSE:3,PASTE:4,NONE:5},ki=()=>Math.random().toString(36).substring(2,11),Hi=(e,t)=>e.splice(t,1),Pl=(e,t)=>{t?e():document.hidden?Promise.resolve(1).then(e):setTimeout(e,0)},li=()=>{let e=[],t=(a,n)=>{Hi(e,e.findIndex(r=>r.event===a&&(r.cb===n||!n)))},i=(a,n,r)=>{e.filter(o=>o.event===a).map(o=>o.cb).forEach(o=>Pl(()=>o(...n),r))};return{fireSync:(a,...n)=>{i(a,n,!0)},fire:(a,...n)=>{i(a,n,!1)},on:(a,n)=>{e.push({event:a,cb:n})},onOnce:(a,n)=>{e.push({event:a,cb:(...r)=>{t(a,n),n(...r)}})},off:t}},En=(e,t,i)=>{Object.getOwnPropertyNames(e).filter(a=>!i.includes(a)).forEach(a=>Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a)))},Dl=["fire","process","revert","load","on","off","onOnce","retryLoad","extend","archive","archived","release","released","requestProcessing","freeze"],ge=e=>{let t={};return En(e,t,Dl),t},Fl=e=>{e.forEach((t,i)=>{t.released&&Hi(e,i)})},k={INIT:1,IDLE:2,PROCESSING_QUEUED:9,PROCESSING:3,PROCESSING_COMPLETE:5,PROCESSING_ERROR:6,PROCESSING_REVERT_ERROR:10,LOADING:7,LOAD_ERROR:8},se={INPUT:1,LIMBO:2,LOCAL:3},Tn=e=>/[^0-9]+/.exec(e),In=()=>Tn(1.1.toLocaleString())[0],Cl=()=>{let e=In(),t=1e3.toLocaleString(),i=1e3.toString();return t!==i?Tn(t)[0]:e==="."?",":"."},M={BOOLEAN:"boolean",INT:"int",NUMBER:"number",STRING:"string",ARRAY:"array",OBJECT:"object",FUNCTION:"function",ACTION:"action",SERVER_API:"serverapi",REGEX:"regex"},Wi=[],Le=(e,t,i)=>new Promise((a,n)=>{let r=Wi.filter(l=>l.key===e).map(l=>l.cb);if(r.length===0){a(t);return}let o=r.shift();r.reduce((l,s)=>l.then(u=>s(u,i)),o(t,i)).then(l=>a(l)).catch(l=>n(l))}),Je=(e,t,i)=>Wi.filter(a=>a.key===e).map(a=>a.cb(t,i)),zl=(e,t)=>Wi.push({key:e,cb:t}),Nl=e=>Object.assign(lt,e),ti=()=>({...lt}),Bl=e=>{te(e,(t,i)=>{lt[t]&&(lt[t][0]=gn(i,lt[t][0],lt[t][1]))})},lt={id:[null,M.STRING],name:["filepond",M.STRING],disabled:[!1,M.BOOLEAN],className:[null,M.STRING],required:[!1,M.BOOLEAN],captureMethod:[null,M.STRING],allowSyncAcceptAttribute:[!0,M.BOOLEAN],allowDrop:[!0,M.BOOLEAN],allowBrowse:[!0,M.BOOLEAN],allowPaste:[!0,M.BOOLEAN],allowMultiple:[!1,M.BOOLEAN],allowReplace:[!0,M.BOOLEAN],allowRevert:[!0,M.BOOLEAN],allowRemove:[!0,M.BOOLEAN],allowProcess:[!0,M.BOOLEAN],allowReorder:[!1,M.BOOLEAN],allowDirectoriesOnly:[!1,M.BOOLEAN],storeAsFile:[!1,M.BOOLEAN],forceRevert:[!1,M.BOOLEAN],maxFiles:[null,M.INT],checkValidity:[!1,M.BOOLEAN],itemInsertLocationFreedom:[!0,M.BOOLEAN],itemInsertLocation:["before",M.STRING],itemInsertInterval:[75,M.INT],dropOnPage:[!1,M.BOOLEAN],dropOnElement:[!0,M.BOOLEAN],dropValidation:[!1,M.BOOLEAN],ignoredFiles:[[".ds_store","thumbs.db","desktop.ini"],M.ARRAY],instantUpload:[!0,M.BOOLEAN],maxParallelUploads:[2,M.INT],allowMinimumUploadDuration:[!0,M.BOOLEAN],chunkUploads:[!1,M.BOOLEAN],chunkForce:[!1,M.BOOLEAN],chunkSize:[5e6,M.INT],chunkRetryDelays:[[500,1e3,3e3],M.ARRAY],server:[null,M.SERVER_API],fileSizeBase:[1e3,M.INT],labelFileSizeBytes:["bytes",M.STRING],labelFileSizeKilobytes:["KB",M.STRING],labelFileSizeMegabytes:["MB",M.STRING],labelFileSizeGigabytes:["GB",M.STRING],labelDecimalSeparator:[In(),M.STRING],labelThousandsSeparator:[Cl(),M.STRING],labelIdle:['Drag & Drop your files or Browse',M.STRING],labelInvalidField:["Field contains invalid files",M.STRING],labelFileWaitingForSize:["Waiting for size",M.STRING],labelFileSizeNotAvailable:["Size not available",M.STRING],labelFileCountSingular:["file in list",M.STRING],labelFileCountPlural:["files in list",M.STRING],labelFileLoading:["Loading",M.STRING],labelFileAdded:["Added",M.STRING],labelFileLoadError:["Error during load",M.STRING],labelFileRemoved:["Removed",M.STRING],labelFileRemoveError:["Error during remove",M.STRING],labelFileProcessing:["Uploading",M.STRING],labelFileProcessingComplete:["Upload complete",M.STRING],labelFileProcessingAborted:["Upload cancelled",M.STRING],labelFileProcessingError:["Error during upload",M.STRING],labelFileProcessingRevertError:["Error during revert",M.STRING],labelTapToCancel:["tap to cancel",M.STRING],labelTapToRetry:["tap to retry",M.STRING],labelTapToUndo:["tap to undo",M.STRING],labelButtonRemoveItem:["Remove",M.STRING],labelButtonAbortItemLoad:["Abort",M.STRING],labelButtonRetryItemLoad:["Retry",M.STRING],labelButtonAbortItemProcessing:["Cancel",M.STRING],labelButtonUndoItemProcessing:["Undo",M.STRING],labelButtonRetryItemProcessing:["Retry",M.STRING],labelButtonProcessItem:["Upload",M.STRING],iconRemove:['',M.STRING],iconProcess:['',M.STRING],iconRetry:['',M.STRING],iconUndo:['',M.STRING],iconDone:['',M.STRING],oninit:[null,M.FUNCTION],onwarning:[null,M.FUNCTION],onerror:[null,M.FUNCTION],onactivatefile:[null,M.FUNCTION],oninitfile:[null,M.FUNCTION],onaddfilestart:[null,M.FUNCTION],onaddfileprogress:[null,M.FUNCTION],onaddfile:[null,M.FUNCTION],onprocessfilestart:[null,M.FUNCTION],onprocessfileprogress:[null,M.FUNCTION],onprocessfileabort:[null,M.FUNCTION],onprocessfilerevert:[null,M.FUNCTION],onprocessfile:[null,M.FUNCTION],onprocessfiles:[null,M.FUNCTION],onremovefile:[null,M.FUNCTION],onpreparefile:[null,M.FUNCTION],onupdatefiles:[null,M.FUNCTION],onreorderfiles:[null,M.FUNCTION],beforeDropFile:[null,M.FUNCTION],beforeAddFile:[null,M.FUNCTION],beforeRemoveFile:[null,M.FUNCTION],beforePrepareFile:[null,M.FUNCTION],stylePanelLayout:[null,M.STRING],stylePanelAspectRatio:[null,M.STRING],styleItemPanelAspectRatio:[null,M.STRING],styleButtonRemoveItemPosition:["left",M.STRING],styleButtonProcessItemPosition:["right",M.STRING],styleLoadIndicatorPosition:["right",M.STRING],styleProgressIndicatorPosition:["right",M.STRING],styleButtonRemoveItemAlign:[!1,M.BOOLEAN],files:[[],M.ARRAY],credits:[["https://pqina.nl/","Powered by PQINA"],M.ARRAY]},je=(e,t)=>Ne(t)?e[0]||null:mt(t)?e[t]||null:(typeof t=="object"&&(t=t.id),e.find(i=>i.id===t)||null),bn=e=>{if(Ne(e))return e;if(/:/.test(e)){let t=e.split(":");return t[1]/t[0]}return parseFloat(e)},Me=e=>e.filter(t=>!t.archived),_n={EMPTY:0,IDLE:1,ERROR:2,BUSY:3,READY:4},qt=null,Vl=()=>{if(qt===null)try{let e=new DataTransfer;e.items.add(new File(["hello world"],"This_Works.txt"));let t=document.createElement("input");t.setAttribute("type","file"),t.files=e.files,qt=t.files.length===1}catch{qt=!1}return qt},Gl=[k.LOAD_ERROR,k.PROCESSING_ERROR,k.PROCESSING_REVERT_ERROR],Ul=[k.LOADING,k.PROCESSING,k.PROCESSING_QUEUED,k.INIT],kl=[k.PROCESSING_COMPLETE],Hl=e=>Gl.includes(e.status),Wl=e=>Ul.includes(e.status),Yl=e=>kl.includes(e.status),Ca=e=>ce(e.options.server)&&(ce(e.options.server.process)||qe(e.options.server.process)),$l=e=>({GET_STATUS:()=>{let t=Me(e.items),{EMPTY:i,ERROR:a,BUSY:n,IDLE:r,READY:o}=_n;return t.length===0?i:t.some(Hl)?a:t.some(Wl)?n:t.some(Yl)?o:r},GET_ITEM:t=>je(e.items,t),GET_ACTIVE_ITEM:t=>je(Me(e.items),t),GET_ACTIVE_ITEMS:()=>Me(e.items),GET_ITEMS:()=>e.items,GET_ITEM_NAME:t=>{let i=je(e.items,t);return i?i.filename:null},GET_ITEM_SIZE:t=>{let i=je(e.items,t);return i?i.fileSize:null},GET_STYLES:()=>Object.keys(e.options).filter(t=>/^style/.test(t)).map(t=>({name:t,value:e.options[t]})),GET_PANEL_ASPECT_RATIO:()=>/circle/.test(e.options.stylePanelLayout)?1:bn(e.options.stylePanelAspectRatio),GET_ITEM_PANEL_ASPECT_RATIO:()=>e.options.styleItemPanelAspectRatio,GET_ITEMS_BY_STATUS:t=>Me(e.items).filter(i=>i.status===t),GET_TOTAL_ITEMS:()=>Me(e.items).length,SHOULD_UPDATE_FILE_INPUT:()=>e.options.storeAsFile&&Vl()&&!Ca(e),IS_ASYNC:()=>Ca(e),GET_FILE_SIZE_LABELS:t=>({labelBytes:t("GET_LABEL_FILE_SIZE_BYTES")||void 0,labelKilobytes:t("GET_LABEL_FILE_SIZE_KILOBYTES")||void 0,labelMegabytes:t("GET_LABEL_FILE_SIZE_MEGABYTES")||void 0,labelGigabytes:t("GET_LABEL_FILE_SIZE_GIGABYTES")||void 0})}),ql=e=>{let t=Me(e.items).length;if(!e.options.allowMultiple)return t===0;let i=e.options.maxFiles;return i===null||tMath.max(Math.min(i,e),t),jl=(e,t,i)=>e.splice(t,0,i),Xl=(e,t,i)=>Ne(t)?null:typeof i>"u"?(e.push(t),t):(i=Rn(i,0,e.length),jl(e,i,t),t),Mi=e=>/^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i.test(e),xt=e=>`${e}`.split("/").pop().split("?").shift(),si=e=>e.split(".").pop(),Ql=e=>{if(typeof e!="string")return"";let t=e.split("/").pop();return/svg/.test(t)?"svg":/zip|compressed/.test(t)?"zip":/plain/.test(t)?"txt":/msword/.test(t)?"doc":/[a-z]+/.test(t)?t==="jpeg"?"jpg":t:""},vt=(e,t="")=>(t+e).slice(-t.length),yn=(e=new Date)=>`${e.getFullYear()}-${vt(e.getMonth()+1,"00")}-${vt(e.getDate(),"00")}_${vt(e.getHours(),"00")}-${vt(e.getMinutes(),"00")}-${vt(e.getSeconds(),"00")}`,ht=(e,t,i=null,a=null)=>{let n=typeof i=="string"?e.slice(0,e.size,i):e.slice(0,e.size,e.type);return n.lastModifiedDate=new Date,e._relativePath&&(n._relativePath=e._relativePath),pe(t)||(t=yn()),t&&a===null&&si(t)?n.name=t:(a=a||Ql(n.type),n.name=t+(a?"."+a:"")),n},Zl=()=>window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,Sn=(e,t)=>{let i=Zl();if(i){let a=new i;return a.append(e),a.getBlob(t)}return new Blob([e],{type:t})},Kl=(e,t)=>{let i=new ArrayBuffer(e.length),a=new Uint8Array(i);for(let n=0;n(/^data:(.+);/.exec(e)||[])[1]||null,Jl=e=>e.split(",")[1].replace(/\s/g,""),es=e=>atob(Jl(e)),ts=e=>{let t=wn(e),i=es(e);return Kl(i,t)},is=(e,t,i)=>ht(ts(e),t,null,i),as=e=>{if(!/^content-disposition:/i.test(e))return null;let t=e.split(/filename=|filename\*=.+''/).splice(1).map(i=>i.trim().replace(/^["']|[;"']{0,2}$/g,"")).filter(i=>i.length);return t.length?decodeURI(t[t.length-1]):null},ns=e=>{if(/content-length:/i.test(e)){let t=e.match(/[0-9]+/)[0];return t?parseInt(t,10):null}return null},rs=e=>/x-content-transfer-id:/i.test(e)&&(e.split(":")[1]||"").trim()||null,Yi=e=>{let t={source:null,name:null,size:null},i=e.split(` +`);for(let a of i){let n=as(a);if(n){t.name=n;continue}let r=ns(a);if(r){t.size=r;continue}let o=rs(a);if(o){t.source=o;continue}}return t},os=e=>{let t={source:null,complete:!1,progress:0,size:null,timestamp:null,duration:0,request:null},i=()=>t.progress,a=()=>{t.request&&t.request.abort&&t.request.abort()},n=()=>{let l=t.source;o.fire("init",l),l instanceof File?o.fire("load",l):l instanceof Blob?o.fire("load",ht(l,l.name)):Mi(l)?o.fire("load",is(l)):r(l)},r=l=>{if(!e){o.fire("error",{type:"error",body:"Can't load URL",code:400});return}t.timestamp=Date.now(),t.request=e(l,s=>{t.duration=Date.now()-t.timestamp,t.complete=!0,s instanceof Blob&&(s=ht(s,s.name||xt(l))),o.fire("load",s instanceof Blob?s:s?s.body:null)},s=>{o.fire("error",typeof s=="string"?{type:"error",code:0,body:s}:s)},(s,u,c)=>{if(c&&(t.size=c),t.duration=Date.now()-t.timestamp,!s){t.progress=null;return}t.progress=u/c,o.fire("progress",t.progress)},()=>{o.fire("abort")},s=>{let u=Yi(typeof s=="string"?s:s.headers);o.fire("meta",{size:t.size||u.size,filename:u.name,source:u.source})})},o={...li(),setSource:l=>t.source=l,getProgress:i,abort:a,load:n};return o},za=e=>/GET|HEAD/.test(e),Xe=(e,t,i)=>{let a={onheaders:()=>{},onprogress:()=>{},onload:()=>{},ontimeout:()=>{},onerror:()=>{},onabort:()=>{},abort:()=>{n=!0,o.abort()}},n=!1,r=!1;i={method:"POST",headers:{},withCredentials:!1,...i},t=encodeURI(t),za(i.method)&&e&&(t=`${t}${encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))}`);let o=new XMLHttpRequest,l=za(i.method)?o:o.upload;return l.onprogress=s=>{n||a.onprogress(s.lengthComputable,s.loaded,s.total)},o.onreadystatechange=()=>{o.readyState<2||o.readyState===4&&o.status===0||r||(r=!0,a.onheaders(o))},o.onload=()=>{o.status>=200&&o.status<300?a.onload(o):a.onerror(o)},o.onerror=()=>a.onerror(o),o.onabort=()=>{n=!0,a.onabort()},o.ontimeout=()=>a.ontimeout(o),o.open(i.method,t,!0),mt(i.timeout)&&(o.timeout=i.timeout),Object.keys(i.headers).forEach(s=>{let u=unescape(encodeURIComponent(i.headers[s]));o.setRequestHeader(s,u)}),i.responseType&&(o.responseType=i.responseType),i.withCredentials&&(o.withCredentials=!0),o.send(e),a},ie=(e,t,i,a)=>({type:e,code:t,body:i,headers:a}),Qe=e=>t=>{e(ie("error",0,"Timeout",t.getAllResponseHeaders()))},Na=e=>/\?/.test(e),Mt=(...e)=>{let t="";return e.forEach(i=>{t+=Na(t)&&Na(i)?i.replace(/\?/,"&"):i}),t},Ri=(e="",t)=>{if(typeof t=="function")return t;if(!t||!pe(t.url))return null;let i=t.onload||(n=>n),a=t.onerror||(n=>null);return(n,r,o,l,s,u)=>{let c=Xe(n,Mt(e,t.url),{...t,responseType:"blob"});return c.onload=d=>{let h=d.getAllResponseHeaders(),m=Yi(h).name||xt(n);r(ie("load",d.status,t.method==="HEAD"?null:ht(i(d.response),m),h))},c.onerror=d=>{o(ie("error",d.status,a(d.response)||d.statusText,d.getAllResponseHeaders()))},c.onheaders=d=>{u(ie("headers",d.status,null,d.getAllResponseHeaders()))},c.ontimeout=Qe(o),c.onprogress=l,c.onabort=s,c}},Re={QUEUED:0,COMPLETE:1,PROCESSING:2,ERROR:3,WAITING:4},ls=(e,t,i,a,n,r,o,l,s,u,c)=>{let d=[],{chunkTransferId:h,chunkServer:m,chunkSize:p,chunkRetryDelays:f}=c,g={serverId:h,aborted:!1},b=t.ondata||(A=>A),E=t.onload||((A,F)=>F==="HEAD"?A.getResponseHeader("Upload-Offset"):A.response),I=t.onerror||(A=>null),_=A=>{let F=new FormData;ce(n)&&F.append(i,JSON.stringify(n));let w=typeof t.headers=="function"?t.headers(a,n):{...t.headers,"Upload-Length":a.size},L={...t,headers:w},C=Xe(b(F),Mt(e,t.url),L);C.onload=D=>A(E(D,L.method)),C.onerror=D=>o(ie("error",D.status,I(D.response)||D.statusText,D.getAllResponseHeaders())),C.ontimeout=Qe(o)},y=A=>{let F=Mt(e,m.url,g.serverId),L={headers:typeof t.headers=="function"?t.headers(g.serverId):{...t.headers},method:"HEAD"},C=Xe(null,F,L);C.onload=D=>A(E(D,L.method)),C.onerror=D=>o(ie("error",D.status,I(D.response)||D.statusText,D.getAllResponseHeaders())),C.ontimeout=Qe(o)},T=Math.floor(a.size/p);for(let A=0;A<=T;A++){let F=A*p,w=a.slice(F,F+p,"application/offset+octet-stream");d[A]={index:A,size:w.size,offset:F,data:w,file:a,progress:0,retries:[...f],status:Re.QUEUED,error:null,request:null,timeout:null}}let v=()=>r(g.serverId),R=A=>A.status===Re.QUEUED||A.status===Re.ERROR,S=A=>{if(g.aborted)return;if(A=A||d.find(R),!A){d.every(V=>V.status===Re.COMPLETE)&&v();return}A.status=Re.PROCESSING,A.progress=null;let F=m.ondata||(V=>V),w=m.onerror||(V=>null),L=Mt(e,m.url,g.serverId),C=typeof m.headers=="function"?m.headers(A):{...m.headers,"Content-Type":"application/offset+octet-stream","Upload-Offset":A.offset,"Upload-Length":a.size,"Upload-Name":a.name},D=A.request=Xe(F(A.data),L,{...m,headers:C});D.onload=()=>{A.status=Re.COMPLETE,A.request=null,O()},D.onprogress=(V,B,j)=>{A.progress=V?B:null,x()},D.onerror=V=>{A.status=Re.ERROR,A.request=null,A.error=w(V.response)||V.statusText,P(A)||o(ie("error",V.status,w(V.response)||V.statusText,V.getAllResponseHeaders()))},D.ontimeout=V=>{A.status=Re.ERROR,A.request=null,P(A)||Qe(o)(V)},D.onabort=()=>{A.status=Re.QUEUED,A.request=null,s()}},P=A=>A.retries.length===0?!1:(A.status=Re.WAITING,clearTimeout(A.timeout),A.timeout=setTimeout(()=>{S(A)},A.retries.shift()),!0),x=()=>{let A=d.reduce((w,L)=>w===null||L.progress===null?null:w+L.progress,0);if(A===null)return l(!1,0,0);let F=d.reduce((w,L)=>w+L.size,0);l(!0,A,F)},O=()=>{d.filter(F=>F.status===Re.PROCESSING).length>=1||S()},z=()=>{d.forEach(A=>{clearTimeout(A.timeout),A.request&&A.request.abort()})};return g.serverId?y(A=>{g.aborted||(d.filter(F=>F.offset{F.status=Re.COMPLETE,F.progress=F.size}),O())}):_(A=>{g.aborted||(u(A),g.serverId=A,O())}),{abort:()=>{g.aborted=!0,z()}}},ss=(e,t,i,a)=>(n,r,o,l,s,u,c)=>{if(!n)return;let d=a.chunkUploads,h=d&&n.size>a.chunkSize,m=d&&(h||a.chunkForce);if(n instanceof Blob&&m)return ls(e,t,i,n,r,o,l,s,u,c,a);let p=t.ondata||(y=>y),f=t.onload||(y=>y),g=t.onerror||(y=>null),b=typeof t.headers=="function"?t.headers(n,r)||{}:{...t.headers},E={...t,headers:b};var I=new FormData;ce(r)&&I.append(i,JSON.stringify(r)),(n instanceof Blob?[{name:null,file:n}]:n).forEach(y=>{I.append(i,y.file,y.name===null?y.file.name:`${y.name}${y.file.name}`)});let _=Xe(p(I),Mt(e,t.url),E);return _.onload=y=>{o(ie("load",y.status,f(y.response),y.getAllResponseHeaders()))},_.onerror=y=>{l(ie("error",y.status,g(y.response)||y.statusText,y.getAllResponseHeaders()))},_.ontimeout=Qe(l),_.onprogress=s,_.onabort=u,_},cs=(e="",t,i,a)=>typeof t=="function"?(...n)=>t(i,...n,a):!t||!pe(t.url)?null:ss(e,t,i,a),At=(e="",t)=>{if(typeof t=="function")return t;if(!t||!pe(t.url))return(n,r)=>r();let i=t.onload||(n=>n),a=t.onerror||(n=>null);return(n,r,o)=>{let l=Xe(n,e+t.url,t);return l.onload=s=>{r(ie("load",s.status,i(s.response),s.getAllResponseHeaders()))},l.onerror=s=>{o(ie("error",s.status,a(s.response)||s.statusText,s.getAllResponseHeaders()))},l.ontimeout=Qe(o),l}},vn=(e=0,t=1)=>e+Math.random()*(t-e),ds=(e,t=1e3,i=0,a=25,n=250)=>{let r=null,o=Date.now(),l=()=>{let s=Date.now()-o,u=vn(a,n);s+u>t&&(u=s+u-t);let c=s/t;if(c>=1||document.hidden){e(1);return}e(c),r=setTimeout(l,u)};return t>0&&l(),{clear:()=>{clearTimeout(r)}}},us=(e,t)=>{let i={complete:!1,perceivedProgress:0,perceivedPerformanceUpdater:null,progress:null,timestamp:null,perceivedDuration:0,duration:0,request:null,response:null},{allowMinimumUploadDuration:a}=t,n=(c,d)=>{let h=()=>{i.duration===0||i.progress===null||u.fire("progress",u.getProgress())},m=()=>{i.complete=!0,u.fire("load-perceived",i.response.body)};u.fire("start"),i.timestamp=Date.now(),i.perceivedPerformanceUpdater=ds(p=>{i.perceivedProgress=p,i.perceivedDuration=Date.now()-i.timestamp,h(),i.response&&i.perceivedProgress===1&&!i.complete&&m()},a?vn(750,1500):0),i.request=e(c,d,p=>{i.response=ce(p)?p:{type:"load",code:200,body:`${p}`,headers:{}},i.duration=Date.now()-i.timestamp,i.progress=1,u.fire("load",i.response.body),(!a||a&&i.perceivedProgress===1)&&m()},p=>{i.perceivedPerformanceUpdater.clear(),u.fire("error",ce(p)?p:{type:"error",code:0,body:`${p}`})},(p,f,g)=>{i.duration=Date.now()-i.timestamp,i.progress=p?f/g:null,h()},()=>{i.perceivedPerformanceUpdater.clear(),u.fire("abort",i.response?i.response.body:null)},p=>{u.fire("transfer",p)})},r=()=>{i.request&&(i.perceivedPerformanceUpdater.clear(),i.request.abort&&i.request.abort(),i.complete=!0)},o=()=>{r(),i.complete=!1,i.perceivedProgress=0,i.progress=0,i.timestamp=null,i.perceivedDuration=0,i.duration=0,i.request=null,i.response=null},l=a?()=>i.progress?Math.min(i.progress,i.perceivedProgress):null:()=>i.progress||null,s=a?()=>Math.min(i.duration,i.perceivedDuration):()=>i.duration,u={...li(),process:n,abort:r,getProgress:l,getDuration:s,reset:o};return u},An=e=>e.substring(0,e.lastIndexOf("."))||e,hs=e=>{let t=[e.name,e.size,e.type];return e instanceof Blob||Mi(e)?t[0]=e.name||yn():Mi(e)?(t[1]=e.length,t[2]=wn(e)):pe(e)&&(t[0]=xt(e),t[1]=0,t[2]="application/octet-stream"),{name:t[0],size:t[1],type:t[2]}},Ze=e=>!!(e instanceof File||e instanceof Blob&&e.name),Ln=e=>{if(!ce(e))return e;let t=ni(e)?[]:{};for(let i in e){if(!e.hasOwnProperty(i))continue;let a=e[i];t[i]=a&&ce(a)?Ln(a):a}return t},ms=(e=null,t=null,i=null)=>{let a=ki(),n={archived:!1,frozen:!1,released:!1,source:null,file:i,serverFileReference:t,transferId:null,processingAborted:!1,status:t?k.PROCESSING_COMPLETE:k.INIT,activeLoader:null,activeProcessor:null},r=null,o={},l=R=>n.status=R,s=(R,...S)=>{n.released||n.frozen||T.fire(R,...S)},u=()=>si(n.file.name),c=()=>n.file.type,d=()=>n.file.size,h=()=>n.file,m=(R,S,P)=>{if(n.source=R,T.fireSync("init"),n.file){T.fireSync("load-skip");return}n.file=hs(R),S.on("init",()=>{s("load-init")}),S.on("meta",x=>{n.file.size=x.size,n.file.filename=x.filename,x.source&&(e=se.LIMBO,n.serverFileReference=x.source,n.status=k.PROCESSING_COMPLETE),s("load-meta")}),S.on("progress",x=>{l(k.LOADING),s("load-progress",x)}),S.on("error",x=>{l(k.LOAD_ERROR),s("load-request-error",x)}),S.on("abort",()=>{l(k.INIT),s("load-abort")}),S.on("load",x=>{n.activeLoader=null;let O=A=>{n.file=Ze(A)?A:n.file,e===se.LIMBO&&n.serverFileReference?l(k.PROCESSING_COMPLETE):l(k.IDLE),s("load")},z=A=>{n.file=x,s("load-meta"),l(k.LOAD_ERROR),s("load-file-error",A)};if(n.serverFileReference){O(x);return}P(x,O,z)}),S.setSource(R),n.activeLoader=S,S.load()},p=()=>{n.activeLoader&&n.activeLoader.load()},f=()=>{if(n.activeLoader){n.activeLoader.abort();return}l(k.INIT),s("load-abort")},g=(R,S)=>{if(n.processingAborted){n.processingAborted=!1;return}if(l(k.PROCESSING),r=null,!(n.file instanceof Blob)){T.on("load",()=>{g(R,S)});return}R.on("load",O=>{n.transferId=null,n.serverFileReference=O}),R.on("transfer",O=>{n.transferId=O}),R.on("load-perceived",O=>{n.activeProcessor=null,n.transferId=null,n.serverFileReference=O,l(k.PROCESSING_COMPLETE),s("process-complete",O)}),R.on("start",()=>{s("process-start")}),R.on("error",O=>{n.activeProcessor=null,l(k.PROCESSING_ERROR),s("process-error",O)}),R.on("abort",O=>{n.activeProcessor=null,n.serverFileReference=O,l(k.IDLE),s("process-abort"),r&&r()}),R.on("progress",O=>{s("process-progress",O)});let P=O=>{n.archived||R.process(O,{...o})},x=console.error;S(n.file,P,x),n.activeProcessor=R},b=()=>{n.processingAborted=!1,l(k.PROCESSING_QUEUED)},E=()=>new Promise(R=>{if(!n.activeProcessor){n.processingAborted=!0,l(k.IDLE),s("process-abort"),R();return}r=()=>{R()},n.activeProcessor.abort()}),I=(R,S)=>new Promise((P,x)=>{let O=n.serverFileReference!==null?n.serverFileReference:n.transferId;if(O===null){P();return}R(O,()=>{n.serverFileReference=null,n.transferId=null,P()},z=>{if(!S){P();return}l(k.PROCESSING_REVERT_ERROR),s("process-revert-error"),x(z)}),l(k.IDLE),s("process-revert")}),_=(R,S,P)=>{let x=R.split("."),O=x[0],z=x.pop(),A=o;x.forEach(F=>A=A[F]),JSON.stringify(A[z])!==JSON.stringify(S)&&(A[z]=S,s("metadata-update",{key:O,value:o[O],silent:P}))},T={id:{get:()=>a},origin:{get:()=>e,set:R=>e=R},serverId:{get:()=>n.serverFileReference},transferId:{get:()=>n.transferId},status:{get:()=>n.status},filename:{get:()=>n.file.name},filenameWithoutExtension:{get:()=>An(n.file.name)},fileExtension:{get:u},fileType:{get:c},fileSize:{get:d},file:{get:h},relativePath:{get:()=>n.file._relativePath},source:{get:()=>n.source},getMetadata:R=>Ln(R?o[R]:o),setMetadata:(R,S,P)=>{if(ce(R)){let x=R;return Object.keys(x).forEach(O=>{_(O,x[O],S)}),R}return _(R,S,P),S},extend:(R,S)=>v[R]=S,abortLoad:f,retryLoad:p,requestProcessing:b,abortProcessing:E,load:m,process:g,revert:I,...li(),freeze:()=>n.frozen=!0,release:()=>n.released=!0,released:{get:()=>n.released},archive:()=>n.archived=!0,archived:{get:()=>n.archived},setFile:R=>n.file=R},v=Ue(T);return v},ps=(e,t)=>Ne(t)?0:pe(t)?e.findIndex(i=>i.id===t):-1,Ba=(e,t)=>{let i=ps(e,t);if(!(i<0))return e[i]||null},Va=(e,t,i,a,n,r)=>{let o=Xe(null,e,{method:"GET",responseType:"blob"});return o.onload=l=>{let s=l.getAllResponseHeaders(),u=Yi(s).name||xt(e);t(ie("load",l.status,ht(l.response,u),s))},o.onerror=l=>{i(ie("error",l.status,l.statusText,l.getAllResponseHeaders()))},o.onheaders=l=>{r(ie("headers",l.status,null,l.getAllResponseHeaders()))},o.ontimeout=Qe(i),o.onprogress=a,o.onabort=n,o},Ga=e=>(e.indexOf("//")===0&&(e=location.protocol+e),e.toLowerCase().replace("blob:","").replace(/([a-z])?:\/\//,"$1").split("/")[0]),fs=e=>(e.indexOf(":")>-1||e.indexOf("//")>-1)&&Ga(location.href)!==Ga(e),jt=e=>(...t)=>qe(e)?e(...t):e,gs=e=>!Ze(e.file),yi=(e,t)=>{clearTimeout(t.listUpdateTimeout),t.listUpdateTimeout=setTimeout(()=>{e("DID_UPDATE_ITEMS",{items:Me(t.items)})},0)},Ua=(e,...t)=>new Promise(i=>{if(!e)return i(!0);let a=e(...t);if(a==null)return i(!0);if(typeof a=="boolean")return i(a);typeof a.then=="function"&&a.then(i)}),Si=(e,t)=>{e.items.sort((i,a)=>t(ge(i),ge(a)))},ye=(e,t)=>({query:i,success:a=()=>{},failure:n=()=>{},...r}={})=>{let o=je(e.items,i);if(!o){n({error:ie("error",0,"Item not found"),file:null});return}t(o,a,n,r||{})},Es=(e,t,i)=>({ABORT_ALL:()=>{Me(i.items).forEach(a=>{a.freeze(),a.abortLoad(),a.abortProcessing()})},DID_SET_FILES:({value:a=[]})=>{let n=a.map(o=>({source:o.source?o.source:o,options:o.options})),r=Me(i.items);r.forEach(o=>{n.find(l=>l.source===o.source||l.source===o.file)||e("REMOVE_ITEM",{query:o,remove:!1})}),r=Me(i.items),n.forEach((o,l)=>{r.find(s=>s.source===o.source||s.file===o.source)||e("ADD_ITEM",{...o,interactionMethod:Se.NONE,index:l})})},DID_UPDATE_ITEM_METADATA:({id:a,action:n,change:r})=>{r.silent||(clearTimeout(i.itemUpdateTimeout),i.itemUpdateTimeout=setTimeout(()=>{let o=Ba(i.items,a);if(!t("IS_ASYNC")){Le("SHOULD_PREPARE_OUTPUT",!1,{item:o,query:t,action:n,change:r}).then(c=>{let d=t("GET_BEFORE_PREPARE_FILE");d&&(c=d(o,c)),c&&e("REQUEST_PREPARE_OUTPUT",{query:a,item:o,success:h=>{e("DID_PREPARE_OUTPUT",{id:a,file:h})}},!0)});return}o.origin===se.LOCAL&&e("DID_LOAD_ITEM",{id:o.id,error:null,serverFileReference:o.source});let l=()=>{setTimeout(()=>{e("REQUEST_ITEM_PROCESSING",{query:a})},32)},s=c=>{o.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(c?l:()=>{}).catch(()=>{})},u=c=>{o.abortProcessing().then(c?l:()=>{})};if(o.status===k.PROCESSING_COMPLETE)return s(i.options.instantUpload);if(o.status===k.PROCESSING)return u(i.options.instantUpload);i.options.instantUpload&&l()},0))},MOVE_ITEM:({query:a,index:n})=>{let r=je(i.items,a);if(!r)return;let o=i.items.indexOf(r);n=Rn(n,0,i.items.length-1),o!==n&&i.items.splice(n,0,i.items.splice(o,1)[0])},SORT:({compare:a})=>{Si(i,a),e("DID_SORT_ITEMS",{items:t("GET_ACTIVE_ITEMS")})},ADD_ITEMS:({items:a,index:n,interactionMethod:r,success:o=()=>{},failure:l=()=>{}})=>{let s=n;if(n===-1||typeof n>"u"){let m=t("GET_ITEM_INSERT_LOCATION"),p=t("GET_TOTAL_ITEMS");s=m==="before"?0:p}let u=t("GET_IGNORED_FILES"),c=m=>Ze(m)?!u.includes(m.name.toLowerCase()):!Ne(m),h=a.filter(c).map(m=>new Promise((p,f)=>{e("ADD_ITEM",{interactionMethod:r,source:m.source||m,success:p,failure:f,index:s++,options:m.options||{}})}));Promise.all(h).then(o).catch(l)},ADD_ITEM:({source:a,index:n=-1,interactionMethod:r,success:o=()=>{},failure:l=()=>{},options:s={}})=>{if(Ne(a)){l({error:ie("error",0,"No source"),file:null});return}if(Ze(a)&&i.options.ignoredFiles.includes(a.name.toLowerCase()))return;if(!ql(i)){if(i.options.allowMultiple||!i.options.allowMultiple&&!i.options.allowReplace){let E=ie("warning",0,"Max files");e("DID_THROW_MAX_FILES",{source:a,error:E}),l({error:E,file:null});return}let b=Me(i.items)[0];if(b.status===k.PROCESSING_COMPLETE||b.status===k.PROCESSING_REVERT_ERROR){let E=t("GET_FORCE_REVERT");if(b.revert(At(i.options.server.url,i.options.server.revert),E).then(()=>{E&&e("ADD_ITEM",{source:a,index:n,interactionMethod:r,success:o,failure:l,options:s})}).catch(()=>{}),E)return}e("REMOVE_ITEM",{query:b.id})}let u=s.type==="local"?se.LOCAL:s.type==="limbo"?se.LIMBO:se.INPUT,c=ms(u,u===se.INPUT?null:a,s.file);Object.keys(s.metadata||{}).forEach(b=>{c.setMetadata(b,s.metadata[b])}),Je("DID_CREATE_ITEM",c,{query:t,dispatch:e});let d=t("GET_ITEM_INSERT_LOCATION");i.options.itemInsertLocationFreedom||(n=d==="before"?-1:i.items.length),Xl(i.items,c,n),qe(d)&&a&&Si(i,d);let h=c.id;c.on("init",()=>{e("DID_INIT_ITEM",{id:h})}),c.on("load-init",()=>{e("DID_START_ITEM_LOAD",{id:h})}),c.on("load-meta",()=>{e("DID_UPDATE_ITEM_META",{id:h})}),c.on("load-progress",b=>{e("DID_UPDATE_ITEM_LOAD_PROGRESS",{id:h,progress:b})}),c.on("load-request-error",b=>{let E=jt(i.options.labelFileLoadError)(b);if(b.code>=400&&b.code<500){e("DID_THROW_ITEM_INVALID",{id:h,error:b,status:{main:E,sub:`${b.code} (${b.body})`}}),l({error:b,file:ge(c)});return}e("DID_THROW_ITEM_LOAD_ERROR",{id:h,error:b,status:{main:E,sub:i.options.labelTapToRetry}})}),c.on("load-file-error",b=>{e("DID_THROW_ITEM_INVALID",{id:h,error:b.status,status:b.status}),l({error:b.status,file:ge(c)})}),c.on("load-abort",()=>{e("REMOVE_ITEM",{query:h})}),c.on("load-skip",()=>{c.on("metadata-update",b=>{Ze(c.file)&&e("DID_UPDATE_ITEM_METADATA",{id:h,change:b})}),e("COMPLETE_LOAD_ITEM",{query:h,item:c,data:{source:a,success:o}})}),c.on("load",()=>{let b=E=>{if(!E){e("REMOVE_ITEM",{query:h});return}c.on("metadata-update",I=>{e("DID_UPDATE_ITEM_METADATA",{id:h,change:I})}),Le("SHOULD_PREPARE_OUTPUT",!1,{item:c,query:t}).then(I=>{let _=t("GET_BEFORE_PREPARE_FILE");_&&(I=_(c,I));let y=()=>{e("COMPLETE_LOAD_ITEM",{query:h,item:c,data:{source:a,success:o}}),yi(e,i)};if(I){e("REQUEST_PREPARE_OUTPUT",{query:h,item:c,success:T=>{e("DID_PREPARE_OUTPUT",{id:h,file:T}),y()}},!0);return}y()})};Le("DID_LOAD_ITEM",c,{query:t,dispatch:e}).then(()=>{Ua(t("GET_BEFORE_ADD_FILE"),ge(c)).then(b)}).catch(E=>{if(!E||!E.error||!E.status)return b(!1);e("DID_THROW_ITEM_INVALID",{id:h,error:E.error,status:E.status})})}),c.on("process-start",()=>{e("DID_START_ITEM_PROCESSING",{id:h})}),c.on("process-progress",b=>{e("DID_UPDATE_ITEM_PROCESS_PROGRESS",{id:h,progress:b})}),c.on("process-error",b=>{e("DID_THROW_ITEM_PROCESSING_ERROR",{id:h,error:b,status:{main:jt(i.options.labelFileProcessingError)(b),sub:i.options.labelTapToRetry}})}),c.on("process-revert-error",b=>{e("DID_THROW_ITEM_PROCESSING_REVERT_ERROR",{id:h,error:b,status:{main:jt(i.options.labelFileProcessingRevertError)(b),sub:i.options.labelTapToRetry}})}),c.on("process-complete",b=>{e("DID_COMPLETE_ITEM_PROCESSING",{id:h,error:null,serverFileReference:b}),e("DID_DEFINE_VALUE",{id:h,value:b})}),c.on("process-abort",()=>{e("DID_ABORT_ITEM_PROCESSING",{id:h})}),c.on("process-revert",()=>{e("DID_REVERT_ITEM_PROCESSING",{id:h}),e("DID_DEFINE_VALUE",{id:h,value:null})}),e("DID_ADD_ITEM",{id:h,index:n,interactionMethod:r}),yi(e,i);let{url:m,load:p,restore:f,fetch:g}=i.options.server||{};c.load(a,os(u===se.INPUT?pe(a)&&fs(a)&&g?Ri(m,g):Va:u===se.LIMBO?Ri(m,f):Ri(m,p)),(b,E,I)=>{Le("LOAD_FILE",b,{query:t}).then(E).catch(I)})},REQUEST_PREPARE_OUTPUT:({item:a,success:n,failure:r=()=>{}})=>{let o={error:ie("error",0,"Item not found"),file:null};if(a.archived)return r(o);Le("PREPARE_OUTPUT",a.file,{query:t,item:a}).then(l=>{Le("COMPLETE_PREPARE_OUTPUT",l,{query:t,item:a}).then(s=>{if(a.archived)return r(o);n(s)})})},COMPLETE_LOAD_ITEM:({item:a,data:n})=>{let{success:r,source:o}=n,l=t("GET_ITEM_INSERT_LOCATION");if(qe(l)&&o&&Si(i,l),e("DID_LOAD_ITEM",{id:a.id,error:null,serverFileReference:a.origin===se.INPUT?null:o}),r(ge(a)),a.origin===se.LOCAL){e("DID_LOAD_LOCAL_ITEM",{id:a.id});return}if(a.origin===se.LIMBO){e("DID_COMPLETE_ITEM_PROCESSING",{id:a.id,error:null,serverFileReference:o}),e("DID_DEFINE_VALUE",{id:a.id,value:a.serverId||o});return}t("IS_ASYNC")&&i.options.instantUpload&&e("REQUEST_ITEM_PROCESSING",{query:a.id})},RETRY_ITEM_LOAD:ye(i,a=>{a.retryLoad()}),REQUEST_ITEM_PREPARE:ye(i,(a,n,r)=>{e("REQUEST_PREPARE_OUTPUT",{query:a.id,item:a,success:o=>{e("DID_PREPARE_OUTPUT",{id:a.id,file:o}),n({file:a,output:o})},failure:r},!0)}),REQUEST_ITEM_PROCESSING:ye(i,(a,n,r)=>{if(!(a.status===k.IDLE||a.status===k.PROCESSING_ERROR)){let l=()=>e("REQUEST_ITEM_PROCESSING",{query:a,success:n,failure:r}),s=()=>document.hidden?l():setTimeout(l,32);a.status===k.PROCESSING_COMPLETE||a.status===k.PROCESSING_REVERT_ERROR?a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(s).catch(()=>{}):a.status===k.PROCESSING&&a.abortProcessing().then(s);return}a.status!==k.PROCESSING_QUEUED&&(a.requestProcessing(),e("DID_REQUEST_ITEM_PROCESSING",{id:a.id}),e("PROCESS_ITEM",{query:a,success:n,failure:r},!0))}),PROCESS_ITEM:ye(i,(a,n,r)=>{let o=t("GET_MAX_PARALLEL_UPLOADS");if(t("GET_ITEMS_BY_STATUS",k.PROCESSING).length===o){i.processingQueue.push({id:a.id,success:n,failure:r});return}if(a.status===k.PROCESSING)return;let s=()=>{let c=i.processingQueue.shift();if(!c)return;let{id:d,success:h,failure:m}=c,p=je(i.items,d);if(!p||p.archived){s();return}e("PROCESS_ITEM",{query:d,success:h,failure:m},!0)};a.onOnce("process-complete",()=>{n(ge(a)),s();let c=i.options.server;if(i.options.instantUpload&&a.origin===se.LOCAL&&qe(c.remove)){let m=()=>{};a.origin=se.LIMBO,i.options.server.remove(a.source,m,m)}t("GET_ITEMS_BY_STATUS",k.PROCESSING_COMPLETE).length===i.items.length&&e("DID_COMPLETE_ITEM_PROCESSING_ALL")}),a.onOnce("process-error",c=>{r({error:c,file:ge(a)}),s()});let u=i.options;a.process(us(cs(u.server.url,u.server.process,u.name,{chunkTransferId:a.transferId,chunkServer:u.server.patch,chunkUploads:u.chunkUploads,chunkForce:u.chunkForce,chunkSize:u.chunkSize,chunkRetryDelays:u.chunkRetryDelays}),{allowMinimumUploadDuration:t("GET_ALLOW_MINIMUM_UPLOAD_DURATION")}),(c,d,h)=>{Le("PREPARE_OUTPUT",c,{query:t,item:a}).then(m=>{e("DID_PREPARE_OUTPUT",{id:a.id,file:m}),d(m)}).catch(h)})}),RETRY_ITEM_PROCESSING:ye(i,a=>{e("REQUEST_ITEM_PROCESSING",{query:a})}),REQUEST_REMOVE_ITEM:ye(i,a=>{Ua(t("GET_BEFORE_REMOVE_FILE"),ge(a)).then(n=>{n&&e("REMOVE_ITEM",{query:a})})}),RELEASE_ITEM:ye(i,a=>{a.release()}),REMOVE_ITEM:ye(i,(a,n,r,o)=>{let l=()=>{let u=a.id;Ba(i.items,u).archive(),e("DID_REMOVE_ITEM",{error:null,id:u,item:a}),yi(e,i),n(ge(a))},s=i.options.server;a.origin===se.LOCAL&&s&&qe(s.remove)&&o.remove!==!1?(e("DID_START_ITEM_REMOVE",{id:a.id}),s.remove(a.source,()=>l(),u=>{e("DID_THROW_ITEM_REMOVE_ERROR",{id:a.id,error:ie("error",0,u,null),status:{main:jt(i.options.labelFileRemoveError)(u),sub:i.options.labelTapToRetry}})})):((o.revert&&a.origin!==se.LOCAL&&a.serverId!==null||i.options.chunkUploads&&a.file.size>i.options.chunkSize||i.options.chunkUploads&&i.options.chunkForce)&&a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")),l())}),ABORT_ITEM_LOAD:ye(i,a=>{a.abortLoad()}),ABORT_ITEM_PROCESSING:ye(i,a=>{if(a.serverId){e("REVERT_ITEM_PROCESSING",{id:a.id});return}a.abortProcessing().then(()=>{i.options.instantUpload&&e("REMOVE_ITEM",{query:a.id})})}),REQUEST_REVERT_ITEM_PROCESSING:ye(i,a=>{if(!i.options.instantUpload){e("REVERT_ITEM_PROCESSING",{query:a});return}let n=l=>{l&&e("REVERT_ITEM_PROCESSING",{query:a})},r=t("GET_BEFORE_REMOVE_FILE");if(!r)return n(!0);let o=r(ge(a));if(o==null)return n(!0);if(typeof o=="boolean")return n(o);typeof o.then=="function"&&o.then(n)}),REVERT_ITEM_PROCESSING:ye(i,a=>{a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(()=>{(i.options.instantUpload||gs(a))&&e("REMOVE_ITEM",{query:a.id})}).catch(()=>{})}),SET_OPTIONS:({options:a})=>{let n=Object.keys(a),r=Ts.filter(l=>n.includes(l));[...r,...Object.keys(a).filter(l=>!r.includes(l))].forEach(l=>{e(`SET_${oi(l,"_").toUpperCase()}`,{value:a[l]})})}}),Ts=["server"],$i=e=>e,Be=e=>document.createElement(e),ae=(e,t)=>{let i=e.childNodes[0];i?t!==i.nodeValue&&(i.nodeValue=t):(i=document.createTextNode(t),e.appendChild(i))},ka=(e,t,i,a)=>{let n=(a%360-90)*Math.PI/180;return{x:e+i*Math.cos(n),y:t+i*Math.sin(n)}},Is=(e,t,i,a,n,r)=>{let o=ka(e,t,i,n),l=ka(e,t,i,a);return["M",o.x,o.y,"A",i,i,0,r,0,l.x,l.y].join(" ")},bs=(e,t,i,a,n)=>{let r=1;return n>a&&n-a<=.5&&(r=0),a>n&&a-n>=.5&&(r=0),Is(e,t,i,Math.min(.9999,a)*360,Math.min(.9999,n)*360,r)},_s=({root:e,props:t})=>{t.spin=!1,t.progress=0,t.opacity=0;let i=ei("svg");e.ref.path=ei("path",{"stroke-width":2,"stroke-linecap":"round"}),i.appendChild(e.ref.path),e.ref.svg=i,e.appendChild(i)},Rs=({root:e,props:t})=>{if(t.opacity===0)return;t.align&&(e.element.dataset.align=t.align);let i=parseInt(ne(e.ref.path,"stroke-width"),10),a=e.rect.element.width*.5,n=0,r=0;t.spin?(n=0,r=.5):(n=0,r=t.progress);let o=bs(a,a,a-i,n,r);ne(e.ref.path,"d",o),ne(e.ref.path,"stroke-opacity",t.spin||t.progress>0?1:0)},Ha=re({tag:"div",name:"progress-indicator",ignoreRectUpdate:!0,ignoreRect:!0,create:_s,write:Rs,mixins:{apis:["progress","spin","align"],styles:["opacity"],animations:{opacity:{type:"tween",duration:500},progress:{type:"spring",stiffness:.95,damping:.65,mass:10}}}}),ys=({root:e,props:t})=>{e.element.innerHTML=(t.icon||"")+`${t.label}`,t.isDisabled=!1},Ss=({root:e,props:t})=>{let{isDisabled:i}=t,a=e.query("GET_DISABLED")||t.opacity===0;a&&!i?(t.isDisabled=!0,ne(e.element,"disabled","disabled")):!a&&i&&(t.isDisabled=!1,e.element.removeAttribute("disabled"))},Mn=re({tag:"button",attributes:{type:"button"},ignoreRect:!0,ignoreRectUpdate:!0,name:"file-action-button",mixins:{apis:["label"],styles:["translateX","translateY","scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",translateX:"spring",translateY:"spring",opacity:{type:"tween",duration:250}},listeners:!0},create:ys,write:Ss}),On=(e,t=".",i=1e3,a={})=>{let{labelBytes:n="bytes",labelKilobytes:r="KB",labelMegabytes:o="MB",labelGigabytes:l="GB"}=a;e=Math.round(Math.abs(e));let s=i,u=i*i,c=i*i*i;return ee.toFixed(t).split(".").filter(a=>a!=="0").join(i),ws=({root:e,props:t})=>{let i=Be("span");i.className="filepond--file-info-main",ne(i,"aria-hidden","true"),e.appendChild(i),e.ref.fileName=i;let a=Be("span");a.className="filepond--file-info-sub",e.appendChild(a),e.ref.fileSize=a,ae(a,e.query("GET_LABEL_FILE_WAITING_FOR_SIZE")),ae(i,$i(e.query("GET_ITEM_NAME",t.id)))},Oi=({root:e,props:t})=>{ae(e.ref.fileSize,On(e.query("GET_ITEM_SIZE",t.id),".",e.query("GET_FILE_SIZE_BASE"),e.query("GET_FILE_SIZE_LABELS",e.query))),ae(e.ref.fileName,$i(e.query("GET_ITEM_NAME",t.id)))},Ya=({root:e,props:t})=>{if(mt(e.query("GET_ITEM_SIZE",t.id))){Oi({root:e,props:t});return}ae(e.ref.fileSize,e.query("GET_LABEL_FILE_SIZE_NOT_AVAILABLE"))},vs=re({name:"file-info",ignoreRect:!0,ignoreRectUpdate:!0,write:fe({DID_LOAD_ITEM:Oi,DID_UPDATE_ITEM_META:Oi,DID_THROW_ITEM_LOAD_ERROR:Ya,DID_THROW_ITEM_INVALID:Ya}),didCreateView:e=>{Je("CREATE_VIEW",{...e,view:e})},create:ws,mixins:{styles:["translateX","translateY"],animations:{translateX:"spring",translateY:"spring"}}}),xn=e=>Math.round(e*100),As=({root:e})=>{let t=Be("span");t.className="filepond--file-status-main",e.appendChild(t),e.ref.main=t;let i=Be("span");i.className="filepond--file-status-sub",e.appendChild(i),e.ref.sub=i,Pn({root:e,action:{progress:null}})},Pn=({root:e,action:t})=>{let i=t.progress===null?e.query("GET_LABEL_FILE_LOADING"):`${e.query("GET_LABEL_FILE_LOADING")} ${xn(t.progress)}%`;ae(e.ref.main,i),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},Ls=({root:e,action:t})=>{let i=t.progress===null?e.query("GET_LABEL_FILE_PROCESSING"):`${e.query("GET_LABEL_FILE_PROCESSING")} ${xn(t.progress)}%`;ae(e.ref.main,i),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},Ms=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},Os=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING_ABORTED")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_RETRY"))},xs=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING_COMPLETE")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_UNDO"))},$a=({root:e})=>{ae(e.ref.main,""),ae(e.ref.sub,"")},Lt=({root:e,action:t})=>{ae(e.ref.main,t.status.main),ae(e.ref.sub,t.status.sub)},Ps=re({name:"file-status",ignoreRect:!0,ignoreRectUpdate:!0,write:fe({DID_LOAD_ITEM:$a,DID_REVERT_ITEM_PROCESSING:$a,DID_REQUEST_ITEM_PROCESSING:Ms,DID_ABORT_ITEM_PROCESSING:Os,DID_COMPLETE_ITEM_PROCESSING:xs,DID_UPDATE_ITEM_PROCESS_PROGRESS:Ls,DID_UPDATE_ITEM_LOAD_PROGRESS:Pn,DID_THROW_ITEM_LOAD_ERROR:Lt,DID_THROW_ITEM_INVALID:Lt,DID_THROW_ITEM_PROCESSING_ERROR:Lt,DID_THROW_ITEM_PROCESSING_REVERT_ERROR:Lt,DID_THROW_ITEM_REMOVE_ERROR:Lt}),didCreateView:e=>{Je("CREATE_VIEW",{...e,view:e})},create:As,mixins:{styles:["translateX","translateY","opacity"],animations:{opacity:{type:"tween",duration:250},translateX:"spring",translateY:"spring"}}}),xi={AbortItemLoad:{label:"GET_LABEL_BUTTON_ABORT_ITEM_LOAD",action:"ABORT_ITEM_LOAD",className:"filepond--action-abort-item-load",align:"LOAD_INDICATOR_POSITION"},RetryItemLoad:{label:"GET_LABEL_BUTTON_RETRY_ITEM_LOAD",action:"RETRY_ITEM_LOAD",icon:"GET_ICON_RETRY",className:"filepond--action-retry-item-load",align:"BUTTON_PROCESS_ITEM_POSITION"},RemoveItem:{label:"GET_LABEL_BUTTON_REMOVE_ITEM",action:"REQUEST_REMOVE_ITEM",icon:"GET_ICON_REMOVE",className:"filepond--action-remove-item",align:"BUTTON_REMOVE_ITEM_POSITION"},ProcessItem:{label:"GET_LABEL_BUTTON_PROCESS_ITEM",action:"REQUEST_ITEM_PROCESSING",icon:"GET_ICON_PROCESS",className:"filepond--action-process-item",align:"BUTTON_PROCESS_ITEM_POSITION"},AbortItemProcessing:{label:"GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING",action:"ABORT_ITEM_PROCESSING",className:"filepond--action-abort-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"},RetryItemProcessing:{label:"GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING",action:"RETRY_ITEM_PROCESSING",icon:"GET_ICON_RETRY",className:"filepond--action-retry-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"},RevertItemProcessing:{label:"GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING",action:"REQUEST_REVERT_ITEM_PROCESSING",icon:"GET_ICON_UNDO",className:"filepond--action-revert-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"}},Pi=[];te(xi,e=>{Pi.push(e)});var be=e=>{if(Di(e)==="right")return 0;let t=e.ref.buttonRemoveItem.rect.element;return t.hidden?null:t.width+t.left},Ds=e=>e.ref.buttonAbortItemLoad.rect.element.width,Xt=e=>Math.floor(e.ref.buttonRemoveItem.rect.element.height/4),Fs=e=>Math.floor(e.ref.buttonRemoveItem.rect.element.left/2),Cs=e=>e.query("GET_STYLE_LOAD_INDICATOR_POSITION"),zs=e=>e.query("GET_STYLE_PROGRESS_INDICATOR_POSITION"),Di=e=>e.query("GET_STYLE_BUTTON_REMOVE_ITEM_POSITION"),Ns={buttonAbortItemLoad:{opacity:0},buttonRetryItemLoad:{opacity:0},buttonRemoveItem:{opacity:0},buttonProcessItem:{opacity:0},buttonAbortItemProcessing:{opacity:0},buttonRetryItemProcessing:{opacity:0},buttonRevertItemProcessing:{opacity:0},loadProgressIndicator:{opacity:0,align:Cs},processProgressIndicator:{opacity:0,align:zs},processingCompleteIndicator:{opacity:0,scaleX:.75,scaleY:.75},info:{translateX:0,translateY:0,opacity:0},status:{translateX:0,translateY:0,opacity:0}},qa={buttonRemoveItem:{opacity:1},buttonProcessItem:{opacity:1},info:{translateX:be},status:{translateX:be}},wi={buttonAbortItemProcessing:{opacity:1},processProgressIndicator:{opacity:1},status:{opacity:1}},st={DID_THROW_ITEM_INVALID:{buttonRemoveItem:{opacity:1},info:{translateX:be},status:{translateX:be,opacity:1}},DID_START_ITEM_LOAD:{buttonAbortItemLoad:{opacity:1},loadProgressIndicator:{opacity:1},status:{opacity:1}},DID_THROW_ITEM_LOAD_ERROR:{buttonRetryItemLoad:{opacity:1},buttonRemoveItem:{opacity:1},info:{translateX:be},status:{opacity:1}},DID_START_ITEM_REMOVE:{processProgressIndicator:{opacity:1,align:Di},info:{translateX:be},status:{opacity:0}},DID_THROW_ITEM_REMOVE_ERROR:{processProgressIndicator:{opacity:0,align:Di},buttonRemoveItem:{opacity:1},info:{translateX:be},status:{opacity:1,translateX:be}},DID_LOAD_ITEM:qa,DID_LOAD_LOCAL_ITEM:{buttonRemoveItem:{opacity:1},info:{translateX:be},status:{translateX:be}},DID_START_ITEM_PROCESSING:wi,DID_REQUEST_ITEM_PROCESSING:wi,DID_UPDATE_ITEM_PROCESS_PROGRESS:wi,DID_COMPLETE_ITEM_PROCESSING:{buttonRevertItemProcessing:{opacity:1},info:{opacity:1},status:{opacity:1}},DID_THROW_ITEM_PROCESSING_ERROR:{buttonRemoveItem:{opacity:1},buttonRetryItemProcessing:{opacity:1},status:{opacity:1},info:{translateX:be}},DID_THROW_ITEM_PROCESSING_REVERT_ERROR:{buttonRevertItemProcessing:{opacity:1},status:{opacity:1},info:{opacity:1}},DID_ABORT_ITEM_PROCESSING:{buttonRemoveItem:{opacity:1},buttonProcessItem:{opacity:1},info:{translateX:be},status:{opacity:1}},DID_REVERT_ITEM_PROCESSING:qa},Bs=re({create:({root:e})=>{e.element.innerHTML=e.query("GET_ICON_DONE")},name:"processing-complete-indicator",ignoreRect:!0,mixins:{styles:["scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",opacity:{type:"tween",duration:250}}}}),Vs=({root:e,props:t})=>{let i=Object.keys(xi).reduce((p,f)=>(p[f]={...xi[f]},p),{}),{id:a}=t,n=e.query("GET_ALLOW_REVERT"),r=e.query("GET_ALLOW_REMOVE"),o=e.query("GET_ALLOW_PROCESS"),l=e.query("GET_INSTANT_UPLOAD"),s=e.query("IS_ASYNC"),u=e.query("GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN"),c;s?o&&!n?c=p=>!/RevertItemProcessing/.test(p):!o&&n?c=p=>!/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(p):!o&&!n&&(c=p=>!/Process/.test(p)):c=p=>!/Process/.test(p);let d=c?Pi.filter(c):Pi.concat();if(l&&n&&(i.RevertItemProcessing.label="GET_LABEL_BUTTON_REMOVE_ITEM",i.RevertItemProcessing.icon="GET_ICON_REMOVE"),s&&!n){let p=st.DID_COMPLETE_ITEM_PROCESSING;p.info.translateX=Fs,p.info.translateY=Xt,p.status.translateY=Xt,p.processingCompleteIndicator={opacity:1,scaleX:1,scaleY:1}}if(s&&!o&&(["DID_START_ITEM_PROCESSING","DID_REQUEST_ITEM_PROCESSING","DID_UPDATE_ITEM_PROCESS_PROGRESS","DID_THROW_ITEM_PROCESSING_ERROR"].forEach(p=>{st[p].status.translateY=Xt}),st.DID_THROW_ITEM_PROCESSING_ERROR.status.translateX=Ds),u&&n){i.RevertItemProcessing.align="BUTTON_REMOVE_ITEM_POSITION";let p=st.DID_COMPLETE_ITEM_PROCESSING;p.info.translateX=be,p.status.translateY=Xt,p.processingCompleteIndicator={opacity:1,scaleX:1,scaleY:1}}r||(i.RemoveItem.disabled=!0),te(i,(p,f)=>{let g=e.createChildView(Mn,{label:e.query(f.label),icon:e.query(f.icon),opacity:0});d.includes(p)&&e.appendChildView(g),f.disabled&&(g.element.setAttribute("disabled","disabled"),g.element.setAttribute("hidden","hidden")),g.element.dataset.align=e.query(`GET_STYLE_${f.align}`),g.element.classList.add(f.className),g.on("click",b=>{b.stopPropagation(),!f.disabled&&e.dispatch(f.action,{query:a})}),e.ref[`button${p}`]=g}),e.ref.processingCompleteIndicator=e.appendChildView(e.createChildView(Bs)),e.ref.processingCompleteIndicator.element.dataset.align=e.query("GET_STYLE_BUTTON_PROCESS_ITEM_POSITION"),e.ref.info=e.appendChildView(e.createChildView(vs,{id:a})),e.ref.status=e.appendChildView(e.createChildView(Ps,{id:a}));let h=e.appendChildView(e.createChildView(Ha,{opacity:0,align:e.query("GET_STYLE_LOAD_INDICATOR_POSITION")}));h.element.classList.add("filepond--load-indicator"),e.ref.loadProgressIndicator=h;let m=e.appendChildView(e.createChildView(Ha,{opacity:0,align:e.query("GET_STYLE_PROGRESS_INDICATOR_POSITION")}));m.element.classList.add("filepond--process-indicator"),e.ref.processProgressIndicator=m,e.ref.activeStyles=[]},Gs=({root:e,actions:t,props:i})=>{Us({root:e,actions:t,props:i});let a=t.concat().filter(n=>/^DID_/.test(n.type)).reverse().find(n=>st[n.type]);if(a){e.ref.activeStyles=[];let n=st[a.type];te(Ns,(r,o)=>{let l=e.ref[r];te(o,(s,u)=>{let c=n[r]&&typeof n[r][s]<"u"?n[r][s]:u;e.ref.activeStyles.push({control:l,key:s,value:c})})})}e.ref.activeStyles.forEach(({control:n,key:r,value:o})=>{n[r]=typeof o=="function"?o(e):o})},Us=fe({DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING:({root:e,action:t})=>{e.ref.buttonAbortItemProcessing.label=t.value},DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD:({root:e,action:t})=>{e.ref.buttonAbortItemLoad.label=t.value},DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL:({root:e,action:t})=>{e.ref.buttonAbortItemRemoval.label=t.value},DID_REQUEST_ITEM_PROCESSING:({root:e})=>{e.ref.processProgressIndicator.spin=!0,e.ref.processProgressIndicator.progress=0},DID_START_ITEM_LOAD:({root:e})=>{e.ref.loadProgressIndicator.spin=!0,e.ref.loadProgressIndicator.progress=0},DID_START_ITEM_REMOVE:({root:e})=>{e.ref.processProgressIndicator.spin=!0,e.ref.processProgressIndicator.progress=0},DID_UPDATE_ITEM_LOAD_PROGRESS:({root:e,action:t})=>{e.ref.loadProgressIndicator.spin=!1,e.ref.loadProgressIndicator.progress=t.progress},DID_UPDATE_ITEM_PROCESS_PROGRESS:({root:e,action:t})=>{e.ref.processProgressIndicator.spin=!1,e.ref.processProgressIndicator.progress=t.progress}}),ks=re({create:Vs,write:Gs,didCreateView:e=>{Je("CREATE_VIEW",{...e,view:e})},name:"file"}),Hs=({root:e,props:t})=>{e.ref.fileName=Be("legend"),e.appendChild(e.ref.fileName),e.ref.file=e.appendChildView(e.createChildView(ks,{id:t.id})),e.ref.data=!1},Ws=({root:e,props:t})=>{ae(e.ref.fileName,$i(e.query("GET_ITEM_NAME",t.id)))},Ys=re({create:Hs,ignoreRect:!0,write:fe({DID_LOAD_ITEM:Ws}),didCreateView:e=>{Je("CREATE_VIEW",{...e,view:e})},tag:"fieldset",name:"file-wrapper"}),ja={type:"spring",damping:.6,mass:7},$s=({root:e,props:t})=>{[{name:"top"},{name:"center",props:{translateY:null,scaleY:null},mixins:{animations:{scaleY:ja},styles:["translateY","scaleY"]}},{name:"bottom",props:{translateY:null},mixins:{animations:{translateY:ja},styles:["translateY"]}}].forEach(i=>{qs(e,i,t.name)}),e.element.classList.add(`filepond--${t.name}`),e.ref.scalable=null},qs=(e,t,i)=>{let a=re({name:`panel-${t.name} filepond--${i}`,mixins:t.mixins,ignoreRectUpdate:!0}),n=e.createChildView(a,t.props);e.ref[t.name]=e.appendChildView(n)},js=({root:e,props:t})=>{if((e.ref.scalable===null||t.scalable!==e.ref.scalable)&&(e.ref.scalable=mn(t.scalable)?t.scalable:!0,e.element.dataset.scalable=e.ref.scalable),!t.height)return;let i=e.ref.top.rect.element,a=e.ref.bottom.rect.element,n=Math.max(i.height+a.height,t.height);e.ref.center.translateY=i.height,e.ref.center.scaleY=(n-i.height-a.height)/100,e.ref.bottom.translateY=n-a.height},Dn=re({name:"panel",read:({root:e,props:t})=>t.heightCurrent=e.ref.bottom.translateY,write:js,create:$s,ignoreRect:!0,mixins:{apis:["height","heightCurrent","scalable"]}}),Xs=e=>{let t=e.map(a=>a.id),i;return{setIndex:a=>{i=a},getIndex:()=>i,getItemIndex:a=>t.indexOf(a.id)}},Xa={type:"spring",stiffness:.75,damping:.45,mass:10},Qa="spring",Za={DID_START_ITEM_LOAD:"busy",DID_UPDATE_ITEM_LOAD_PROGRESS:"loading",DID_THROW_ITEM_INVALID:"load-invalid",DID_THROW_ITEM_LOAD_ERROR:"load-error",DID_LOAD_ITEM:"idle",DID_THROW_ITEM_REMOVE_ERROR:"remove-error",DID_START_ITEM_REMOVE:"busy",DID_START_ITEM_PROCESSING:"busy processing",DID_REQUEST_ITEM_PROCESSING:"busy processing",DID_UPDATE_ITEM_PROCESS_PROGRESS:"processing",DID_COMPLETE_ITEM_PROCESSING:"processing-complete",DID_THROW_ITEM_PROCESSING_ERROR:"processing-error",DID_THROW_ITEM_PROCESSING_REVERT_ERROR:"processing-revert-error",DID_ABORT_ITEM_PROCESSING:"cancelled",DID_REVERT_ITEM_PROCESSING:"idle"},Qs=({root:e,props:t})=>{if(e.ref.handleClick=a=>e.dispatch("DID_ACTIVATE_ITEM",{id:t.id}),e.element.id=`filepond--item-${t.id}`,e.element.addEventListener("click",e.ref.handleClick),e.ref.container=e.appendChildView(e.createChildView(Ys,{id:t.id})),e.ref.panel=e.appendChildView(e.createChildView(Dn,{name:"item-panel"})),e.ref.panel.height=null,t.markedForRemoval=!1,!e.query("GET_ALLOW_REORDER"))return;e.element.dataset.dragState="idle";let i=a=>{if(!a.isPrimary)return;let n=!1,r={x:a.pageX,y:a.pageY};t.dragOrigin={x:e.translateX,y:e.translateY},t.dragCenter={x:a.offsetX,y:a.offsetY};let o=Xs(e.query("GET_ACTIVE_ITEMS"));e.dispatch("DID_GRAB_ITEM",{id:t.id,dragState:o});let l=d=>{if(!d.isPrimary)return;d.stopPropagation(),d.preventDefault(),t.dragOffset={x:d.pageX-r.x,y:d.pageY-r.y},t.dragOffset.x*t.dragOffset.x+t.dragOffset.y*t.dragOffset.y>16&&!n&&(n=!0,e.element.removeEventListener("click",e.ref.handleClick)),e.dispatch("DID_DRAG_ITEM",{id:t.id,dragState:o})},s=d=>{d.isPrimary&&(t.dragOffset={x:d.pageX-r.x,y:d.pageY-r.y},c())},u=()=>{c()},c=()=>{document.removeEventListener("pointercancel",u),document.removeEventListener("pointermove",l),document.removeEventListener("pointerup",s),e.dispatch("DID_DROP_ITEM",{id:t.id,dragState:o}),n&&setTimeout(()=>e.element.addEventListener("click",e.ref.handleClick),0)};document.addEventListener("pointercancel",u),document.addEventListener("pointermove",l),document.addEventListener("pointerup",s)};e.element.addEventListener("pointerdown",i)},Zs=fe({DID_UPDATE_PANEL_HEIGHT:({root:e,action:t})=>{e.height=t.height}}),Ks=fe({DID_GRAB_ITEM:({root:e,props:t})=>{t.dragOrigin={x:e.translateX,y:e.translateY}},DID_DRAG_ITEM:({root:e})=>{e.element.dataset.dragState="drag"},DID_DROP_ITEM:({root:e,props:t})=>{t.dragOffset=null,t.dragOrigin=null,e.element.dataset.dragState="drop"}},({root:e,actions:t,props:i,shouldOptimize:a})=>{e.element.dataset.dragState==="drop"&&e.scaleX<=1&&(e.element.dataset.dragState="idle");let n=t.concat().filter(o=>/^DID_/.test(o.type)).reverse().find(o=>Za[o.type]);n&&n.type!==i.currentState&&(i.currentState=n.type,e.element.dataset.filepondItemState=Za[i.currentState]||"");let r=e.query("GET_ITEM_PANEL_ASPECT_RATIO")||e.query("GET_PANEL_ASPECT_RATIO");r?a||(e.height=e.rect.element.width*r):(Zs({root:e,actions:t,props:i}),!e.height&&e.ref.container.rect.element.height>0&&(e.height=e.ref.container.rect.element.height)),a&&(e.ref.panel.height=null),e.ref.panel.height=e.height}),Js=re({create:Qs,write:Ks,destroy:({root:e,props:t})=>{e.element.removeEventListener("click",e.ref.handleClick),e.dispatch("RELEASE_ITEM",{query:t.id})},tag:"li",name:"item",mixins:{apis:["id","interactionMethod","markedForRemoval","spawnDate","dragCenter","dragOrigin","dragOffset"],styles:["translateX","translateY","scaleX","scaleY","opacity","height"],animations:{scaleX:Qa,scaleY:Qa,translateX:Xa,translateY:Xa,opacity:{type:"tween",duration:150}}}}),qi=(e,t)=>Math.max(1,Math.floor((e+1)/t)),ji=(e,t,i)=>{if(!i)return;let a=e.rect.element.width,n=t.length,r=null;if(n===0||i.topE){if(i.left{ne(e.element,"role","list"),e.ref.lastItemSpanwDate=Date.now()},tc=({root:e,action:t})=>{let{id:i,index:a,interactionMethod:n}=t;e.ref.addIndex=a;let r=Date.now(),o=r,l=1;if(n!==Se.NONE){l=0;let s=e.query("GET_ITEM_INSERT_INTERVAL"),u=r-e.ref.lastItemSpanwDate;o=u{e.dragOffset?(e.translateX=null,e.translateY=null,e.translateX=e.dragOrigin.x+e.dragOffset.x,e.translateY=e.dragOrigin.y+e.dragOffset.y,e.scaleX=1.025,e.scaleY=1.025):(e.translateX=t,e.translateY=i,Date.now()>e.spawnDate&&(e.opacity===0&&ic(e,t,i,a,n),e.scaleX=1,e.scaleY=1,e.opacity=1))},ic=(e,t,i,a,n)=>{e.interactionMethod===Se.NONE?(e.translateX=null,e.translateX=t,e.translateY=null,e.translateY=i):e.interactionMethod===Se.DROP?(e.translateX=null,e.translateX=t-a*20,e.translateY=null,e.translateY=i-n*10,e.scaleX=.8,e.scaleY=.8):e.interactionMethod===Se.BROWSE?(e.translateY=null,e.translateY=i-30):e.interactionMethod===Se.API&&(e.translateX=null,e.translateX=t-30,e.translateY=null)},ac=({root:e,action:t})=>{let{id:i}=t,a=e.childViews.find(n=>n.id===i);a&&(a.scaleX=.9,a.scaleY=.9,a.opacity=0,a.markedForRemoval=!0)},vi=e=>e.rect.element.height+e.rect.element.marginBottom*.5+e.rect.element.marginTop*.5,nc=e=>e.rect.element.width+e.rect.element.marginLeft*.5+e.rect.element.marginRight*.5,rc=({root:e,action:t})=>{let{id:i,dragState:a}=t,n=e.query("GET_ITEM",{id:i}),r=e.childViews.find(g=>g.id===i),o=e.childViews.length,l=a.getItemIndex(n);if(!r)return;let s={x:r.dragOrigin.x+r.dragOffset.x+r.dragCenter.x,y:r.dragOrigin.y+r.dragOffset.y+r.dragCenter.y},u=vi(r),c=nc(r),d=Math.floor(e.rect.outer.width/c);d>o&&(d=o);let h=Math.floor(o/d+1);Qt.setHeight=u*h,Qt.setWidth=c*d;var m={y:Math.floor(s.y/u),x:Math.floor(s.x/c),getGridIndex:function(){return s.y>Qt.getHeight||s.y<0||s.x>Qt.getWidth||s.x<0?l:this.y*d+this.x},getColIndex:function(){let b=e.query("GET_ACTIVE_ITEMS"),E=e.childViews.filter(x=>x.rect.element.height),I=b.map(x=>E.find(O=>O.id===x.id)),_=I.findIndex(x=>x===r),y=vi(r),T=I.length,v=T,R=0,S=0,P=0;for(let x=0;xx){if(s.y1?m.getGridIndex():m.getColIndex();e.dispatch("MOVE_ITEM",{query:r,index:p});let f=a.getIndex();if(f===void 0||f!==p){if(a.setIndex(p),f===void 0)return;e.dispatch("DID_REORDER_ITEMS",{items:e.query("GET_ACTIVE_ITEMS"),origin:l,target:p})}},oc=fe({DID_ADD_ITEM:tc,DID_REMOVE_ITEM:ac,DID_DRAG_ITEM:rc}),lc=({root:e,props:t,actions:i,shouldOptimize:a})=>{oc({root:e,props:t,actions:i});let{dragCoordinates:n}=t,r=e.rect.element.width,o=e.childViews.filter(I=>I.rect.element.height),l=e.query("GET_ACTIVE_ITEMS").map(I=>o.find(_=>_.id===I.id)).filter(I=>I),s=n?ji(e,l,n):null,u=e.ref.addIndex||null;e.ref.addIndex=null;let c=0,d=0,h=0;if(l.length===0)return;let m=l[0].rect.element,p=m.marginTop+m.marginBottom,f=m.marginLeft+m.marginRight,g=m.width+f,b=m.height+p,E=qi(r,g);if(E===1){let I=0,_=0;l.forEach((y,T)=>{if(s){let S=T-s;S===-2?_=-p*.25:S===-1?_=-p*.75:S===0?_=p*.75:S===1?_=p*.25:_=0}a&&(y.translateX=null,y.translateY=null),y.markedForRemoval||Ka(y,0,I+_);let R=(y.rect.element.height+p)*(y.markedForRemoval?y.opacity:1);I+=R})}else{let I=0,_=0;l.forEach((y,T)=>{T===s&&(c=1),T===u&&(h+=1),y.markedForRemoval&&y.opacity<.5&&(d-=1);let v=T+h+c+d,R=v%E,S=Math.floor(v/E),P=R*g,x=S*b,O=Math.sign(P-I),z=Math.sign(x-_);I=P,_=x,!y.markedForRemoval&&(a&&(y.translateX=null,y.translateY=null),Ka(y,P,x,O,z))})}},sc=(e,t)=>t.filter(i=>i.data&&i.data.id?e.id===i.data.id:!0),cc=re({create:ec,write:lc,tag:"ul",name:"list",didWriteView:({root:e})=>{e.childViews.filter(t=>t.markedForRemoval&&t.opacity===0&&t.resting).forEach(t=>{t._destroy(),e.removeChildView(t)})},filterFrameActionsForChild:sc,mixins:{apis:["dragCoordinates"]}}),dc=({root:e,props:t})=>{e.ref.list=e.appendChildView(e.createChildView(cc)),t.dragCoordinates=null,t.overflowing=!1},uc=({root:e,props:t,action:i})=>{e.query("GET_ITEM_INSERT_LOCATION_FREEDOM")&&(t.dragCoordinates={left:i.position.scopeLeft-e.ref.list.rect.element.left,top:i.position.scopeTop-(e.rect.outer.top+e.rect.element.marginTop+e.rect.element.scrollTop)})},hc=({props:e})=>{e.dragCoordinates=null},mc=fe({DID_DRAG:uc,DID_END_DRAG:hc}),pc=({root:e,props:t,actions:i})=>{if(mc({root:e,props:t,actions:i}),e.ref.list.dragCoordinates=t.dragCoordinates,t.overflowing&&!t.overflow&&(t.overflowing=!1,e.element.dataset.state="",e.height=null),t.overflow){let a=Math.round(t.overflow);a!==e.height&&(t.overflowing=!0,e.element.dataset.state="overflow",e.height=a)}},fc=re({create:dc,write:pc,name:"list-scroller",mixins:{apis:["overflow","dragCoordinates"],styles:["height","translateY"],animations:{translateY:"spring"}}}),Oe=(e,t,i,a="")=>{i?ne(e,t,a):e.removeAttribute(t)},gc=e=>{if(!(!e||e.value==="")){try{e.value=""}catch{}if(e.value){let t=Be("form"),i=e.parentNode,a=e.nextSibling;t.appendChild(e),t.reset(),a?i.insertBefore(e,a):i.appendChild(e)}}},Ec=({root:e,props:t})=>{e.element.id=`filepond--browser-${t.id}`,ne(e.element,"name",e.query("GET_NAME")),ne(e.element,"aria-controls",`filepond--assistant-${t.id}`),ne(e.element,"aria-labelledby",`filepond--drop-label-${t.id}`),Fn({root:e,action:{value:e.query("GET_ACCEPTED_FILE_TYPES")}}),Cn({root:e,action:{value:e.query("GET_ALLOW_MULTIPLE")}}),zn({root:e,action:{value:e.query("GET_ALLOW_DIRECTORIES_ONLY")}}),Fi({root:e}),Nn({root:e,action:{value:e.query("GET_REQUIRED")}}),Bn({root:e,action:{value:e.query("GET_CAPTURE_METHOD")}}),e.ref.handleChange=i=>{if(!e.element.value)return;let a=Array.from(e.element.files).map(n=>(n._relativePath=n.webkitRelativePath,n));setTimeout(()=>{t.onload(a),gc(e.element)},250)},e.element.addEventListener("change",e.ref.handleChange)},Fn=({root:e,action:t})=>{e.query("GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE")&&Oe(e.element,"accept",!!t.value,t.value?t.value.join(","):"")},Cn=({root:e,action:t})=>{Oe(e.element,"multiple",t.value)},zn=({root:e,action:t})=>{Oe(e.element,"webkitdirectory",t.value)},Fi=({root:e})=>{let t=e.query("GET_DISABLED"),i=e.query("GET_ALLOW_BROWSE"),a=t||!i;Oe(e.element,"disabled",a)},Nn=({root:e,action:t})=>{t.value?e.query("GET_TOTAL_ITEMS")===0&&Oe(e.element,"required",!0):Oe(e.element,"required",!1)},Bn=({root:e,action:t})=>{Oe(e.element,"capture",!!t.value,t.value===!0?"":t.value)},Ja=({root:e})=>{let{element:t}=e;e.query("GET_TOTAL_ITEMS")>0?(Oe(t,"required",!1),Oe(t,"name",!1)):(Oe(t,"name",!0,e.query("GET_NAME")),e.query("GET_CHECK_VALIDITY")&&t.setCustomValidity(""),e.query("GET_REQUIRED")&&Oe(t,"required",!0))},Tc=({root:e})=>{e.query("GET_CHECK_VALIDITY")&&e.element.setCustomValidity(e.query("GET_LABEL_INVALID_FIELD"))},Ic=re({tag:"input",name:"browser",ignoreRect:!0,ignoreRectUpdate:!0,attributes:{type:"file"},create:Ec,destroy:({root:e})=>{e.element.removeEventListener("change",e.ref.handleChange)},write:fe({DID_LOAD_ITEM:Ja,DID_REMOVE_ITEM:Ja,DID_THROW_ITEM_INVALID:Tc,DID_SET_DISABLED:Fi,DID_SET_ALLOW_BROWSE:Fi,DID_SET_ALLOW_DIRECTORIES_ONLY:zn,DID_SET_ALLOW_MULTIPLE:Cn,DID_SET_ACCEPTED_FILE_TYPES:Fn,DID_SET_CAPTURE_METHOD:Bn,DID_SET_REQUIRED:Nn})}),en={ENTER:13,SPACE:32},bc=({root:e,props:t})=>{let i=Be("label");ne(i,"for",`filepond--browser-${t.id}`),ne(i,"id",`filepond--drop-label-${t.id}`),ne(i,"aria-hidden","true"),e.ref.handleKeyDown=a=>{(a.keyCode===en.ENTER||a.keyCode===en.SPACE)&&(a.preventDefault(),e.ref.label.click())},e.ref.handleClick=a=>{a.target===i||i.contains(a.target)||e.ref.label.click()},i.addEventListener("keydown",e.ref.handleKeyDown),e.element.addEventListener("click",e.ref.handleClick),Vn(i,t.caption),e.appendChild(i),e.ref.label=i},Vn=(e,t)=>{e.innerHTML=t;let i=e.querySelector(".filepond--label-action");return i&&ne(i,"tabindex","0"),t},_c=re({name:"drop-label",ignoreRect:!0,create:bc,destroy:({root:e})=>{e.ref.label.addEventListener("keydown",e.ref.handleKeyDown),e.element.removeEventListener("click",e.ref.handleClick)},write:fe({DID_SET_LABEL_IDLE:({root:e,action:t})=>{Vn(e.ref.label,t.value)}}),mixins:{styles:["opacity","translateX","translateY"],animations:{opacity:{type:"tween",duration:150},translateX:"spring",translateY:"spring"}}}),Rc=re({name:"drip-blob",ignoreRect:!0,mixins:{styles:["translateX","translateY","scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",translateX:"spring",translateY:"spring",opacity:{type:"tween",duration:250}}}}),yc=({root:e})=>{let t=e.rect.element.width*.5,i=e.rect.element.height*.5;e.ref.blob=e.appendChildView(e.createChildView(Rc,{opacity:0,scaleX:2.5,scaleY:2.5,translateX:t,translateY:i}))},Sc=({root:e,action:t})=>{if(!e.ref.blob){yc({root:e});return}e.ref.blob.translateX=t.position.scopeLeft,e.ref.blob.translateY=t.position.scopeTop,e.ref.blob.scaleX=1,e.ref.blob.scaleY=1,e.ref.blob.opacity=1},wc=({root:e})=>{e.ref.blob&&(e.ref.blob.opacity=0)},vc=({root:e})=>{e.ref.blob&&(e.ref.blob.scaleX=2.5,e.ref.blob.scaleY=2.5,e.ref.blob.opacity=0)},Ac=({root:e,props:t,actions:i})=>{Lc({root:e,props:t,actions:i});let{blob:a}=e.ref;i.length===0&&a&&a.opacity===0&&(e.removeChildView(a),e.ref.blob=null)},Lc=fe({DID_DRAG:Sc,DID_DROP:vc,DID_END_DRAG:wc}),Mc=re({ignoreRect:!0,ignoreRectUpdate:!0,name:"drip",write:Ac}),Gn=(e,t)=>{try{let i=new DataTransfer;t.forEach(a=>{a instanceof File?i.items.add(a):i.items.add(new File([a],a.name,{type:a.type}))}),e.files=i.files}catch{return!1}return!0},Oc=({root:e})=>e.ref.fields={},ci=(e,t)=>e.ref.fields[t],Xi=e=>{e.query("GET_ACTIVE_ITEMS").forEach(t=>{e.ref.fields[t.id]&&e.element.appendChild(e.ref.fields[t.id])})},tn=({root:e})=>Xi(e),xc=({root:e,action:t})=>{let n=!(e.query("GET_ITEM",t.id).origin===se.LOCAL)&&e.query("SHOULD_UPDATE_FILE_INPUT"),r=Be("input");r.type=n?"file":"hidden",r.name=e.query("GET_NAME"),r.disabled=e.query("GET_DISABLED"),e.ref.fields[t.id]=r,Xi(e)},Pc=({root:e,action:t})=>{let i=ci(e,t.id);if(!i||(t.serverFileReference!==null&&(i.value=t.serverFileReference),!e.query("SHOULD_UPDATE_FILE_INPUT")))return;let a=e.query("GET_ITEM",t.id);Gn(i,[a.file])},Dc=({root:e,action:t})=>{e.query("SHOULD_UPDATE_FILE_INPUT")&&setTimeout(()=>{let i=ci(e,t.id);i&&Gn(i,[t.file])},0)},Fc=({root:e})=>{e.element.disabled=e.query("GET_DISABLED")},Cc=({root:e,action:t})=>{let i=ci(e,t.id);i&&(i.parentNode&&i.parentNode.removeChild(i),delete e.ref.fields[t.id])},zc=({root:e,action:t})=>{let i=ci(e,t.id);i&&(t.value===null?i.removeAttribute("value"):i.type!="file"&&(i.value=t.value),Xi(e))},Nc=fe({DID_SET_DISABLED:Fc,DID_ADD_ITEM:xc,DID_LOAD_ITEM:Pc,DID_REMOVE_ITEM:Cc,DID_DEFINE_VALUE:zc,DID_PREPARE_OUTPUT:Dc,DID_REORDER_ITEMS:tn,DID_SORT_ITEMS:tn}),Bc=re({tag:"fieldset",name:"data",create:Oc,write:Nc,ignoreRect:!0}),Vc=e=>"getRootNode"in e?e.getRootNode():document,Gc=["jpg","jpeg","png","gif","bmp","webp","svg","tiff"],Uc=["css","csv","html","txt"],kc={zip:"zip|compressed",epub:"application/epub+zip"},Un=(e="")=>(e=e.toLowerCase(),Gc.includes(e)?"image/"+(e==="jpg"?"jpeg":e==="svg"?"svg+xml":e):Uc.includes(e)?"text/"+e:kc[e]||""),Qi=e=>new Promise((t,i)=>{let a=Qc(e);if(a.length&&!Hc(e))return t(a);Wc(e).then(t)}),Hc=e=>e.files?e.files.length>0:!1,Wc=e=>new Promise((t,i)=>{let a=(e.items?Array.from(e.items):[]).filter(n=>Yc(n)).map(n=>$c(n));if(!a.length){t(e.files?Array.from(e.files):[]);return}Promise.all(a).then(n=>{let r=[];n.forEach(o=>{r.push.apply(r,o)}),t(r.filter(o=>o).map(o=>(o._relativePath||(o._relativePath=o.webkitRelativePath),o)))}).catch(console.error)}),Yc=e=>{if(kn(e)){let t=Zi(e);if(t)return t.isFile||t.isDirectory}return e.kind==="file"},$c=e=>new Promise((t,i)=>{if(Xc(e)){qc(Zi(e)).then(t).catch(i);return}t([e.getAsFile()])}),qc=e=>new Promise((t,i)=>{let a=[],n=0,r=0,o=()=>{r===0&&n===0&&t(a)},l=s=>{n++;let u=s.createReader(),c=()=>{u.readEntries(d=>{if(d.length===0){n--,o();return}d.forEach(h=>{h.isDirectory?l(h):(r++,h.file(m=>{let p=jc(m);h.fullPath&&(p._relativePath=h.fullPath),a.push(p),r--,o()}))}),c()},i)};c()};l(e)}),jc=e=>{if(e.type.length)return e;let t=e.lastModifiedDate,i=e.name,a=Un(si(e.name));return a.length&&(e=e.slice(0,e.size,a),e.name=i,e.lastModifiedDate=t),e},Xc=e=>kn(e)&&(Zi(e)||{}).isDirectory,kn=e=>"webkitGetAsEntry"in e,Zi=e=>e.webkitGetAsEntry(),Qc=e=>{let t=[];try{if(t=Kc(e),t.length)return t;t=Zc(e)}catch{}return t},Zc=e=>{let t=e.getData("url");return typeof t=="string"&&t.length?[t]:[]},Kc=e=>{let t=e.getData("text/html");if(typeof t=="string"&&t.length){let i=t.match(/src\s*=\s*"(.+?)"/);if(i)return[i[1]]}return[]},ii=[],Ke=e=>({pageLeft:e.pageX,pageTop:e.pageY,scopeLeft:e.offsetX||e.layerX,scopeTop:e.offsetY||e.layerY}),Jc=(e,t,i)=>{let a=ed(t),n={element:e,filterElement:i,state:null,ondrop:()=>{},onenter:()=>{},ondrag:()=>{},onexit:()=>{},onload:()=>{},allowdrop:()=>{}};return n.destroy=a.addListener(n),n},ed=e=>{let t=ii.find(a=>a.element===e);if(t)return t;let i=td(e);return ii.push(i),i},td=e=>{let t=[],i={dragenter:ad,dragover:nd,dragleave:od,drop:rd},a={};te(i,(r,o)=>{a[r]=o(e,t),e.addEventListener(r,a[r],!1)});let n={element:e,addListener:r=>(t.push(r),()=>{t.splice(t.indexOf(r),1),t.length===0&&(ii.splice(ii.indexOf(n),1),te(i,o=>{e.removeEventListener(o,a[o],!1)}))})};return n},id=(e,t)=>("elementFromPoint"in e||(e=document),e.elementFromPoint(t.x,t.y)),Ki=(e,t)=>{let i=Vc(t),a=id(i,{x:e.pageX-window.pageXOffset,y:e.pageY-window.pageYOffset});return a===t||t.contains(a)},Hn=null,Zt=(e,t)=>{try{e.dropEffect=t}catch{}},ad=(e,t)=>i=>{i.preventDefault(),Hn=i.target,t.forEach(a=>{let{element:n,onenter:r}=a;Ki(i,n)&&(a.state="enter",r(Ke(i)))})},nd=(e,t)=>i=>{i.preventDefault();let a=i.dataTransfer;Qi(a).then(n=>{let r=!1;t.some(o=>{let{filterElement:l,element:s,onenter:u,onexit:c,ondrag:d,allowdrop:h}=o;Zt(a,"copy");let m=h(n);if(!m){Zt(a,"none");return}if(Ki(i,s)){if(r=!0,o.state===null){o.state="enter",u(Ke(i));return}if(o.state="over",l&&!m){Zt(a,"none");return}d(Ke(i))}else l&&!r&&Zt(a,"none"),o.state&&(o.state=null,c(Ke(i)))})})},rd=(e,t)=>i=>{i.preventDefault();let a=i.dataTransfer;Qi(a).then(n=>{t.forEach(r=>{let{filterElement:o,element:l,ondrop:s,onexit:u,allowdrop:c}=r;if(r.state=null,!(o&&!Ki(i,l))){if(!c(n))return u(Ke(i));s(Ke(i),n)}})})},od=(e,t)=>i=>{Hn===i.target&&t.forEach(a=>{let{onexit:n}=a;a.state=null,n(Ke(i))})},ld=(e,t,i)=>{e.classList.add("filepond--hopper");let{catchesDropsOnPage:a,requiresDropOnElement:n,filterItems:r=c=>c}=i,o=Jc(e,a?document.documentElement:e,n),l="",s="";o.allowdrop=c=>t(r(c)),o.ondrop=(c,d)=>{let h=r(d);if(!t(h)){u.ondragend(c);return}s="drag-drop",u.onload(h,c)},o.ondrag=c=>{u.ondrag(c)},o.onenter=c=>{s="drag-over",u.ondragstart(c)},o.onexit=c=>{s="drag-exit",u.ondragend(c)};let u={updateHopperState:()=>{l!==s&&(e.dataset.hopperState=s,l=s)},onload:()=>{},ondragstart:()=>{},ondrag:()=>{},ondragend:()=>{},destroy:()=>{o.destroy()}};return u},Ci=!1,ct=[],Wn=e=>{let t=document.activeElement;if(t&&/textarea|input/i.test(t.nodeName)){let i=!1,a=t;for(;a!==document.body;){if(a.classList.contains("filepond--root")){i=!0;break}a=a.parentNode}if(!i)return}Qi(e.clipboardData).then(i=>{i.length&&ct.forEach(a=>a(i))})},sd=e=>{ct.includes(e)||(ct.push(e),!Ci&&(Ci=!0,document.addEventListener("paste",Wn)))},cd=e=>{Hi(ct,ct.indexOf(e)),ct.length===0&&(document.removeEventListener("paste",Wn),Ci=!1)},dd=()=>{let e=i=>{t.onload(i)},t={destroy:()=>{cd(e)},onload:()=>{}};return sd(e),t},ud=({root:e,props:t})=>{e.element.id=`filepond--assistant-${t.id}`,ne(e.element,"role","status"),ne(e.element,"aria-live","polite"),ne(e.element,"aria-relevant","additions")},an=null,nn=null,Ai=[],di=(e,t)=>{e.element.textContent=t},hd=e=>{e.element.textContent=""},Yn=(e,t,i)=>{let a=e.query("GET_TOTAL_ITEMS");di(e,`${i} ${t}, ${a} ${a===1?e.query("GET_LABEL_FILE_COUNT_SINGULAR"):e.query("GET_LABEL_FILE_COUNT_PLURAL")}`),clearTimeout(nn),nn=setTimeout(()=>{hd(e)},1500)},$n=e=>e.element.parentNode.contains(document.activeElement),md=({root:e,action:t})=>{if(!$n(e))return;e.element.textContent="";let i=e.query("GET_ITEM",t.id);Ai.push(i.filename),clearTimeout(an),an=setTimeout(()=>{Yn(e,Ai.join(", "),e.query("GET_LABEL_FILE_ADDED")),Ai.length=0},750)},pd=({root:e,action:t})=>{if(!$n(e))return;let i=t.item;Yn(e,i.filename,e.query("GET_LABEL_FILE_REMOVED"))},fd=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename,n=e.query("GET_LABEL_FILE_PROCESSING_COMPLETE");di(e,`${a} ${n}`)},rn=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename,n=e.query("GET_LABEL_FILE_PROCESSING_ABORTED");di(e,`${a} ${n}`)},Kt=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename;di(e,`${t.status.main} ${a} ${t.status.sub}`)},gd=re({create:ud,ignoreRect:!0,ignoreRectUpdate:!0,write:fe({DID_LOAD_ITEM:md,DID_REMOVE_ITEM:pd,DID_COMPLETE_ITEM_PROCESSING:fd,DID_ABORT_ITEM_PROCESSING:rn,DID_REVERT_ITEM_PROCESSING:rn,DID_THROW_ITEM_REMOVE_ERROR:Kt,DID_THROW_ITEM_LOAD_ERROR:Kt,DID_THROW_ITEM_INVALID:Kt,DID_THROW_ITEM_PROCESSING_ERROR:Kt}),tag:"span",name:"assistant"}),qn=(e,t="-")=>e.replace(new RegExp(`${t}.`,"g"),i=>i.charAt(1).toUpperCase()),jn=(e,t=16,i=!0)=>{let a=Date.now(),n=null;return(...r)=>{clearTimeout(n);let o=Date.now()-a,l=()=>{a=Date.now(),e(...r)};oe.preventDefault(),Td=({root:e,props:t})=>{let i=e.query("GET_ID");i&&(e.element.id=i);let a=e.query("GET_CLASS_NAME");a&&a.split(" ").filter(s=>s.length).forEach(s=>{e.element.classList.add(s)}),e.ref.label=e.appendChildView(e.createChildView(_c,{...t,translateY:null,caption:e.query("GET_LABEL_IDLE")})),e.ref.list=e.appendChildView(e.createChildView(fc,{translateY:null})),e.ref.panel=e.appendChildView(e.createChildView(Dn,{name:"panel-root"})),e.ref.assistant=e.appendChildView(e.createChildView(gd,{...t})),e.ref.data=e.appendChildView(e.createChildView(Bc,{...t})),e.ref.measure=Be("div"),e.ref.measure.style.height="100%",e.element.appendChild(e.ref.measure),e.ref.bounds=null,e.query("GET_STYLES").filter(s=>!Ne(s.value)).map(({name:s,value:u})=>{e.element.dataset[s]=u}),e.ref.widthPrevious=null,e.ref.widthUpdated=jn(()=>{e.ref.updateHistory=[],e.dispatch("DID_RESIZE_ROOT")},250),e.ref.previousAspectRatio=null,e.ref.updateHistory=[];let n=window.matchMedia("(pointer: fine) and (hover: hover)").matches,r="PointerEvent"in window;e.query("GET_ALLOW_REORDER")&&r&&!n&&(e.element.addEventListener("touchmove",ai,{passive:!1}),e.element.addEventListener("gesturestart",ai));let o=e.query("GET_CREDITS");if(o.length===2){let s=document.createElement("a");s.className="filepond--credits",s.setAttribute("aria-hidden","true"),s.href=o[0],s.tabindex=-1,s.target="_blank",s.rel="noopener noreferrer",s.textContent=o[1],e.element.appendChild(s),e.ref.credits=s}},Id=({root:e,props:t,actions:i})=>{if(Sd({root:e,props:t,actions:i}),i.filter(T=>/^DID_SET_STYLE_/.test(T.type)).filter(T=>!Ne(T.data.value)).map(({type:T,data:v})=>{let R=qn(T.substring(8).toLowerCase(),"_");e.element.dataset[R]=v.value,e.invalidateLayout()}),e.rect.element.hidden)return;e.rect.element.width!==e.ref.widthPrevious&&(e.ref.widthPrevious=e.rect.element.width,e.ref.widthUpdated());let a=e.ref.bounds;a||(a=e.ref.bounds=Rd(e),e.element.removeChild(e.ref.measure),e.ref.measure=null);let{hopper:n,label:r,list:o,panel:l}=e.ref;n&&n.updateHopperState();let s=e.query("GET_PANEL_ASPECT_RATIO"),u=e.query("GET_ALLOW_MULTIPLE"),c=e.query("GET_TOTAL_ITEMS"),d=u?e.query("GET_MAX_FILES")||Ed:1,h=c===d,m=i.find(T=>T.type==="DID_ADD_ITEM");if(h&&m){let T=m.data.interactionMethod;r.opacity=0,u?r.translateY=-40:T===Se.API?r.translateX=40:T===Se.BROWSE?r.translateY=40:r.translateY=30}else h||(r.opacity=1,r.translateX=0,r.translateY=0);let p=bd(e),f=_d(e),g=r.rect.element.height,b=!u||h?0:g,E=h?o.rect.element.marginTop:0,I=c===0?0:o.rect.element.marginBottom,_=b+E+f.visual+I,y=b+E+f.bounds+I;if(o.translateY=Math.max(0,b-o.rect.element.marginTop)-p.top,s){let T=e.rect.element.width,v=T*s;s!==e.ref.previousAspectRatio&&(e.ref.previousAspectRatio=s,e.ref.updateHistory=[]);let R=e.ref.updateHistory;R.push(T);let S=2;if(R.length>S*2){let x=R.length,O=x-10,z=0;for(let A=x;A>=O;A--)if(R[A]===R[A-2]&&z++,z>=S)return}l.scalable=!1,l.height=v;let P=v-b-(I-p.bottom)-(h?E:0);f.visual>P?o.overflow=P:o.overflow=null,e.height=v}else if(a.fixedHeight){l.scalable=!1;let T=a.fixedHeight-b-(I-p.bottom)-(h?E:0);f.visual>T?o.overflow=T:o.overflow=null}else if(a.cappedHeight){let T=_>=a.cappedHeight,v=Math.min(a.cappedHeight,_);l.scalable=!0,l.height=T?v:v-p.top-p.bottom;let R=v-b-(I-p.bottom)-(h?E:0);_>a.cappedHeight&&f.visual>R?o.overflow=R:o.overflow=null,e.height=Math.min(a.cappedHeight,y-p.top-p.bottom)}else{let T=c>0?p.top+p.bottom:0;l.scalable=!0,l.height=Math.max(g,_-T),e.height=Math.max(g,y-T)}e.ref.credits&&l.heightCurrent&&(e.ref.credits.style.transform=`translateY(${l.heightCurrent}px)`)},bd=e=>{let t=e.ref.list.childViews[0].childViews[0];return t?{top:t.rect.element.marginTop,bottom:t.rect.element.marginBottom}:{top:0,bottom:0}},_d=e=>{let t=0,i=0,a=e.ref.list,n=a.childViews[0],r=n.childViews.filter(E=>E.rect.element.height),o=e.query("GET_ACTIVE_ITEMS").map(E=>r.find(I=>I.id===E.id)).filter(E=>E);if(o.length===0)return{visual:t,bounds:i};let l=n.rect.element.width,s=ji(n,o,a.dragCoordinates),u=o[0].rect.element,c=u.marginTop+u.marginBottom,d=u.marginLeft+u.marginRight,h=u.width+d,m=u.height+c,p=typeof s<"u"&&s>=0?1:0,f=o.find(E=>E.markedForRemoval&&E.opacity<.45)?-1:0,g=o.length+p+f,b=qi(l,h);return b===1?o.forEach(E=>{let I=E.rect.element.height+c;i+=I,t+=I*E.opacity}):(i=Math.ceil(g/b)*m,t=i),{visual:t,bounds:i}},Rd=e=>{let t=e.ref.measureHeight||null;return{cappedHeight:parseInt(e.style.maxHeight,10)||null,fixedHeight:t===0?null:t}},Ji=(e,t)=>{let i=e.query("GET_ALLOW_REPLACE"),a=e.query("GET_ALLOW_MULTIPLE"),n=e.query("GET_TOTAL_ITEMS"),r=e.query("GET_MAX_FILES"),o=t.length;return!a&&o>1?(e.dispatch("DID_THROW_MAX_FILES",{source:t,error:ie("warning",0,"Max files")}),!0):(r=a?r:1,!a&&i?!1:mt(r)&&n+o>r?(e.dispatch("DID_THROW_MAX_FILES",{source:t,error:ie("warning",0,"Max files")}),!0):!1)},yd=(e,t,i)=>{let a=e.childViews[0];return ji(a,t,{left:i.scopeLeft-a.rect.element.left,top:i.scopeTop-(e.rect.outer.top+e.rect.element.marginTop+e.rect.element.scrollTop)})},on=e=>{let t=e.query("GET_ALLOW_DROP"),i=e.query("GET_DISABLED"),a=t&&!i;if(a&&!e.ref.hopper){let n=ld(e.element,r=>{let o=e.query("GET_BEFORE_DROP_FILE")||(()=>!0);return e.query("GET_DROP_VALIDATION")?r.every(s=>Je("ALLOW_HOPPER_ITEM",s,{query:e.query}).every(u=>u===!0)&&o(s)):!0},{filterItems:r=>{let o=e.query("GET_IGNORED_FILES");return r.filter(l=>Ze(l)?!o.includes(l.name.toLowerCase()):!0)},catchesDropsOnPage:e.query("GET_DROP_ON_PAGE"),requiresDropOnElement:e.query("GET_DROP_ON_ELEMENT")});n.onload=(r,o)=>{let s=e.ref.list.childViews[0].childViews.filter(c=>c.rect.element.height),u=e.query("GET_ACTIVE_ITEMS").map(c=>s.find(d=>d.id===c.id)).filter(c=>c);Le("ADD_ITEMS",r,{dispatch:e.dispatch}).then(c=>{if(Ji(e,c))return!1;e.dispatch("ADD_ITEMS",{items:c,index:yd(e.ref.list,u,o),interactionMethod:Se.DROP})}),e.dispatch("DID_DROP",{position:o}),e.dispatch("DID_END_DRAG",{position:o})},n.ondragstart=r=>{e.dispatch("DID_START_DRAG",{position:r})},n.ondrag=jn(r=>{e.dispatch("DID_DRAG",{position:r})}),n.ondragend=r=>{e.dispatch("DID_END_DRAG",{position:r})},e.ref.hopper=n,e.ref.drip=e.appendChildView(e.createChildView(Mc))}else!a&&e.ref.hopper&&(e.ref.hopper.destroy(),e.ref.hopper=null,e.removeChildView(e.ref.drip))},ln=(e,t)=>{let i=e.query("GET_ALLOW_BROWSE"),a=e.query("GET_DISABLED"),n=i&&!a;n&&!e.ref.browser?e.ref.browser=e.appendChildView(e.createChildView(Ic,{...t,onload:r=>{Le("ADD_ITEMS",r,{dispatch:e.dispatch}).then(o=>{if(Ji(e,o))return!1;e.dispatch("ADD_ITEMS",{items:o,index:-1,interactionMethod:Se.BROWSE})})}}),0):!n&&e.ref.browser&&(e.removeChildView(e.ref.browser),e.ref.browser=null)},sn=e=>{let t=e.query("GET_ALLOW_PASTE"),i=e.query("GET_DISABLED"),a=t&&!i;a&&!e.ref.paster?(e.ref.paster=dd(),e.ref.paster.onload=n=>{Le("ADD_ITEMS",n,{dispatch:e.dispatch}).then(r=>{if(Ji(e,r))return!1;e.dispatch("ADD_ITEMS",{items:r,index:-1,interactionMethod:Se.PASTE})})}):!a&&e.ref.paster&&(e.ref.paster.destroy(),e.ref.paster=null)},Sd=fe({DID_SET_ALLOW_BROWSE:({root:e,props:t})=>{ln(e,t)},DID_SET_ALLOW_DROP:({root:e})=>{on(e)},DID_SET_ALLOW_PASTE:({root:e})=>{sn(e)},DID_SET_DISABLED:({root:e,props:t})=>{on(e),sn(e),ln(e,t),e.query("GET_DISABLED")?e.element.dataset.disabled="disabled":e.element.removeAttribute("data-disabled")}}),wd=re({name:"root",read:({root:e})=>{e.ref.measure&&(e.ref.measureHeight=e.ref.measure.offsetHeight)},create:Td,write:Id,destroy:({root:e})=>{e.ref.paster&&e.ref.paster.destroy(),e.ref.hopper&&e.ref.hopper.destroy(),e.element.removeEventListener("touchmove",ai),e.element.removeEventListener("gesturestart",ai)},mixins:{styles:["height"]}}),vd=(e={})=>{let t=null,i=ti(),a=Ho(Ll(i),[$l,xl(i)],[Es,Ol(i)]);a.dispatch("SET_OPTIONS",{options:e});let n=()=>{document.hidden||a.dispatch("KICK")};document.addEventListener("visibilitychange",n);let r=null,o=!1,l=!1,s=null,u=null,c=()=>{o||(o=!0),clearTimeout(r),r=setTimeout(()=>{o=!1,s=null,u=null,l&&(l=!1,a.dispatch("DID_STOP_RESIZE"))},500)};window.addEventListener("resize",c);let d=wd(a,{id:ki()}),h=!1,m=!1,p={_read:()=>{o&&(u=window.innerWidth,s||(s=u),!l&&u!==s&&(a.dispatch("DID_START_RESIZE"),l=!0)),m&&h&&(h=d.element.offsetParent===null),!h&&(d._read(),m=d.rect.element.hidden)},_write:w=>{let L=a.processActionQueue().filter(C=>!/^SET_/.test(C.type));h&&!L.length||(E(L),h=d._write(w,L,l),Fl(a.query("GET_ITEMS")),h&&a.processDispatchQueue())}},f=w=>L=>{let C={type:w};if(!L)return C;if(L.hasOwnProperty("error")&&(C.error=L.error?{...L.error}:null),L.status&&(C.status={...L.status}),L.file&&(C.output=L.file),L.source)C.file=L.source;else if(L.item||L.id){let D=L.item?L.item:a.query("GET_ITEM",L.id);C.file=D?ge(D):null}return L.items&&(C.items=L.items.map(ge)),/progress/.test(w)&&(C.progress=L.progress),L.hasOwnProperty("origin")&&L.hasOwnProperty("target")&&(C.origin=L.origin,C.target=L.target),C},g={DID_DESTROY:f("destroy"),DID_INIT:f("init"),DID_THROW_MAX_FILES:f("warning"),DID_INIT_ITEM:f("initfile"),DID_START_ITEM_LOAD:f("addfilestart"),DID_UPDATE_ITEM_LOAD_PROGRESS:f("addfileprogress"),DID_LOAD_ITEM:f("addfile"),DID_THROW_ITEM_INVALID:[f("error"),f("addfile")],DID_THROW_ITEM_LOAD_ERROR:[f("error"),f("addfile")],DID_THROW_ITEM_REMOVE_ERROR:[f("error"),f("removefile")],DID_PREPARE_OUTPUT:f("preparefile"),DID_START_ITEM_PROCESSING:f("processfilestart"),DID_UPDATE_ITEM_PROCESS_PROGRESS:f("processfileprogress"),DID_ABORT_ITEM_PROCESSING:f("processfileabort"),DID_COMPLETE_ITEM_PROCESSING:f("processfile"),DID_COMPLETE_ITEM_PROCESSING_ALL:f("processfiles"),DID_REVERT_ITEM_PROCESSING:f("processfilerevert"),DID_THROW_ITEM_PROCESSING_ERROR:[f("error"),f("processfile")],DID_REMOVE_ITEM:f("removefile"),DID_UPDATE_ITEMS:f("updatefiles"),DID_ACTIVATE_ITEM:f("activatefile"),DID_REORDER_ITEMS:f("reorderfiles")},b=w=>{let L={pond:F,...w};delete L.type,d.element.dispatchEvent(new CustomEvent(`FilePond:${w.type}`,{detail:L,bubbles:!0,cancelable:!0,composed:!0}));let C=[];w.hasOwnProperty("error")&&C.push(w.error),w.hasOwnProperty("file")&&C.push(w.file);let D=["type","error","file"];Object.keys(w).filter(B=>!D.includes(B)).forEach(B=>C.push(w[B])),F.fire(w.type,...C);let V=a.query(`GET_ON${w.type.toUpperCase()}`);V&&V(...C)},E=w=>{w.length&&w.filter(L=>g[L.type]).forEach(L=>{let C=g[L.type];(Array.isArray(C)?C:[C]).forEach(D=>{L.type==="DID_INIT_ITEM"?b(D(L.data)):setTimeout(()=>{b(D(L.data))},0)})})},I=w=>a.dispatch("SET_OPTIONS",{options:w}),_=w=>a.query("GET_ACTIVE_ITEM",w),y=w=>new Promise((L,C)=>{a.dispatch("REQUEST_ITEM_PREPARE",{query:w,success:D=>{L(D)},failure:D=>{C(D)}})}),T=(w,L={})=>new Promise((C,D)=>{S([{source:w,options:L}],{index:L.index}).then(V=>C(V&&V[0])).catch(D)}),v=w=>w.file&&w.id,R=(w,L)=>(typeof w=="object"&&!v(w)&&!L&&(L=w,w=void 0),a.dispatch("REMOVE_ITEM",{...L,query:w}),a.query("GET_ACTIVE_ITEM",w)===null),S=(...w)=>new Promise((L,C)=>{let D=[],V={};if(ni(w[0]))D.push.apply(D,w[0]),Object.assign(V,w[1]||{});else{let B=w[w.length-1];typeof B=="object"&&!(B instanceof Blob)&&Object.assign(V,w.pop()),D.push(...w)}a.dispatch("ADD_ITEMS",{items:D,index:V.index,interactionMethod:Se.API,success:L,failure:C})}),P=()=>a.query("GET_ACTIVE_ITEMS"),x=w=>new Promise((L,C)=>{a.dispatch("REQUEST_ITEM_PROCESSING",{query:w,success:D=>{L(D)},failure:D=>{C(D)}})}),O=(...w)=>{let L=Array.isArray(w[0])?w[0]:w,C=L.length?L:P();return Promise.all(C.map(y))},z=(...w)=>{let L=Array.isArray(w[0])?w[0]:w;if(!L.length){let C=P().filter(D=>!(D.status===k.IDLE&&D.origin===se.LOCAL)&&D.status!==k.PROCESSING&&D.status!==k.PROCESSING_COMPLETE&&D.status!==k.PROCESSING_REVERT_ERROR);return Promise.all(C.map(x))}return Promise.all(L.map(x))},A=(...w)=>{let L=Array.isArray(w[0])?w[0]:w,C;typeof L[L.length-1]=="object"?C=L.pop():Array.isArray(w[0])&&(C=w[1]);let D=P();return L.length?L.map(B=>$e(B)?D[B]?D[B].id:null:B).filter(B=>B).map(B=>R(B,C)):Promise.all(D.map(B=>R(B,C)))},F={...li(),...p,...Ml(a,i),setOptions:I,addFile:T,addFiles:S,getFile:_,processFile:x,prepareFile:y,removeFile:R,moveFile:(w,L)=>a.dispatch("MOVE_ITEM",{query:w,index:L}),getFiles:P,processFiles:z,removeFiles:A,prepareFiles:O,sort:w=>a.dispatch("SORT",{compare:w}),browse:()=>{var w=d.element.querySelector("input[type=file]");w&&w.click()},destroy:()=>{F.fire("destroy",d.element),a.dispatch("ABORT_ALL"),d._destroy(),window.removeEventListener("resize",c),document.removeEventListener("visibilitychange",n),a.dispatch("DID_DESTROY")},insertBefore:w=>Oa(d.element,w),insertAfter:w=>xa(d.element,w),appendTo:w=>w.appendChild(d.element),replaceElement:w=>{Oa(d.element,w),w.parentNode.removeChild(w),t=w},restoreElement:()=>{t&&(xa(t,d.element),d.element.parentNode.removeChild(d.element),t=null)},isAttachedTo:w=>d.element===w||t===w,element:{get:()=>d.element},status:{get:()=>a.query("GET_STATUS")}};return a.dispatch("DID_INIT"),Ue(F)},Xn=(e={})=>{let t={};return te(ti(),(a,n)=>{t[a]=n[0]}),vd({...t,...e})},Ad=e=>e.charAt(0).toLowerCase()+e.slice(1),Ld=e=>qn(e.replace(/^data-/,"")),Qn=(e,t)=>{te(t,(i,a)=>{te(e,(n,r)=>{let o=new RegExp(i);if(!o.test(n)||(delete e[n],a===!1))return;if(pe(a)){e[a]=r;return}let s=a.group;ce(a)&&!e[s]&&(e[s]={}),e[s][Ad(n.replace(o,""))]=r}),a.mapping&&Qn(e[a.group],a.mapping)})},Md=(e,t={})=>{let i=[];te(e.attributes,n=>{i.push(e.attributes[n])});let a=i.filter(n=>n.name).reduce((n,r)=>{let o=ne(e,r.name);return n[Ld(r.name)]=o===r.name?!0:o,n},{});return Qn(a,t),a},Od=(e,t={})=>{let i={"^class$":"className","^multiple$":"allowMultiple","^capture$":"captureMethod","^webkitdirectory$":"allowDirectoriesOnly","^server":{group:"server",mapping:{"^process":{group:"process"},"^revert":{group:"revert"},"^fetch":{group:"fetch"},"^restore":{group:"restore"},"^load":{group:"load"}}},"^type$":!1,"^files$":!1};Je("SET_ATTRIBUTE_TO_OPTION_MAP",i);let a={...t},n=Md(e.nodeName==="FIELDSET"?e.querySelector("input[type=file]"):e,i);Object.keys(n).forEach(o=>{ce(n[o])?(ce(a[o])||(a[o]={}),Object.assign(a[o],n[o])):a[o]=n[o]}),a.files=(t.files||[]).concat(Array.from(e.querySelectorAll("input:not([type=file])")).map(o=>({source:o.value,options:{type:o.dataset.type}})));let r=Xn(a);return e.files&&Array.from(e.files).forEach(o=>{r.addFile(o)}),r.replaceElement(e),r},xd=(...e)=>ko(e[0])?Od(...e):Xn(...e),Pd=["fire","_read","_write"],cn=e=>{let t={};return En(e,t,Pd),t},Dd=(e,t)=>e.replace(/(?:{([a-zA-Z]+)})/g,(i,a)=>t[a]),Fd=e=>{let t=new Blob(["(",e.toString(),")()"],{type:"application/javascript"}),i=URL.createObjectURL(t),a=new Worker(i);return{transfer:(n,r)=>{},post:(n,r,o)=>{let l=ki();a.onmessage=s=>{s.data.id===l&&r(s.data.message)},a.postMessage({id:l,message:n},o)},terminate:()=>{a.terminate(),URL.revokeObjectURL(i)}}},Cd=e=>new Promise((t,i)=>{let a=new Image;a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Zn=(e,t)=>{let i=e.slice(0,e.size,e.type);return i.lastModifiedDate=e.lastModifiedDate,i.name=t,i},zd=e=>Zn(e,e.name),dn=[],Nd=e=>{if(dn.includes(e))return;dn.push(e);let t=e({addFilter:zl,utils:{Type:M,forin:te,isString:pe,isFile:Ze,toNaturalFileSize:On,replaceInString:Dd,getExtensionFromFilename:si,getFilenameWithoutExtension:An,guesstimateMimeType:Un,getFileFromBlob:ht,getFilenameFromURL:xt,createRoute:fe,createWorker:Fd,createView:re,createItemAPI:ge,loadImage:Cd,copyFile:zd,renameFile:Zn,createBlob:Sn,applyFilterChain:Le,text:ae,getNumericAspectRatioFromString:bn},views:{fileActionButton:Mn}});Nl(t.options)},Bd=()=>Object.prototype.toString.call(window.operamini)==="[object OperaMini]",Vd=()=>"Promise"in window,Gd=()=>"slice"in Blob.prototype,Ud=()=>"URL"in window&&"createObjectURL"in window.URL,kd=()=>"visibilityState"in document,Hd=()=>"performance"in window,Wd=()=>"supports"in(window.CSS||{}),Yd=()=>/MSIE|Trident/.test(window.navigator.userAgent),zi=(()=>{let e=un()&&!Bd()&&kd()&&Vd()&&Gd()&&Ud()&&Hd()&&(Wd()||Yd());return()=>e})(),Ge={apps:[]},$d="filepond",et=()=>{},Kn={},pt={},Pt={},Ni={},dt=et,ut=et,Bi=et,Vi=et,_e=et,Gi=et,Ot=et;if(zi()){pl(()=>{Ge.apps.forEach(i=>i._read())},i=>{Ge.apps.forEach(a=>a._write(i))});let e=()=>{document.dispatchEvent(new CustomEvent("FilePond:loaded",{detail:{supported:zi,create:dt,destroy:ut,parse:Bi,find:Vi,registerPlugin:_e,setOptions:Ot}})),document.removeEventListener("DOMContentLoaded",e)};document.readyState!=="loading"?setTimeout(()=>e(),0):document.addEventListener("DOMContentLoaded",e);let t=()=>te(ti(),(i,a)=>{Ni[i]=a[1]});Kn={..._n},Pt={...se},pt={...k},Ni={},t(),dt=(...i)=>{let a=xd(...i);return a.on("destroy",ut),Ge.apps.push(a),cn(a)},ut=i=>{let a=Ge.apps.findIndex(n=>n.isAttachedTo(i));return a>=0?(Ge.apps.splice(a,1)[0].restoreElement(),!0):!1},Bi=i=>Array.from(i.querySelectorAll(`.${$d}`)).filter(r=>!Ge.apps.find(o=>o.isAttachedTo(r))).map(r=>dt(r)),Vi=i=>{let a=Ge.apps.find(n=>n.isAttachedTo(i));return a?cn(a):null},_e=(...i)=>{i.forEach(Nd),t()},Gi=()=>{let i={};return te(ti(),(a,n)=>{i[a]=n[0]}),i},Ot=i=>(ce(i)&&(Ge.apps.forEach(a=>{a.setOptions(i)}),Bl(i)),Gi())}function Jn(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,a)}return i}function fr(e){for(var t=1;te.length)&&(t=e.length);for(var i=0,a=new Array(t);i
',du=Number.isNaN||De.isNaN;function Y(e){return typeof e=="number"&&!du(e)}var hr=function(t){return t>0&&t<1/0};function ta(e){return typeof e>"u"}function at(e){return aa(e)==="object"&&e!==null}var uu=Object.prototype.hasOwnProperty;function gt(e){if(!at(e))return!1;try{var t=e.constructor,i=t.prototype;return t&&i&&uu.call(i,"isPrototypeOf")}catch{return!1}}function Ee(e){return typeof e=="function"}var hu=Array.prototype.slice;function wr(e){return Array.from?Array.from(e):hu.call(e)}function oe(e,t){return e&&Ee(t)&&(Array.isArray(e)||Y(e.length)?wr(e).forEach(function(i,a){t.call(e,i,a,e)}):at(e)&&Object.keys(e).forEach(function(i){t.call(e,e[i],i,e)})),e}var K=Object.assign||function(t){for(var i=arguments.length,a=new Array(i>1?i-1:0),n=1;n0&&a.forEach(function(r){at(r)&&Object.keys(r).forEach(function(o){t[o]=r[o]})}),t},mu=/\.\d*(?:0|9){12}\d*$/;function Tt(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return mu.test(e)?Math.round(e*t)/t:e}var pu=/^width|height|left|top|marginLeft|marginTop$/;function He(e,t){var i=e.style;oe(t,function(a,n){pu.test(n)&&Y(a)&&(a="".concat(a,"px")),i[n]=a})}function fu(e,t){return e.classList?e.classList.contains(t):e.className.indexOf(t)>-1}function de(e,t){if(t){if(Y(e.length)){oe(e,function(a){de(a,t)});return}if(e.classList){e.classList.add(t);return}var i=e.className.trim();i?i.indexOf(t)<0&&(e.className="".concat(i," ").concat(t)):e.className=t}}function Pe(e,t){if(t){if(Y(e.length)){oe(e,function(i){Pe(i,t)});return}if(e.classList){e.classList.remove(t);return}e.className.indexOf(t)>=0&&(e.className=e.className.replace(t,""))}}function Et(e,t,i){if(t){if(Y(e.length)){oe(e,function(a){Et(a,t,i)});return}i?de(e,t):Pe(e,t)}}var gu=/([a-z\d])([A-Z])/g;function Ea(e){return e.replace(gu,"$1-$2").toLowerCase()}function ha(e,t){return at(e[t])?e[t]:e.dataset?e.dataset[t]:e.getAttribute("data-".concat(Ea(t)))}function Vt(e,t,i){at(i)?e[t]=i:e.dataset?e.dataset[t]=i:e.setAttribute("data-".concat(Ea(t)),i)}function Eu(e,t){if(at(e[t]))try{delete e[t]}catch{e[t]=void 0}else if(e.dataset)try{delete e.dataset[t]}catch{e.dataset[t]=void 0}else e.removeAttribute("data-".concat(Ea(t)))}var vr=/\s\s*/,Ar=function(){var e=!1;if(pi){var t=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return e=!0,t},set:function(r){t=r}});De.addEventListener("test",i,a),De.removeEventListener("test",i,a)}return e}();function xe(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i;t.trim().split(vr).forEach(function(r){if(!Ar){var o=e.listeners;o&&o[r]&&o[r][i]&&(n=o[r][i],delete o[r][i],Object.keys(o[r]).length===0&&delete o[r],Object.keys(o).length===0&&delete e.listeners)}e.removeEventListener(r,n,a)})}function we(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i;t.trim().split(vr).forEach(function(r){if(a.once&&!Ar){var o=e.listeners,l=o===void 0?{}:o;n=function(){delete l[r][i],e.removeEventListener(r,n,a);for(var u=arguments.length,c=new Array(u),d=0;dMath.abs(i)&&(i=h)})}),i}function hi(e,t){var i=e.pageX,a=e.pageY,n={endX:i,endY:a};return t?n:fr({startX:i,startY:a},n)}function bu(e){var t=0,i=0,a=0;return oe(e,function(n){var r=n.startX,o=n.startY;t+=r,i+=o,a+=1}),t/=a,i/=a,{pageX:t,pageY:i}}function We(e){var t=e.aspectRatio,i=e.height,a=e.width,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",r=hr(a),o=hr(i);if(r&&o){var l=i*t;n==="contain"&&l>a||n==="cover"&&l90?{width:s,height:l}:{width:l,height:s}}function Ru(e,t,i,a){var n=t.aspectRatio,r=t.naturalWidth,o=t.naturalHeight,l=t.rotate,s=l===void 0?0:l,u=t.scaleX,c=u===void 0?1:u,d=t.scaleY,h=d===void 0?1:d,m=i.aspectRatio,p=i.naturalWidth,f=i.naturalHeight,g=a.fillColor,b=g===void 0?"transparent":g,E=a.imageSmoothingEnabled,I=E===void 0?!0:E,_=a.imageSmoothingQuality,y=_===void 0?"low":_,T=a.maxWidth,v=T===void 0?1/0:T,R=a.maxHeight,S=R===void 0?1/0:R,P=a.minWidth,x=P===void 0?0:P,O=a.minHeight,z=O===void 0?0:O,A=document.createElement("canvas"),F=A.getContext("2d"),w=We({aspectRatio:m,width:v,height:S}),L=We({aspectRatio:m,width:x,height:z},"cover"),C=Math.min(w.width,Math.max(L.width,p)),D=Math.min(w.height,Math.max(L.height,f)),V=We({aspectRatio:n,width:v,height:S}),B=We({aspectRatio:n,width:x,height:z},"cover"),j=Math.min(V.width,Math.max(B.width,r)),q=Math.min(V.height,Math.max(B.height,o)),X=[-j/2,-q/2,j,q];return A.width=Tt(C),A.height=Tt(D),F.fillStyle=b,F.fillRect(0,0,C,D),F.save(),F.translate(C/2,D/2),F.rotate(s*Math.PI/180),F.scale(c,h),F.imageSmoothingEnabled=I,F.imageSmoothingQuality=y,F.drawImage.apply(F,[e].concat(gr(X.map(function(ue){return Math.floor(Tt(ue))})))),F.restore(),A}var Mr=String.fromCharCode;function yu(e,t,i){var a="";i+=t;for(var n=t;n0;)i.push(Mr.apply(null,wr(n.subarray(0,a)))),n=n.subarray(a);return"data:".concat(t,";base64,").concat(btoa(i.join("")))}function Au(e){var t=new DataView(e),i;try{var a,n,r;if(t.getUint8(0)===255&&t.getUint8(1)===216)for(var o=t.byteLength,l=2;l+1=8&&(r=u+d)}}}if(r){var h=t.getUint16(r,a),m,p;for(p=0;p=0?r:yr),height:Math.max(a.offsetHeight,o>=0?o:Sr)};this.containerData=l,He(n,{width:l.width,height:l.height}),de(t,Te),Pe(n,Te)},initCanvas:function(){var t=this.containerData,i=this.imageData,a=this.options.viewMode,n=Math.abs(i.rotate)%180===90,r=n?i.naturalHeight:i.naturalWidth,o=n?i.naturalWidth:i.naturalHeight,l=r/o,s=t.width,u=t.height;t.height*l>t.width?a===3?s=t.height*l:u=t.width/l:a===3?u=t.width/l:s=t.height*l;var c={aspectRatio:l,naturalWidth:r,naturalHeight:o,width:s,height:u};this.canvasData=c,this.limited=a===1||a===2,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=K({},c)},limitCanvas:function(t,i){var a=this.options,n=this.containerData,r=this.canvasData,o=this.cropBoxData,l=a.viewMode,s=r.aspectRatio,u=this.cropped&&o;if(t){var c=Number(a.minCanvasWidth)||0,d=Number(a.minCanvasHeight)||0;l>1?(c=Math.max(c,n.width),d=Math.max(d,n.height),l===3&&(d*s>c?c=d*s:d=c/s)):l>0&&(c?c=Math.max(c,u?o.width:0):d?d=Math.max(d,u?o.height:0):u&&(c=o.width,d=o.height,d*s>c?c=d*s:d=c/s));var h=We({aspectRatio:s,width:c,height:d});c=h.width,d=h.height,r.minWidth=c,r.minHeight=d,r.maxWidth=1/0,r.maxHeight=1/0}if(i)if(l>(u?0:1)){var m=n.width-r.width,p=n.height-r.height;r.minLeft=Math.min(0,m),r.minTop=Math.min(0,p),r.maxLeft=Math.max(0,m),r.maxTop=Math.max(0,p),u&&this.limited&&(r.minLeft=Math.min(o.left,o.left+(o.width-r.width)),r.minTop=Math.min(o.top,o.top+(o.height-r.height)),r.maxLeft=o.left,r.maxTop=o.top,l===2&&(r.width>=n.width&&(r.minLeft=Math.min(0,m),r.maxLeft=Math.max(0,m)),r.height>=n.height&&(r.minTop=Math.min(0,p),r.maxTop=Math.max(0,p))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=n.width,r.maxTop=n.height},renderCanvas:function(t,i){var a=this.canvasData,n=this.imageData;if(i){var r=_u({width:n.naturalWidth*Math.abs(n.scaleX||1),height:n.naturalHeight*Math.abs(n.scaleY||1),degree:n.rotate||0}),o=r.width,l=r.height,s=a.width*(o/a.naturalWidth),u=a.height*(l/a.naturalHeight);a.left-=(s-a.width)/2,a.top-=(u-a.height)/2,a.width=s,a.height=u,a.aspectRatio=o/l,a.naturalWidth=o,a.naturalHeight=l,this.limitCanvas(!0,!1)}(a.width>a.maxWidth||a.widtha.maxHeight||a.heighti.width?r.height=r.width/a:r.width=r.height*a),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*n),r.height=Math.max(r.minHeight,r.height*n),r.left=i.left+(i.width-r.width)/2,r.top=i.top+(i.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=K({},r)},limitCropBox:function(t,i){var a=this.options,n=this.containerData,r=this.canvasData,o=this.cropBoxData,l=this.limited,s=a.aspectRatio;if(t){var u=Number(a.minCropBoxWidth)||0,c=Number(a.minCropBoxHeight)||0,d=l?Math.min(n.width,r.width,r.width+r.left,n.width-r.left):n.width,h=l?Math.min(n.height,r.height,r.height+r.top,n.height-r.top):n.height;u=Math.min(u,n.width),c=Math.min(c,n.height),s&&(u&&c?c*s>u?c=u/s:u=c*s:u?c=u/s:c&&(u=c*s),h*s>d?h=d/s:d=h*s),o.minWidth=Math.min(u,d),o.minHeight=Math.min(c,h),o.maxWidth=d,o.maxHeight=h}i&&(l?(o.minLeft=Math.max(0,r.left),o.minTop=Math.max(0,r.top),o.maxLeft=Math.min(n.width,r.left+r.width)-o.width,o.maxTop=Math.min(n.height,r.top+r.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=n.width-o.width,o.maxTop=n.height-o.height))},renderCropBox:function(){var t=this.options,i=this.containerData,a=this.cropBoxData;(a.width>a.maxWidth||a.widtha.maxHeight||a.height=i.width&&a.height>=i.height?Ir:fa),He(this.cropBox,K({width:a.width,height:a.height},Nt({translateX:a.left,translateY:a.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),It(this.element,la,this.getData())}},Ou={initPreview:function(){var t=this.element,i=this.crossOrigin,a=this.options.preview,n=i?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",o=document.createElement("img");if(i&&(o.crossOrigin=i),o.src=n,o.alt=r,this.viewBox.appendChild(o),this.viewBoxImage=o,!!a){var l=a;typeof a=="string"?l=t.ownerDocument.querySelectorAll(a):a.querySelector&&(l=[a]),this.previews=l,oe(l,function(s){var u=document.createElement("img");Vt(s,ui,{width:s.offsetWidth,height:s.offsetHeight,html:s.innerHTML}),i&&(u.crossOrigin=i),u.src=n,u.alt=r,u.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',s.innerHTML="",s.appendChild(u)})}},resetPreview:function(){oe(this.previews,function(t){var i=ha(t,ui);He(t,{width:i.width,height:i.height}),t.innerHTML=i.html,Eu(t,ui)})},preview:function(){var t=this.imageData,i=this.canvasData,a=this.cropBoxData,n=a.width,r=a.height,o=t.width,l=t.height,s=a.left-i.left-t.left,u=a.top-i.top-t.top;!this.cropped||this.disabled||(He(this.viewBoxImage,K({width:o,height:l},Nt(K({translateX:-s,translateY:-u},t)))),oe(this.previews,function(c){var d=ha(c,ui),h=d.width,m=d.height,p=h,f=m,g=1;n&&(g=h/n,f=r*g),r&&f>m&&(g=m/r,p=n*g,f=m),He(c,{width:p,height:f}),He(c.getElementsByTagName("img")[0],K({width:o*g,height:l*g},Nt(K({translateX:-s*g,translateY:-u*g},t))))}))}},xu={bind:function(){var t=this.element,i=this.options,a=this.cropper;Ee(i.cropstart)&&we(t,da,i.cropstart),Ee(i.cropmove)&&we(t,ca,i.cropmove),Ee(i.cropend)&&we(t,sa,i.cropend),Ee(i.crop)&&we(t,la,i.crop),Ee(i.zoom)&&we(t,ua,i.zoom),we(a,nr,this.onCropStart=this.cropStart.bind(this)),i.zoomable&&i.zoomOnWheel&&we(a,cr,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),i.toggleDragModeOnDblclick&&we(a,ar,this.onDblclick=this.dblclick.bind(this)),we(t.ownerDocument,rr,this.onCropMove=this.cropMove.bind(this)),we(t.ownerDocument,or,this.onCropEnd=this.cropEnd.bind(this)),i.responsive&&we(window,sr,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,i=this.options,a=this.cropper;Ee(i.cropstart)&&xe(t,da,i.cropstart),Ee(i.cropmove)&&xe(t,ca,i.cropmove),Ee(i.cropend)&&xe(t,sa,i.cropend),Ee(i.crop)&&xe(t,la,i.crop),Ee(i.zoom)&&xe(t,ua,i.zoom),xe(a,nr,this.onCropStart),i.zoomable&&i.zoomOnWheel&&xe(a,cr,this.onWheel,{passive:!1,capture:!0}),i.toggleDragModeOnDblclick&&xe(a,ar,this.onDblclick),xe(t.ownerDocument,rr,this.onCropMove),xe(t.ownerDocument,or,this.onCropEnd),i.responsive&&xe(window,sr,this.onResize)}},Pu={resize:function(){if(!this.disabled){var t=this.options,i=this.container,a=this.containerData,n=i.offsetWidth/a.width,r=i.offsetHeight/a.height,o=Math.abs(n-1)>Math.abs(r-1)?n:r;if(o!==1){var l,s;t.restore&&(l=this.getCanvasData(),s=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(oe(l,function(u,c){l[c]=u*o})),this.setCropBoxData(oe(s,function(u,c){s[c]=u*o})))}}},dblclick:function(){this.disabled||this.options.dragMode===Rr||this.setDragMode(fu(this.dragBox,ra)?_r:ga)},wheel:function(t){var i=this,a=Number(this.options.wheelZoomRatio)||.1,n=1;this.disabled||(t.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){i.wheeling=!1},50),t.deltaY?n=t.deltaY>0?1:-1:t.wheelDelta?n=-t.wheelDelta/120:t.detail&&(n=t.detail>0?1:-1),this.zoom(-n*a,t)))},cropStart:function(t){var i=t.buttons,a=t.button;if(!(this.disabled||(t.type==="mousedown"||t.type==="pointerdown"&&t.pointerType==="mouse")&&(Y(i)&&i!==1||Y(a)&&a!==0||t.ctrlKey))){var n=this.options,r=this.pointers,o;t.changedTouches?oe(t.changedTouches,function(l){r[l.identifier]=hi(l)}):r[t.pointerId||0]=hi(t),Object.keys(r).length>1&&n.zoomable&&n.zoomOnTouch?o=br:o=ha(t.target,Bt),ru.test(o)&&It(this.element,da,{originalEvent:t,action:o})!==!1&&(t.preventDefault(),this.action=o,this.cropping=!1,o===Tr&&(this.cropping=!0,de(this.dragBox,mi)))}},cropMove:function(t){var i=this.action;if(!(this.disabled||!i)){var a=this.pointers;t.preventDefault(),It(this.element,ca,{originalEvent:t,action:i})!==!1&&(t.changedTouches?oe(t.changedTouches,function(n){K(a[n.identifier]||{},hi(n,!0))}):K(a[t.pointerId||0]||{},hi(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var i=this.action,a=this.pointers;t.changedTouches?oe(t.changedTouches,function(n){delete a[n.identifier]}):delete a[t.pointerId||0],i&&(t.preventDefault(),Object.keys(a).length||(this.action=""),this.cropping&&(this.cropping=!1,Et(this.dragBox,mi,this.cropped&&this.options.modal)),It(this.element,sa,{originalEvent:t,action:i}))}}},Du={change:function(t){var i=this.options,a=this.canvasData,n=this.containerData,r=this.cropBoxData,o=this.pointers,l=this.action,s=i.aspectRatio,u=r.left,c=r.top,d=r.width,h=r.height,m=u+d,p=c+h,f=0,g=0,b=n.width,E=n.height,I=!0,_;!s&&t.shiftKey&&(s=d&&h?d/h:1),this.limited&&(f=r.minLeft,g=r.minTop,b=f+Math.min(n.width,a.width,a.left+a.width),E=g+Math.min(n.height,a.height,a.top+a.height));var y=o[Object.keys(o)[0]],T={x:y.endX-y.startX,y:y.endY-y.startY},v=function(S){switch(S){case tt:m+T.x>b&&(T.x=b-m);break;case it:u+T.xE&&(T.y=E-p);break}};switch(l){case fa:u+=T.x,c+=T.y;break;case tt:if(T.x>=0&&(m>=b||s&&(c<=g||p>=E))){I=!1;break}v(tt),d+=T.x,d<0&&(l=it,d=-d,u-=d),s&&(h=d/s,c+=(r.height-h)/2);break;case ke:if(T.y<=0&&(c<=g||s&&(u<=f||m>=b))){I=!1;break}v(ke),h-=T.y,c+=T.y,h<0&&(l=ft,h=-h,c-=h),s&&(d=h*s,u+=(r.width-d)/2);break;case it:if(T.x<=0&&(u<=f||s&&(c<=g||p>=E))){I=!1;break}v(it),d-=T.x,u+=T.x,d<0&&(l=tt,d=-d,u-=d),s&&(h=d/s,c+=(r.height-h)/2);break;case ft:if(T.y>=0&&(p>=E||s&&(u<=f||m>=b))){I=!1;break}v(ft),h+=T.y,h<0&&(l=ke,h=-h,c-=h),s&&(d=h*s,u+=(r.width-d)/2);break;case Dt:if(s){if(T.y<=0&&(c<=g||m>=b)){I=!1;break}v(ke),h-=T.y,c+=T.y,d=h*s}else v(ke),v(tt),T.x>=0?mg&&(h-=T.y,c+=T.y):(h-=T.y,c+=T.y);d<0&&h<0?(l=zt,h=-h,d=-d,c-=h,u-=d):d<0?(l=Ft,d=-d,u-=d):h<0&&(l=Ct,h=-h,c-=h);break;case Ft:if(s){if(T.y<=0&&(c<=g||u<=f)){I=!1;break}v(ke),h-=T.y,c+=T.y,d=h*s,u+=r.width-d}else v(ke),v(it),T.x<=0?u>f?(d-=T.x,u+=T.x):T.y<=0&&c<=g&&(I=!1):(d-=T.x,u+=T.x),T.y<=0?c>g&&(h-=T.y,c+=T.y):(h-=T.y,c+=T.y);d<0&&h<0?(l=Ct,h=-h,d=-d,c-=h,u-=d):d<0?(l=Dt,d=-d,u-=d):h<0&&(l=zt,h=-h,c-=h);break;case zt:if(s){if(T.x<=0&&(u<=f||p>=E)){I=!1;break}v(it),d-=T.x,u+=T.x,h=d/s}else v(ft),v(it),T.x<=0?u>f?(d-=T.x,u+=T.x):T.y>=0&&p>=E&&(I=!1):(d-=T.x,u+=T.x),T.y>=0?p=0&&(m>=b||p>=E)){I=!1;break}v(tt),d+=T.x,h=d/s}else v(ft),v(tt),T.x>=0?m=0&&p>=E&&(I=!1):d+=T.x,T.y>=0?p0?l=T.y>0?Ct:Dt:T.x<0&&(u-=d,l=T.y>0?zt:Ft),T.y<0&&(c-=h),this.cropped||(Pe(this.cropBox,Te),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}I&&(r.width=d,r.height=h,r.left=u,r.top=c,this.action=l,this.renderCropBox()),oe(o,function(R){R.startX=R.endX,R.startY=R.endY})}},Fu={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&de(this.dragBox,mi),Pe(this.cropBox,Te),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=K({},this.initialImageData),this.canvasData=K({},this.initialCanvasData),this.cropBoxData=K({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(K(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),Pe(this.dragBox,mi),de(this.cropBox,Te)),this},replace:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&t&&(this.isImg&&(this.element.src=t),i?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,oe(this.previews,function(a){a.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,Pe(this.cropper,tr)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,de(this.cropper,tr)),this},destroy:function(){var t=this.element;return t[Z]?(t[Z]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.canvasData,n=a.left,r=a.top;return this.moveTo(ta(t)?t:n+Number(t),ta(i)?i:r+Number(i))},moveTo:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.canvasData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.movable&&(Y(t)&&(a.left=t,n=!0),Y(i)&&(a.top=i,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,i){var a=this.canvasData;return t=Number(t),t<0?t=1/(1-t):t=1+t,this.zoomTo(a.width*t/a.naturalWidth,null,i)},zoomTo:function(t,i,a){var n=this.options,r=this.canvasData,o=r.width,l=r.height,s=r.naturalWidth,u=r.naturalHeight;if(t=Number(t),t>=0&&this.ready&&!this.disabled&&n.zoomable){var c=s*t,d=u*t;if(It(this.element,ua,{ratio:t,oldRatio:o/s,originalEvent:a})===!1)return this;if(a){var h=this.pointers,m=Lr(this.cropper),p=h&&Object.keys(h).length?bu(h):{pageX:a.pageX,pageY:a.pageY};r.left-=(c-o)*((p.pageX-m.left-r.left)/o),r.top-=(d-l)*((p.pageY-m.top-r.top)/l)}else gt(i)&&Y(i.x)&&Y(i.y)?(r.left-=(c-o)*((i.x-r.left)/o),r.top-=(d-l)*((i.y-r.top)/l)):(r.left-=(c-o)/2,r.top-=(d-l)/2);r.width=c,r.height=d,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),Y(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var i=this.imageData.scaleY;return this.scale(t,Y(i)?i:1)},scaleY:function(t){var i=this.imageData.scaleX;return this.scale(Y(i)?i:1,t)},scale:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.imageData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.scalable&&(Y(t)&&(a.scaleX=t,n=!0),Y(i)&&(a.scaleY=i,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,i=this.options,a=this.imageData,n=this.canvasData,r=this.cropBoxData,o;if(this.ready&&this.cropped){o={x:r.left-n.left,y:r.top-n.top,width:r.width,height:r.height};var l=a.width/a.naturalWidth;if(oe(o,function(c,d){o[d]=c/l}),t){var s=Math.round(o.y+o.height),u=Math.round(o.x+o.width);o.x=Math.round(o.x),o.y=Math.round(o.y),o.width=u-o.x,o.height=s-o.y}}else o={x:0,y:0,width:0,height:0};return i.rotatable&&(o.rotate=a.rotate||0),i.scalable&&(o.scaleX=a.scaleX||1,o.scaleY=a.scaleY||1),o},setData:function(t){var i=this.options,a=this.imageData,n=this.canvasData,r={};if(this.ready&&!this.disabled&>(t)){var o=!1;i.rotatable&&Y(t.rotate)&&t.rotate!==a.rotate&&(a.rotate=t.rotate,o=!0),i.scalable&&(Y(t.scaleX)&&t.scaleX!==a.scaleX&&(a.scaleX=t.scaleX,o=!0),Y(t.scaleY)&&t.scaleY!==a.scaleY&&(a.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var l=a.width/a.naturalWidth;Y(t.x)&&(r.left=t.x*l+n.left),Y(t.y)&&(r.top=t.y*l+n.top),Y(t.width)&&(r.width=t.width*l),Y(t.height)&&(r.height=t.height*l),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?K({},this.containerData):{}},getImageData:function(){return this.sized?K({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,i={};return this.ready&&oe(["left","top","width","height","naturalWidth","naturalHeight"],function(a){i[a]=t[a]}),i},setCanvasData:function(t){var i=this.canvasData,a=i.aspectRatio;return this.ready&&!this.disabled&>(t)&&(Y(t.left)&&(i.left=t.left),Y(t.top)&&(i.top=t.top),Y(t.width)?(i.width=t.width,i.height=t.width/a):Y(t.height)&&(i.height=t.height,i.width=t.height*a),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,i;return this.ready&&this.cropped&&(i={left:t.left,top:t.top,width:t.width,height:t.height}),i||{}},setCropBoxData:function(t){var i=this.cropBoxData,a=this.options.aspectRatio,n,r;return this.ready&&this.cropped&&!this.disabled&>(t)&&(Y(t.left)&&(i.left=t.left),Y(t.top)&&(i.top=t.top),Y(t.width)&&t.width!==i.width&&(n=!0,i.width=t.width),Y(t.height)&&t.height!==i.height&&(r=!0,i.height=t.height),a&&(n?i.height=i.width/a:r&&(i.width=i.height*a)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var i=this.canvasData,a=Ru(this.image,this.imageData,i,t);if(!this.cropped)return a;var n=this.getData(t.rounded),r=n.x,o=n.y,l=n.width,s=n.height,u=a.width/Math.floor(i.naturalWidth);u!==1&&(r*=u,o*=u,l*=u,s*=u);var c=l/s,d=We({aspectRatio:c,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),h=We({aspectRatio:c,width:t.minWidth||0,height:t.minHeight||0},"cover"),m=We({aspectRatio:c,width:t.width||(u!==1?a.width:l),height:t.height||(u!==1?a.height:s)}),p=m.width,f=m.height;p=Math.min(d.width,Math.max(h.width,p)),f=Math.min(d.height,Math.max(h.height,f));var g=document.createElement("canvas"),b=g.getContext("2d");g.width=Tt(p),g.height=Tt(f),b.fillStyle=t.fillColor||"transparent",b.fillRect(0,0,p,f);var E=t.imageSmoothingEnabled,I=E===void 0?!0:E,_=t.imageSmoothingQuality;b.imageSmoothingEnabled=I,_&&(b.imageSmoothingQuality=_);var y=a.width,T=a.height,v=r,R=o,S,P,x,O,z,A;v<=-l||v>y?(v=0,S=0,x=0,z=0):v<=0?(x=-v,v=0,S=Math.min(y,l+v),z=S):v<=y&&(x=0,S=Math.min(l,y-v),z=S),S<=0||R<=-s||R>T?(R=0,P=0,O=0,A=0):R<=0?(O=-R,R=0,P=Math.min(T,s+R),A=P):R<=T&&(O=0,P=Math.min(s,T-R),A=P);var F=[v,R,S,P];if(z>0&&A>0){var w=p/l;F.push(x*w,O*w,z*w,A*w)}return b.drawImage.apply(b,[a].concat(gr(F.map(function(L){return Math.floor(Tt(L))})))),g},setAspectRatio:function(t){var i=this.options;return!this.disabled&&!ta(t)&&(i.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var i=this.options,a=this.dragBox,n=this.face;if(this.ready&&!this.disabled){var r=t===ga,o=i.movable&&t===_r;t=r||o?t:Rr,i.dragMode=t,Vt(a,Bt,t),Et(a,ra,r),Et(a,oa,o),i.cropBoxMovable||(Vt(n,Bt,t),Et(n,ra,r),Et(n,oa,o))}return this}},Cu=De.Cropper,Ta=function(){function e(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(qd(this,e),!t||!su.test(t.tagName))throw new Error("The first argument is required and must be an or element.");this.element=t,this.options=K({},ur,gt(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return jd(e,[{key:"init",value:function(){var i=this.element,a=i.tagName.toLowerCase(),n;if(!i[Z]){if(i[Z]=this,a==="img"){if(this.isImg=!0,n=i.getAttribute("src")||"",this.originalUrl=n,!n)return;n=i.src}else a==="canvas"&&window.HTMLCanvasElement&&(n=i.toDataURL());this.load(n)}}},{key:"load",value:function(i){var a=this;if(i){this.url=i,this.imageData={};var n=this.element,r=this.options;if(!r.rotatable&&!r.scalable&&(r.checkOrientation=!1),!r.checkOrientation||!window.ArrayBuffer){this.clone();return}if(ou.test(i)){lu.test(i)?this.read(wu(i)):this.clone();return}var o=new XMLHttpRequest,l=this.clone.bind(this);this.reloading=!0,this.xhr=o,o.onabort=l,o.onerror=l,o.ontimeout=l,o.onprogress=function(){o.getResponseHeader("content-type")!==dr&&o.abort()},o.onload=function(){a.read(o.response)},o.onloadend=function(){a.reloading=!1,a.xhr=null},r.checkCrossOrigin&&mr(i)&&n.crossOrigin&&(i=pr(i)),o.open("GET",i,!0),o.responseType="arraybuffer",o.withCredentials=n.crossOrigin==="use-credentials",o.send()}}},{key:"read",value:function(i){var a=this.options,n=this.imageData,r=Au(i),o=0,l=1,s=1;if(r>1){this.url=vu(i,dr);var u=Lu(r);o=u.rotate,l=u.scaleX,s=u.scaleY}a.rotatable&&(n.rotate=o),a.scalable&&(n.scaleX=l,n.scaleY=s),this.clone()}},{key:"clone",value:function(){var i=this.element,a=this.url,n=i.crossOrigin,r=a;this.options.checkCrossOrigin&&mr(a)&&(n||(n="anonymous"),r=pr(a)),this.crossOrigin=n,this.crossOriginUrl=r;var o=document.createElement("img");n&&(o.crossOrigin=n),o.src=r||a,o.alt=i.alt||"The image to crop",this.image=o,o.onload=this.start.bind(this),o.onerror=this.stop.bind(this),de(o,ir),i.parentNode.insertBefore(o,i.nextSibling)}},{key:"start",value:function(){var i=this,a=this.image;a.onload=null,a.onerror=null,this.sizing=!0;var n=De.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(De.navigator.userAgent),r=function(u,c){K(i.imageData,{naturalWidth:u,naturalHeight:c,aspectRatio:u/c}),i.initialImageData=K({},i.imageData),i.sizing=!1,i.sized=!0,i.build()};if(a.naturalWidth&&!n){r(a.naturalWidth,a.naturalHeight);return}var o=document.createElement("img"),l=document.body||document.documentElement;this.sizingImage=o,o.onload=function(){r(o.width,o.height),n||l.removeChild(o)},o.src=a.src,n||(o.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",l.appendChild(o))}},{key:"stop",value:function(){var i=this.image;i.onload=null,i.onerror=null,i.parentNode.removeChild(i),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var i=this.element,a=this.options,n=this.image,r=i.parentNode,o=document.createElement("div");o.innerHTML=cu;var l=o.querySelector(".".concat(Z,"-container")),s=l.querySelector(".".concat(Z,"-canvas")),u=l.querySelector(".".concat(Z,"-drag-box")),c=l.querySelector(".".concat(Z,"-crop-box")),d=c.querySelector(".".concat(Z,"-face"));this.container=r,this.cropper=l,this.canvas=s,this.dragBox=u,this.cropBox=c,this.viewBox=l.querySelector(".".concat(Z,"-view-box")),this.face=d,s.appendChild(n),de(i,Te),r.insertBefore(l,i.nextSibling),Pe(n,ir),this.initPreview(),this.bind(),a.initialAspectRatio=Math.max(0,a.initialAspectRatio)||NaN,a.aspectRatio=Math.max(0,a.aspectRatio)||NaN,a.viewMode=Math.max(0,Math.min(3,Math.round(a.viewMode)))||0,de(c,Te),a.guides||de(c.getElementsByClassName("".concat(Z,"-dashed")),Te),a.center||de(c.getElementsByClassName("".concat(Z,"-center")),Te),a.background&&de(l,"".concat(Z,"-bg")),a.highlight||de(d,tu),a.cropBoxMovable&&(de(d,oa),Vt(d,Bt,fa)),a.cropBoxResizable||(de(c.getElementsByClassName("".concat(Z,"-line")),Te),de(c.getElementsByClassName("".concat(Z,"-point")),Te)),this.render(),this.ready=!0,this.setDragMode(a.dragMode),a.autoCrop&&this.crop(),this.setData(a.data),Ee(a.ready)&&we(i,lr,a.ready,{once:!0}),It(i,lr)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var i=this.cropper.parentNode;i&&i.removeChild(this.cropper),Pe(this.element,Te)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=Cu,e}},{key:"setDefaults",value:function(i){K(ur,gt(i)&&i)}}]),e}();K(Ta.prototype,Mu,Ou,xu,Pu,Du,Fu);var Or=({addFilter:e,utils:t})=>{let{Type:i,replaceInString:a,toNaturalFileSize:n}=t;return e("ALLOW_HOPPER_ITEM",(r,{query:o})=>{if(!o("GET_ALLOW_FILE_SIZE_VALIDATION"))return!0;let l=o("GET_MAX_FILE_SIZE");if(l!==null&&r.size>l)return!1;let s=o("GET_MIN_FILE_SIZE");return!(s!==null&&r.sizenew Promise((l,s)=>{if(!o("GET_ALLOW_FILE_SIZE_VALIDATION"))return l(r);let u=o("GET_FILE_VALIDATE_SIZE_FILTER");if(u&&!u(r))return l(r);let c=o("GET_MAX_FILE_SIZE");if(c!==null&&r.size>c){s({status:{main:o("GET_LABEL_MAX_FILE_SIZE_EXCEEDED"),sub:a(o("GET_LABEL_MAX_FILE_SIZE"),{filesize:n(c,".",o("GET_FILE_SIZE_BASE"),o("GET_FILE_SIZE_LABELS",o))})}});return}let d=o("GET_MIN_FILE_SIZE");if(d!==null&&r.sizep+f.fileSize,0)>h){s({status:{main:o("GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED"),sub:a(o("GET_LABEL_MAX_TOTAL_FILE_SIZE"),{filesize:n(h,".",o("GET_FILE_SIZE_BASE"),o("GET_FILE_SIZE_LABELS",o))})}});return}l(r)})),{options:{allowFileSizeValidation:[!0,i.BOOLEAN],maxFileSize:[null,i.INT],minFileSize:[null,i.INT],maxTotalFileSize:[null,i.INT],fileValidateSizeFilter:[null,i.FUNCTION],labelMinFileSizeExceeded:["File is too small",i.STRING],labelMinFileSize:["Minimum file size is {filesize}",i.STRING],labelMaxFileSizeExceeded:["File is too large",i.STRING],labelMaxFileSize:["Maximum file size is {filesize}",i.STRING],labelMaxTotalFileSizeExceeded:["Maximum total size exceeded",i.STRING],labelMaxTotalFileSize:["Maximum total file size is {filesize}",i.STRING]}}},zu=typeof window<"u"&&typeof window.document<"u";zu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Or}));var xr=Or;var Pr=({addFilter:e,utils:t})=>{let{Type:i,isString:a,replaceInString:n,guesstimateMimeType:r,getExtensionFromFilename:o,getFilenameFromURL:l}=t,s=(m,p)=>{let f=(/^[^/]+/.exec(m)||[]).pop(),g=p.slice(0,-2);return f===g},u=(m,p)=>m.some(f=>/\*$/.test(f)?s(p,f):f===p),c=m=>{let p="";if(a(m)){let f=l(m),g=o(f);g&&(p=r(g))}else p=m.type;return p},d=(m,p,f)=>{if(p.length===0)return!0;let g=c(m);return f?new Promise((b,E)=>{f(m,g).then(I=>{u(p,I)?b():E()}).catch(E)}):u(p,g)},h=m=>p=>m[p]===null?!1:m[p]||p;return e("SET_ATTRIBUTE_TO_OPTION_MAP",m=>Object.assign(m,{accept:"acceptedFileTypes"})),e("ALLOW_HOPPER_ITEM",(m,{query:p})=>p("GET_ALLOW_FILE_TYPE_VALIDATION")?d(m,p("GET_ACCEPTED_FILE_TYPES")):!0),e("LOAD_FILE",(m,{query:p})=>new Promise((f,g)=>{if(!p("GET_ALLOW_FILE_TYPE_VALIDATION")){f(m);return}let b=p("GET_ACCEPTED_FILE_TYPES"),E=p("GET_FILE_VALIDATE_TYPE_DETECT_TYPE"),I=d(m,b,E),_=()=>{let y=b.map(h(p("GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP"))).filter(v=>v!==!1),T=y.filter((v,R)=>y.indexOf(v)===R);g({status:{main:p("GET_LABEL_FILE_TYPE_NOT_ALLOWED"),sub:n(p("GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES"),{allTypes:T.join(", "),allButLastType:T.slice(0,-1).join(", "),lastType:T[T.length-1]})}})};if(typeof I=="boolean")return I?f(m):_();I.then(()=>{f(m)}).catch(_)})),{options:{allowFileTypeValidation:[!0,i.BOOLEAN],acceptedFileTypes:[[],i.ARRAY],labelFileTypeNotAllowed:["File is of invalid type",i.STRING],fileValidateTypeLabelExpectedTypes:["Expects {allButLastType} or {lastType}",i.STRING],fileValidateTypeLabelExpectedTypesMap:[{},i.OBJECT],fileValidateTypeDetectType:[null,i.FUNCTION]}}},Nu=typeof window<"u"&&typeof window.document<"u";Nu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Pr}));var Dr=Pr;var Fr=e=>/^image/.test(e.type),Cr=({addFilter:e,utils:t})=>{let{Type:i,isFile:a,getNumericAspectRatioFromString:n}=t,r=(u,c)=>!(!Fr(u.file)||!c("GET_ALLOW_IMAGE_CROP")),o=u=>typeof u=="object",l=u=>typeof u=="number",s=(u,c)=>u.setMetadata("crop",Object.assign({},u.getMetadata("crop"),c));return e("DID_CREATE_ITEM",(u,{query:c})=>{u.extend("setImageCrop",d=>{if(!(!r(u,c)||!o(center)))return u.setMetadata("crop",d),d}),u.extend("setImageCropCenter",d=>{if(!(!r(u,c)||!o(d)))return s(u,{center:d})}),u.extend("setImageCropZoom",d=>{if(!(!r(u,c)||!l(d)))return s(u,{zoom:Math.max(1,d)})}),u.extend("setImageCropRotation",d=>{if(!(!r(u,c)||!l(d)))return s(u,{rotation:d})}),u.extend("setImageCropFlip",d=>{if(!(!r(u,c)||!o(d)))return s(u,{flip:d})}),u.extend("setImageCropAspectRatio",d=>{if(!r(u,c)||typeof d>"u")return;let h=u.getMetadata("crop"),m=n(d),p={center:{x:.5,y:.5},flip:h?Object.assign({},h.flip):{horizontal:!1,vertical:!1},rotation:0,zoom:1,aspectRatio:m};return u.setMetadata("crop",p),p})}),e("DID_LOAD_ITEM",(u,{query:c})=>new Promise((d,h)=>{let m=u.file;if(!a(m)||!Fr(m)||!c("GET_ALLOW_IMAGE_CROP")||u.getMetadata("crop"))return d(u);let f=c("GET_IMAGE_CROP_ASPECT_RATIO");u.setMetadata("crop",{center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},rotation:0,zoom:1,aspectRatio:f?n(f):null}),d(u)})),{options:{allowImageCrop:[!0,i.BOOLEAN],imageCropAspectRatio:[null,i.STRING]}}},Bu=typeof window<"u"&&typeof window.document<"u";Bu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Cr}));var zr=Cr;var Ia=e=>/^image/.test(e.type),Nr=e=>{let{addFilter:t,utils:i,views:a}=e,{Type:n,createRoute:r,createItemAPI:o=c=>c}=i,{fileActionButton:l}=a;t("SHOULD_REMOVE_ON_REVERT",(c,{item:d,query:h})=>new Promise(m=>{let{file:p}=d,f=h("GET_ALLOW_IMAGE_EDIT")&&h("GET_IMAGE_EDIT_ALLOW_EDIT")&&Ia(p);m(!f)})),t("DID_LOAD_ITEM",(c,{query:d,dispatch:h})=>new Promise((m,p)=>{if(c.origin>1){m(c);return}let{file:f}=c;if(!d("GET_ALLOW_IMAGE_EDIT")||!d("GET_IMAGE_EDIT_INSTANT_EDIT")){m(c);return}if(!Ia(f)){m(c);return}let g=(E,I,_)=>y=>{s.shift(),y?I(E):_(E),h("KICK"),b()},b=()=>{if(!s.length)return;let{item:E,resolve:I,reject:_}=s[0];h("EDIT_ITEM",{id:E.id,handleEditorResponse:g(E,I,_)})};u({item:c,resolve:m,reject:p}),s.length===1&&b()})),t("DID_CREATE_ITEM",(c,{query:d,dispatch:h})=>{c.extend("edit",()=>{h("EDIT_ITEM",{id:c.id})})});let s=[],u=c=>(s.push(c),c);return t("CREATE_VIEW",c=>{let{is:d,view:h,query:m}=c;if(!m("GET_ALLOW_IMAGE_EDIT"))return;let p=m("GET_ALLOW_IMAGE_PREVIEW");if(!(d("file-info")&&!p||d("file")&&p))return;let g=m("GET_IMAGE_EDIT_EDITOR");if(!g)return;g.filepondCallbackBridge||(g.outputData=!0,g.outputFile=!1,g.filepondCallbackBridge={onconfirm:g.onconfirm||(()=>{}),oncancel:g.oncancel||(()=>{})});let b=({root:_,props:y,action:T})=>{let{id:v}=y,{handleEditorResponse:R}=T;g.cropAspectRatio=_.query("GET_IMAGE_CROP_ASPECT_RATIO")||g.cropAspectRatio,g.outputCanvasBackgroundColor=_.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR")||g.outputCanvasBackgroundColor;let S=_.query("GET_ITEM",v);if(!S)return;let P=S.file,x=S.getMetadata("crop"),O={center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},zoom:1,rotation:0,aspectRatio:null},z=S.getMetadata("resize"),A=S.getMetadata("filter")||null,F=S.getMetadata("filters")||null,w=S.getMetadata("colors")||null,L=S.getMetadata("markup")||null,C={crop:x||O,size:z?{upscale:z.upscale,mode:z.mode,width:z.size.width,height:z.size.height}:null,filter:F?F.id||F.matrix:_.query("GET_ALLOW_IMAGE_FILTER")&&_.query("GET_IMAGE_FILTER_COLOR_MATRIX")&&!w?A:null,color:w,markup:L};g.onconfirm=({data:D})=>{let{crop:V,size:B,filter:j,color:q,colorMatrix:X,markup:ue}=D,U={};if(V&&(U.crop=V),B){let W=(S.getMetadata("resize")||{}).size,$={width:B.width,height:B.height};!($.width&&$.height)&&W&&($.width=W.width,$.height=W.height),($.width||$.height)&&(U.resize={upscale:B.upscale,mode:B.mode,size:$})}ue&&(U.markup=ue),U.colors=q,U.filters=j,U.filter=X,S.setMetadata(U),g.filepondCallbackBridge.onconfirm(D,o(S)),R&&(g.onclose=()=>{R(!0),g.onclose=null})},g.oncancel=()=>{g.filepondCallbackBridge.oncancel(o(S)),R&&(g.onclose=()=>{R(!1),g.onclose=null})},g.open(P,C)},E=({root:_,props:y})=>{if(!m("GET_IMAGE_EDIT_ALLOW_EDIT"))return;let{id:T}=y,v=m("GET_ITEM",T);if(!v)return;let R=v.file;if(Ia(R))if(_.ref.handleEdit=S=>{S.stopPropagation(),_.dispatch("EDIT_ITEM",{id:T})},p){let S=h.createChildView(l,{label:"edit",icon:m("GET_IMAGE_EDIT_ICON_EDIT"),opacity:0});S.element.classList.add("filepond--action-edit-item"),S.element.dataset.align=m("GET_STYLE_IMAGE_EDIT_BUTTON_EDIT_ITEM_POSITION"),S.on("click",_.ref.handleEdit),_.ref.buttonEditItem=h.appendChildView(S)}else{let S=h.element.querySelector(".filepond--file-info-main"),P=document.createElement("button");P.className="filepond--action-edit-item-alt",P.innerHTML=m("GET_IMAGE_EDIT_ICON_EDIT")+"edit",P.addEventListener("click",_.ref.handleEdit),S.appendChild(P),_.ref.editButton=P}};h.registerDestroyer(({root:_})=>{_.ref.buttonEditItem&&_.ref.buttonEditItem.off("click",_.ref.handleEdit),_.ref.editButton&&_.ref.editButton.removeEventListener("click",_.ref.handleEdit)});let I={EDIT_ITEM:b,DID_LOAD_ITEM:E};if(p){let _=({root:y})=>{y.ref.buttonEditItem&&(y.ref.buttonEditItem.opacity=1)};I.DID_IMAGE_PREVIEW_SHOW=_}h.registerWriter(r(I))}),{options:{allowImageEdit:[!0,n.BOOLEAN],styleImageEditButtonEditItemPosition:["bottom center",n.STRING],imageEditInstantEdit:[!1,n.BOOLEAN],imageEditAllowEdit:[!0,n.BOOLEAN],imageEditIconEdit:['',n.STRING],imageEditEditor:[null,n.OBJECT]}}},Vu=typeof window<"u"&&typeof window.document<"u";Vu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Nr}));var Br=Nr;var Gu=e=>/^image\/jpeg/.test(e.type),nt={JPEG:65496,APP1:65505,EXIF:1165519206,TIFF:18761,Orientation:274,Unknown:65280},rt=(e,t,i=!1)=>e.getUint16(t,i),Vr=(e,t,i=!1)=>e.getUint32(t,i),Uu=e=>new Promise((t,i)=>{let a=new FileReader;a.onload=function(n){let r=new DataView(n.target.result);if(rt(r,0)!==nt.JPEG){t(-1);return}let o=r.byteLength,l=2;for(;ltypeof window<"u"&&typeof window.document<"u")(),Hu=()=>ku,Wu="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QA6RXhpZgAATU0AKgAAAAgAAwESAAMAAAABAAYAAAEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////wAALCAABAAIBASIA/8QAJgABAAAAAAAAAAAAAAAAAAAAAxABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQAAPwBH/9k=",Gr,fi=Hu()?new Image:{};fi.onload=()=>Gr=fi.naturalWidth>fi.naturalHeight;fi.src=Wu;var Yu=()=>Gr,Ur=({addFilter:e,utils:t})=>{let{Type:i,isFile:a}=t;return e("DID_LOAD_ITEM",(n,{query:r})=>new Promise((o,l)=>{let s=n.file;if(!a(s)||!Gu(s)||!r("GET_ALLOW_IMAGE_EXIF_ORIENTATION")||!Yu())return o(n);Uu(s).then(u=>{n.setMetadata("exif",{orientation:u}),o(n)})})),{options:{allowImageExifOrientation:[!0,i.BOOLEAN]}}},$u=typeof window<"u"&&typeof window.document<"u";$u&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Ur}));var kr=Ur;var qu=e=>/^image/.test(e.type),Hr=(e,t)=>Ut(e.x*t,e.y*t),Wr=(e,t)=>Ut(e.x+t.x,e.y+t.y),ju=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:Ut(e.x/t,e.y/t)},gi=(e,t,i)=>{let a=Math.cos(t),n=Math.sin(t),r=Ut(e.x-i.x,e.y-i.y);return Ut(i.x+a*r.x-n*r.y,i.y+n*r.x+a*r.y)},Ut=(e=0,t=0)=>({x:e,y:t}),Ie=(e,t,i=1,a)=>{if(typeof e=="string")return parseFloat(e)*i;if(typeof e=="number")return e*(a?t[a]:Math.min(t.width,t.height))},Xu=(e,t,i)=>{let a=e.borderStyle||e.lineStyle||"solid",n=e.backgroundColor||e.fontColor||"transparent",r=e.borderColor||e.lineColor||"transparent",o=Ie(e.borderWidth||e.lineWidth,t,i),l=e.lineCap||"round",s=e.lineJoin||"round",u=typeof a=="string"?"":a.map(d=>Ie(d,t,i)).join(","),c=e.opacity||1;return{"stroke-linecap":l,"stroke-linejoin":s,"stroke-width":o||0,"stroke-dasharray":u,stroke:r,fill:n,opacity:c}},ve=e=>e!=null,Qu=(e,t,i=1)=>{let a=Ie(e.x,t,i,"width")||Ie(e.left,t,i,"width"),n=Ie(e.y,t,i,"height")||Ie(e.top,t,i,"height"),r=Ie(e.width,t,i,"width"),o=Ie(e.height,t,i,"height"),l=Ie(e.right,t,i,"width"),s=Ie(e.bottom,t,i,"height");return ve(n)||(ve(o)&&ve(s)?n=t.height-o-s:n=s),ve(a)||(ve(r)&&ve(l)?a=t.width-r-l:a=l),ve(r)||(ve(a)&&ve(l)?r=t.width-a-l:r=0),ve(o)||(ve(n)&&ve(s)?o=t.height-n-s:o=0),{x:a||0,y:n||0,width:r||0,height:o||0}},Zu=e=>e.map((t,i)=>`${i===0?"M":"L"} ${t.x} ${t.y}`).join(" "),Ce=(e,t)=>Object.keys(t).forEach(i=>e.setAttribute(i,t[i])),Ku="http://www.w3.org/2000/svg",bt=(e,t)=>{let i=document.createElementNS(Ku,e);return t&&Ce(i,t),i},Ju=e=>Ce(e,{...e.rect,...e.styles}),eh=e=>{let t=e.rect.x+e.rect.width*.5,i=e.rect.y+e.rect.height*.5,a=e.rect.width*.5,n=e.rect.height*.5;return Ce(e,{cx:t,cy:i,rx:a,ry:n,...e.styles})},th={contain:"xMidYMid meet",cover:"xMidYMid slice"},ih=(e,t)=>{Ce(e,{...e.rect,...e.styles,preserveAspectRatio:th[t.fit]||"none"})},ah={left:"start",center:"middle",right:"end"},nh=(e,t,i,a)=>{let n=Ie(t.fontSize,i,a),r=t.fontFamily||"sans-serif",o=t.fontWeight||"normal",l=ah[t.textAlign]||"start";Ce(e,{...e.rect,...e.styles,"stroke-width":0,"font-weight":o,"font-size":n,"font-family":r,"text-anchor":l}),e.text!==t.text&&(e.text=t.text,e.textContent=t.text.length?t.text:" ")},rh=(e,t,i,a)=>{Ce(e,{...e.rect,...e.styles,fill:"none"});let n=e.childNodes[0],r=e.childNodes[1],o=e.childNodes[2],l=e.rect,s={x:e.rect.x+e.rect.width,y:e.rect.y+e.rect.height};if(Ce(n,{x1:l.x,y1:l.y,x2:s.x,y2:s.y}),!t.lineDecoration)return;r.style.display="none",o.style.display="none";let u=ju({x:s.x-l.x,y:s.y-l.y}),c=Ie(.05,i,a);if(t.lineDecoration.indexOf("arrow-begin")!==-1){let d=Hr(u,c),h=Wr(l,d),m=gi(l,2,h),p=gi(l,-2,h);Ce(r,{style:"display:block;",d:`M${m.x},${m.y} L${l.x},${l.y} L${p.x},${p.y}`})}if(t.lineDecoration.indexOf("arrow-end")!==-1){let d=Hr(u,-c),h=Wr(s,d),m=gi(s,2,h),p=gi(s,-2,h);Ce(o,{style:"display:block;",d:`M${m.x},${m.y} L${s.x},${s.y} L${p.x},${p.y}`})}},oh=(e,t,i,a)=>{Ce(e,{...e.styles,fill:"none",d:Zu(t.points.map(n=>({x:Ie(n.x,i,a,"width"),y:Ie(n.y,i,a,"height")})))})},Ei=e=>t=>bt(e,{id:t.id}),lh=e=>{let t=bt("image",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0"});return t.onload=()=>{t.setAttribute("opacity",e.opacity||1)},t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.src),t},sh=e=>{let t=bt("g",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round"}),i=bt("line");t.appendChild(i);let a=bt("path");t.appendChild(a);let n=bt("path");return t.appendChild(n),t},ch={image:lh,rect:Ei("rect"),ellipse:Ei("ellipse"),text:Ei("text"),path:Ei("path"),line:sh},dh={rect:Ju,ellipse:eh,image:ih,text:nh,path:oh,line:rh},uh=(e,t)=>ch[e](t),hh=(e,t,i,a,n)=>{t!=="path"&&(e.rect=Qu(i,a,n)),e.styles=Xu(i,a,n),dh[t](e,i,a,n)},mh=["x","y","left","top","right","bottom","width","height"],ph=e=>typeof e=="string"&&/%/.test(e)?parseFloat(e)/100:e,fh=e=>{let[t,i]=e,a=i.points?{}:mh.reduce((n,r)=>(n[r]=ph(i[r]),n),{});return[t,{zIndex:0,...i,...a}]},gh=(e,t)=>e[1].zIndex>t[1].zIndex?1:e[1].zIndexe.utils.createView({name:"image-preview-markup",tag:"svg",ignoreRect:!0,mixins:{apis:["width","height","crop","markup","resize","dirty"]},write:({root:t,props:i})=>{if(!i.dirty)return;let{crop:a,resize:n,markup:r}=i,o=i.width,l=i.height,s=a.width,u=a.height;if(n){let{size:m}=n,p=m&&m.width,f=m&&m.height,g=n.mode,b=n.upscale;p&&!f&&(f=p),f&&!p&&(p=f);let E=s{let[p,f]=m,g=uh(p,f);hh(g,p,f,c,d),t.element.appendChild(g)})}}),Gt=(e,t)=>({x:e,y:t}),Th=(e,t)=>e.x*t.x+e.y*t.y,Yr=(e,t)=>Gt(e.x-t.x,e.y-t.y),Ih=(e,t)=>Th(Yr(e,t),Yr(e,t)),$r=(e,t)=>Math.sqrt(Ih(e,t)),qr=(e,t)=>{let i=e,a=1.5707963267948966,n=t,r=1.5707963267948966-t,o=Math.sin(a),l=Math.sin(n),s=Math.sin(r),u=Math.cos(r),c=i/o,d=c*l,h=c*s;return Gt(u*d,u*h)},bh=(e,t)=>{let i=e.width,a=e.height,n=qr(i,t),r=qr(a,t),o=Gt(e.x+Math.abs(n.x),e.y-Math.abs(n.y)),l=Gt(e.x+e.width+Math.abs(r.y),e.y+Math.abs(r.x)),s=Gt(e.x-Math.abs(r.y),e.y+e.height-Math.abs(r.x));return{width:$r(o,l),height:$r(o,s)}},_h=(e,t,i=1)=>{let a=e.height/e.width,n=1,r=t,o=1,l=a;l>r&&(l=r,o=l/a);let s=Math.max(n/o,r/l),u=e.width/(i*s*o),c=u*t;return{width:u,height:c}},Xr=(e,t,i,a)=>{let n=a.x>.5?1-a.x:a.x,r=a.y>.5?1-a.y:a.y,o=n*2*e.width,l=r*2*e.height,s=bh(t,i);return Math.max(s.width/o,s.height/l)},Qr=(e,t)=>{let i=e.width,a=i*t;a>e.height&&(a=e.height,i=a/t);let n=(e.width-i)*.5,r=(e.height-a)*.5;return{x:n,y:r,width:i,height:a}},Rh=(e,t={})=>{let{zoom:i,rotation:a,center:n,aspectRatio:r}=t;r||(r=e.height/e.width);let o=_h(e,r,i),l={x:o.width*.5,y:o.height*.5},s={x:0,y:0,width:o.width,height:o.height,center:l},u=typeof t.scaleToFit>"u"||t.scaleToFit,c=Xr(e,Qr(s,r),a,u?n:{x:.5,y:.5}),d=i*c;return{widthFloat:o.width/d,heightFloat:o.height/d,width:Math.round(o.width/d),height:Math.round(o.height/d)}},Fe={type:"spring",stiffness:.5,damping:.45,mass:10},yh=e=>e.utils.createView({name:"image-bitmap",ignoreRect:!0,mixins:{styles:["scaleX","scaleY"]},create:({root:t,props:i})=>{t.appendChild(i.image)}}),Sh=e=>e.utils.createView({name:"image-canvas-wrapper",tag:"div",ignoreRect:!0,mixins:{apis:["crop","width","height"],styles:["originX","originY","translateX","translateY","scaleX","scaleY","rotateZ"],animations:{originX:Fe,originY:Fe,scaleX:Fe,scaleY:Fe,translateX:Fe,translateY:Fe,rotateZ:Fe}},create:({root:t,props:i})=>{i.width=i.image.width,i.height=i.image.height,t.ref.bitmap=t.appendChildView(t.createChildView(yh(e),{image:i.image}))},write:({root:t,props:i})=>{let{flip:a}=i.crop,{bitmap:n}=t.ref;n.scaleX=a.horizontal?-1:1,n.scaleY=a.vertical?-1:1}}),wh=e=>e.utils.createView({name:"image-clip",tag:"div",ignoreRect:!0,mixins:{apis:["crop","markup","resize","width","height","dirty","background"],styles:["width","height","opacity"],animations:{opacity:{type:"tween",duration:250}}},didWriteView:function({root:t,props:i}){i.background&&(t.element.style.backgroundColor=i.background)},create:({root:t,props:i})=>{t.ref.image=t.appendChildView(t.createChildView(Sh(e),Object.assign({},i))),t.ref.createMarkup=()=>{t.ref.markup||(t.ref.markup=t.appendChildView(t.createChildView(Eh(e),Object.assign({},i))))},t.ref.destroyMarkup=()=>{t.ref.markup&&(t.removeChildView(t.ref.markup),t.ref.markup=null)};let a=t.query("GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR");a!==null&&(a==="grid"?t.element.dataset.transparencyIndicator=a:t.element.dataset.transparencyIndicator="color")},write:({root:t,props:i,shouldOptimize:a})=>{let{crop:n,markup:r,resize:o,dirty:l,width:s,height:u}=i;t.ref.image.crop=n;let c={x:0,y:0,width:s,height:u,center:{x:s*.5,y:u*.5}},d={width:t.ref.image.width,height:t.ref.image.height},h={x:n.center.x*d.width,y:n.center.y*d.height},m={x:c.center.x-d.width*n.center.x,y:c.center.y-d.height*n.center.y},p=Math.PI*2+n.rotation%(Math.PI*2),f=n.aspectRatio||d.height/d.width,g=typeof n.scaleToFit>"u"||n.scaleToFit,b=Xr(d,Qr(c,f),p,g?n.center:{x:.5,y:.5}),E=n.zoom*b;r&&r.length?(t.ref.createMarkup(),t.ref.markup.width=s,t.ref.markup.height=u,t.ref.markup.resize=o,t.ref.markup.dirty=l,t.ref.markup.markup=r,t.ref.markup.crop=Rh(d,n)):t.ref.markup&&t.ref.destroyMarkup();let I=t.ref.image;if(a){I.originX=null,I.originY=null,I.translateX=null,I.translateY=null,I.rotateZ=null,I.scaleX=null,I.scaleY=null;return}I.originX=h.x,I.originY=h.y,I.translateX=m.x,I.translateY=m.y,I.rotateZ=p,I.scaleX=E,I.scaleY=E}}),vh=e=>e.utils.createView({name:"image-preview",tag:"div",ignoreRect:!0,mixins:{apis:["image","crop","markup","resize","dirty","background"],styles:["translateY","scaleX","scaleY","opacity"],animations:{scaleX:Fe,scaleY:Fe,translateY:Fe,opacity:{type:"tween",duration:400}}},create:({root:t,props:i})=>{t.ref.clip=t.appendChildView(t.createChildView(wh(e),{id:i.id,image:i.image,crop:i.crop,markup:i.markup,resize:i.resize,dirty:i.dirty,background:i.background}))},write:({root:t,props:i,shouldOptimize:a})=>{let{clip:n}=t.ref,{image:r,crop:o,markup:l,resize:s,dirty:u}=i;if(n.crop=o,n.markup=l,n.resize=s,n.dirty=u,n.opacity=a?0:1,a||t.rect.element.hidden)return;let c=r.height/r.width,d=o.aspectRatio||c,h=t.rect.inner.width,m=t.rect.inner.height,p=t.query("GET_IMAGE_PREVIEW_HEIGHT"),f=t.query("GET_IMAGE_PREVIEW_MIN_HEIGHT"),g=t.query("GET_IMAGE_PREVIEW_MAX_HEIGHT"),b=t.query("GET_PANEL_ASPECT_RATIO"),E=t.query("GET_ALLOW_MULTIPLE");b&&!E&&(p=h*b,d=b);let I=p!==null?p:Math.max(f,Math.min(h*d,g)),_=I/d;_>h&&(_=h,I=_*d),I>m&&(I=m,_=m/d),n.width=_,n.height=I}}),Ah=` @@ -18,31 +18,31 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho -`,Xr=0,Ah=e=>e.utils.createView({name:"image-preview-overlay",tag:"div",ignoreRect:!0,create:({root:t,props:i})=>{let a=vh;if(document.querySelector("base")){let n=new URL(window.location.href.replace(window.location.hash,"")).href;a=a.replace(/url\(\#/g,"url("+n+"#")}Xr++,t.element.classList.add(`filepond--image-preview-overlay-${i.status}`),t.element.innerHTML=a.replace(/__UID__/g,Xr)},mixins:{styles:["opacity"],animations:{opacity:{type:"spring",mass:25}}}}),Lh=function(){self.onmessage=e=>{createImageBitmap(e.data.message.file).then(t=>{self.postMessage({id:e.data.id,message:t},[t])})}},Mh=function(){self.onmessage=e=>{let t=e.data.message.imageData,i=e.data.message.colorMatrix,a=t.data,n=a.length,r=i[0],o=i[1],l=i[2],s=i[3],u=i[4],c=i[5],d=i[6],h=i[7],f=i[8],p=i[9],m=i[10],g=i[11],b=i[12],E=i[13],I=i[14],_=i[15],y=i[16],T=i[17],v=i[18],R=i[19],S=0,D=0,x=0,O=0,z=0;for(;S{let i=new Image;i.onload=()=>{let a=i.naturalWidth,n=i.naturalHeight;i=null,t(a,n)},i.src=e},xh={1:()=>[1,0,0,1,0,0],2:e=>[-1,0,0,1,e,0],3:(e,t)=>[-1,0,0,-1,e,t],4:(e,t)=>[1,0,0,-1,0,t],5:()=>[0,1,1,0,0,0],6:(e,t)=>[0,1,-1,0,t,0],7:(e,t)=>[0,-1,-1,0,t,e],8:e=>[0,-1,1,0,0,e]},Dh=(e,t,i,a)=>{a!==-1&&e.transform.apply(e,xh[a](t,i))},Ph=(e,t,i,a)=>{t=Math.round(t),i=Math.round(i);let n=document.createElement("canvas");n.width=t,n.height=i;let r=n.getContext("2d");return a>=5&&a<=8&&([t,i]=[i,t]),Dh(r,t,i,a),r.drawImage(e,0,0,t,i),n},Zr=e=>/^image/.test(e.type)&&!/svg/.test(e.type),Fh=10,Ch=10,zh=e=>{let t=Math.min(Fh/e.width,Ch/e.height),i=document.createElement("canvas"),a=i.getContext("2d"),n=i.width=Math.ceil(e.width*t),r=i.height=Math.ceil(e.height*t);a.drawImage(e,0,0,n,r);let o=null;try{o=a.getImageData(0,0,n,r).data}catch{return null}let l=o.length,s=0,u=0,c=0,d=0;for(;dMath.floor(Math.sqrt(e/(t/4))),Nh=(e,t)=>(t=t||document.createElement("canvas"),t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0),t),Bh=e=>{let t;try{t=new ImageData(e.width,e.height)}catch{t=document.createElement("canvas").getContext("2d").createImageData(e.width,e.height)}return t.data.set(new Uint8ClampedArray(e.data)),t},Gh=e=>new Promise((t,i)=>{let a=new Image;a.crossOrigin="Anonymous",a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Vh=e=>{let t=Ah(e),i=wh(e),{createWorker:a}=e.utils,n=(E,I,_)=>new Promise(y=>{E.ref.imageData||(E.ref.imageData=_.getContext("2d").getImageData(0,0,_.width,_.height));let T=Bh(E.ref.imageData);if(!I||I.length!==20)return _.getContext("2d").putImageData(T,0,0),y();let v=a(Mh);v.post({imageData:T,colorMatrix:I},R=>{_.getContext("2d").putImageData(R,0,0),v.terminate(),y()},[T.data.buffer])}),r=(E,I)=>{E.removeChildView(I),I.image.width=1,I.image.height=1,I._destroy()},o=({root:E})=>{let I=E.ref.images.shift();return I.opacity=0,I.translateY=-15,E.ref.imageViewBin.push(I),I},l=({root:E,props:I,image:_})=>{let y=I.id,T=E.query("GET_ITEM",{id:y});if(!T)return;let v=T.getMetadata("crop")||{center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},zoom:1,rotation:0,aspectRatio:null},R=E.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR"),S,D,x=!1;E.query("GET_IMAGE_PREVIEW_MARKUP_SHOW")&&(S=T.getMetadata("markup")||[],D=T.getMetadata("resize"),x=!0);let O=E.appendChildView(E.createChildView(i,{id:y,image:_,crop:v,resize:D,markup:S,dirty:x,background:R,opacity:0,scaleX:1.15,scaleY:1.15,translateY:15}),E.childViews.length);E.ref.images.push(O),O.opacity=1,O.scaleX=1,O.scaleY=1,O.translateY=0,setTimeout(()=>{E.dispatch("DID_IMAGE_PREVIEW_SHOW",{id:y})},250)},s=({root:E,props:I})=>{let _=E.query("GET_ITEM",{id:I.id});if(!_)return;let y=E.ref.images[E.ref.images.length-1];y.crop=_.getMetadata("crop"),y.background=E.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR"),E.query("GET_IMAGE_PREVIEW_MARKUP_SHOW")&&(y.dirty=!0,y.resize=_.getMetadata("resize"),y.markup=_.getMetadata("markup"))},u=({root:E,props:I,action:_})=>{if(!/crop|filter|markup|resize/.test(_.change.key)||!E.ref.images.length)return;let y=E.query("GET_ITEM",{id:I.id});if(y){if(/filter/.test(_.change.key)){let T=E.ref.images[E.ref.images.length-1];n(E,_.change.value,T.image);return}if(/crop|markup|resize/.test(_.change.key)){let T=y.getMetadata("crop"),v=E.ref.images[E.ref.images.length-1];if(T&&T.aspectRatio&&v.crop&&v.crop.aspectRatio&&Math.abs(T.aspectRatio-v.crop.aspectRatio)>1e-5){let R=o({root:E});l({root:E,props:I,image:Nh(R.image)})}else s({root:E,props:I})}}},c=E=>{let _=window.navigator.userAgent.match(/Firefox\/([0-9]+)\./),y=_?parseInt(_[1]):null;return y!==null&&y<=58?!1:"createImageBitmap"in window&&Zr(E)},d=({root:E,props:I})=>{let{id:_}=I,y=E.query("GET_ITEM",_);if(!y)return;let T=URL.createObjectURL(y.file);Oh(T,(v,R)=>{E.dispatch("DID_IMAGE_PREVIEW_CALCULATE_SIZE",{id:_,width:v,height:R})})},h=({root:E,props:I})=>{let{id:_}=I,y=E.query("GET_ITEM",_);if(!y)return;let T=URL.createObjectURL(y.file),v=()=>{Gh(T).then(R)},R=S=>{URL.revokeObjectURL(T);let x=(y.getMetadata("exif")||{}).orientation||-1,{width:O,height:z}=S;if(!O||!z)return;x>=5&&x<=8&&([O,z]=[z,O]);let A=Math.max(1,window.devicePixelRatio*.75),w=E.query("GET_IMAGE_PREVIEW_ZOOM_FACTOR")*A,L=z/O,C=E.rect.element.width,P=E.rect.element.height,G=C,B=G*L;L>1?(G=Math.min(O,C*w),B=G*L):(B=Math.min(z,P*w),G=B/L);let X=Ph(S,G,B,x),q=()=>{let ue=E.query("GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR")?zh(data):null;y.setMetadata("color",ue,!0),"close"in S&&S.close(),E.ref.overlayShadow.opacity=1,l({root:E,props:I,image:X})},j=y.getMetadata("filter");j?n(E,j,X).then(q):q()};if(c(y.file)){let S=a(Lh);S.post({file:y.file},D=>{if(S.terminate(),!D){v();return}R(D)})}else v()},f=({root:E})=>{let I=E.ref.images[E.ref.images.length-1];I.translateY=0,I.scaleX=1,I.scaleY=1,I.opacity=1},p=({root:E})=>{E.ref.overlayShadow.opacity=1,E.ref.overlayError.opacity=0,E.ref.overlaySuccess.opacity=0},m=({root:E})=>{E.ref.overlayShadow.opacity=.25,E.ref.overlayError.opacity=1},g=({root:E})=>{E.ref.overlayShadow.opacity=.25,E.ref.overlaySuccess.opacity=1},b=({root:E})=>{E.ref.images=[],E.ref.imageData=null,E.ref.imageViewBin=[],E.ref.overlayShadow=E.appendChildView(E.createChildView(t,{opacity:0,status:"idle"})),E.ref.overlaySuccess=E.appendChildView(E.createChildView(t,{opacity:0,status:"success"})),E.ref.overlayError=E.appendChildView(E.createChildView(t,{opacity:0,status:"failure"}))};return e.utils.createView({name:"image-preview-wrapper",create:b,styles:["height"],apis:["height"],destroy:({root:E})=>{E.ref.images.forEach(I=>{I.image.width=1,I.image.height=1})},didWriteView:({root:E})=>{E.ref.images.forEach(I=>{I.dirty=!1})},write:e.utils.createRoute({DID_IMAGE_PREVIEW_DRAW:f,DID_IMAGE_PREVIEW_CONTAINER_CREATE:d,DID_FINISH_CALCULATE_PREVIEWSIZE:h,DID_UPDATE_ITEM_METADATA:u,DID_THROW_ITEM_LOAD_ERROR:m,DID_THROW_ITEM_PROCESSING_ERROR:m,DID_THROW_ITEM_INVALID:m,DID_COMPLETE_ITEM_PROCESSING:g,DID_START_ITEM_PROCESSING:p,DID_REVERT_ITEM_PROCESSING:p},({root:E})=>{let I=E.ref.imageViewBin.filter(_=>_.opacity===0);E.ref.imageViewBin=E.ref.imageViewBin.filter(_=>_.opacity>0),I.forEach(_=>r(E,_)),I.length=0})})},Kr=e=>{let{addFilter:t,utils:i}=e,{Type:a,createRoute:n,isFile:r}=i,o=Vh(e);return t("CREATE_VIEW",l=>{let{is:s,view:u,query:c}=l;if(!s("file")||!c("GET_ALLOW_IMAGE_PREVIEW"))return;let d=({root:g,props:b})=>{let{id:E}=b,I=c("GET_ITEM",E);if(!I||!r(I.file)||I.archived)return;let _=I.file;if(!$u(_)||!c("GET_IMAGE_PREVIEW_FILTER_ITEM")(I))return;let y="createImageBitmap"in(window||{}),T=c("GET_IMAGE_PREVIEW_MAX_FILE_SIZE");if(!y&&T&&_.size>T)return;g.ref.imagePreview=u.appendChildView(u.createChildView(o,{id:E}));let v=g.query("GET_IMAGE_PREVIEW_HEIGHT");v&&g.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:I.id,height:v});let R=!y&&_.size>c("GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE");g.dispatch("DID_IMAGE_PREVIEW_CONTAINER_CREATE",{id:E},R)},h=(g,b)=>{if(!g.ref.imagePreview)return;let{id:E}=b,I=g.query("GET_ITEM",{id:E});if(!I)return;let _=g.query("GET_PANEL_ASPECT_RATIO"),y=g.query("GET_ITEM_PANEL_ASPECT_RATIO"),T=g.query("GET_IMAGE_PREVIEW_HEIGHT");if(_||y||T)return;let{imageWidth:v,imageHeight:R}=g.ref;if(!v||!R)return;let S=g.query("GET_IMAGE_PREVIEW_MIN_HEIGHT"),D=g.query("GET_IMAGE_PREVIEW_MAX_HEIGHT"),O=(I.getMetadata("exif")||{}).orientation||-1;if(O>=5&&O<=8&&([v,R]=[R,v]),!Zr(I.file)||g.query("GET_IMAGE_PREVIEW_UPSCALE")){let C=2048/v;v*=C,R*=C}let z=R/v,A=(I.getMetadata("crop")||{}).aspectRatio||z,F=Math.max(S,Math.min(R,D)),w=g.rect.element.width,L=Math.min(w*A,F);g.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:I.id,height:L})},f=({root:g})=>{g.ref.shouldRescale=!0},p=({root:g,action:b})=>{b.change.key==="crop"&&(g.ref.shouldRescale=!0)},m=({root:g,action:b})=>{g.ref.imageWidth=b.width,g.ref.imageHeight=b.height,g.ref.shouldRescale=!0,g.ref.shouldDrawPreview=!0,g.dispatch("KICK")};u.registerWriter(n({DID_RESIZE_ROOT:f,DID_STOP_RESIZE:f,DID_LOAD_ITEM:d,DID_IMAGE_PREVIEW_CALCULATE_SIZE:m,DID_UPDATE_ITEM_METADATA:p},({root:g,props:b})=>{g.ref.imagePreview&&(g.rect.element.hidden||(g.ref.shouldRescale&&(h(g,b),g.ref.shouldRescale=!1),g.ref.shouldDrawPreview&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{g.dispatch("DID_FINISH_CALCULATE_PREVIEWSIZE",{id:b.id})})}),g.ref.shouldDrawPreview=!1)))}))}),{options:{allowImagePreview:[!0,a.BOOLEAN],imagePreviewFilterItem:[()=>!0,a.FUNCTION],imagePreviewHeight:[null,a.INT],imagePreviewMinHeight:[44,a.INT],imagePreviewMaxHeight:[256,a.INT],imagePreviewMaxFileSize:[null,a.INT],imagePreviewZoomFactor:[2,a.INT],imagePreviewUpscale:[!1,a.BOOLEAN],imagePreviewMaxInstantPreviewFileSize:[1e6,a.INT],imagePreviewTransparencyIndicator:[null,a.STRING],imagePreviewCalculateAverageImageColor:[!1,a.BOOLEAN],imagePreviewMarkupShow:[!0,a.BOOLEAN],imagePreviewMarkupFilter:[()=>!0,a.FUNCTION]}}},Uh=typeof window<"u"&&typeof window.document<"u";Uh&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Kr}));var Jr=Kr;var kh=e=>/^image/.test(e.type),Hh=(e,t)=>{let i=new Image;i.onload=()=>{let a=i.naturalWidth,n=i.naturalHeight;i=null,t({width:a,height:n})},i.onerror=()=>t(null),i.src=e},eo=({addFilter:e,utils:t})=>{let{Type:i}=t;return e("DID_LOAD_ITEM",(a,{query:n})=>new Promise((r,o)=>{let l=a.file;if(!kh(l)||!n("GET_ALLOW_IMAGE_RESIZE"))return r(a);let s=n("GET_IMAGE_RESIZE_MODE"),u=n("GET_IMAGE_RESIZE_TARGET_WIDTH"),c=n("GET_IMAGE_RESIZE_TARGET_HEIGHT"),d=n("GET_IMAGE_RESIZE_UPSCALE");if(u===null&&c===null)return r(a);let h=u===null?c:u,f=c===null?h:c,p=URL.createObjectURL(l);Hh(p,m=>{if(URL.revokeObjectURL(p),!m)return r(a);let{width:g,height:b}=m,E=(a.getMetadata("exif")||{}).orientation||-1;if(E>=5&&E<=8&&([g,b]=[b,g]),g===h&&b===f)return r(a);if(!d){if(s==="cover"){if(g<=h||b<=f)return r(a)}else if(g<=h&&b<=h)return r(a)}a.setMetadata("resize",{mode:s,upscale:d,size:{width:h,height:f}}),r(a)})})),{options:{allowImageResize:[!0,i.BOOLEAN],imageResizeMode:["cover",i.STRING],imageResizeUpscale:[!0,i.BOOLEAN],imageResizeTargetWidth:[null,i.INT],imageResizeTargetHeight:[null,i.INT]}}},Wh=typeof window<"u"&&typeof window.document<"u";Wh&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:eo}));var to=eo;var Yh=e=>/^image/.test(e.type),$h=e=>e.substr(0,e.lastIndexOf("."))||e,qh={jpeg:"jpg","svg+xml":"svg"},Xh=(e,t)=>{let i=$h(e),a=t.split("/")[1],n=qh[a]||a;return`${i}.${n}`},jh=e=>/jpeg|png|svg\+xml/.test(e)?e:"image/jpeg",Qh=e=>/^image/.test(e.type),Zh={1:()=>[1,0,0,1,0,0],2:e=>[-1,0,0,1,e,0],3:(e,t)=>[-1,0,0,-1,e,t],4:(e,t)=>[1,0,0,-1,0,t],5:()=>[0,1,1,0,0,0],6:(e,t)=>[0,1,-1,0,t,0],7:(e,t)=>[0,-1,-1,0,t,e],8:e=>[0,-1,1,0,0,e]},Kh=(e,t,i)=>(i===-1&&(i=1),Zh[i](e,t)),kt=(e,t)=>({x:e,y:t}),Jh=(e,t)=>e.x*t.x+e.y*t.y,io=(e,t)=>kt(e.x-t.x,e.y-t.y),ef=(e,t)=>Jh(io(e,t),io(e,t)),ao=(e,t)=>Math.sqrt(ef(e,t)),no=(e,t)=>{let i=e,a=1.5707963267948966,n=t,r=1.5707963267948966-t,o=Math.sin(a),l=Math.sin(n),s=Math.sin(r),u=Math.cos(r),c=i/o,d=c*l,h=c*s;return kt(u*d,u*h)},tf=(e,t)=>{let i=e.width,a=e.height,n=no(i,t),r=no(a,t),o=kt(e.x+Math.abs(n.x),e.y-Math.abs(n.y)),l=kt(e.x+e.width+Math.abs(r.y),e.y+Math.abs(r.x)),s=kt(e.x-Math.abs(r.y),e.y+e.height-Math.abs(r.x));return{width:ao(o,l),height:ao(o,s)}},lo=(e,t,i=0,a={x:.5,y:.5})=>{let n=a.x>.5?1-a.x:a.x,r=a.y>.5?1-a.y:a.y,o=n*2*e.width,l=r*2*e.height,s=tf(t,i);return Math.max(s.width/o,s.height/l)},so=(e,t)=>{let i=e.width,a=i*t;a>e.height&&(a=e.height,i=a/t);let n=(e.width-i)*.5,r=(e.height-a)*.5;return{x:n,y:r,width:i,height:a}},ro=(e,t,i=1)=>{let a=e.height/e.width,n=1,r=t,o=1,l=a;l>r&&(l=r,o=l/a);let s=Math.max(n/o,r/l),u=e.width/(i*s*o),c=u*t;return{width:u,height:c}},co=e=>{e.width=1,e.height=1,e.getContext("2d").clearRect(0,0,1,1)},oo=e=>e&&(e.horizontal||e.vertical),af=(e,t,i)=>{if(t<=1&&!oo(i))return e.width=e.naturalWidth,e.height=e.naturalHeight,e;let a=document.createElement("canvas"),n=e.naturalWidth,r=e.naturalHeight,o=t>=5&&t<=8;o?(a.width=r,a.height=n):(a.width=n,a.height=r);let l=a.getContext("2d");if(t&&l.transform.apply(l,Kh(n,r,t)),oo(i)){let s=[1,0,0,1,0,0];(!o&&i.horizontal||o&i.vertical)&&(s[0]=-1,s[4]=n),(!o&&i.vertical||o&&i.horizontal)&&(s[3]=-1,s[5]=r),l.transform(...s)}return l.drawImage(e,0,0,n,r),a},nf=(e,t,i={},a={})=>{let{canvasMemoryLimit:n,background:r=null}=a,o=i.zoom||1,l=af(e,t,i.flip),s={width:l.width,height:l.height},u=i.aspectRatio||s.height/s.width,c=ro(s,u,o);if(n){let I=c.width*c.height;if(I>n){let _=Math.sqrt(n)/Math.sqrt(I);s.width=Math.floor(s.width*_),s.height=Math.floor(s.height*_),c=ro(s,u,o)}}let d=document.createElement("canvas"),h={x:c.width*.5,y:c.height*.5},f={x:0,y:0,width:c.width,height:c.height,center:h},p=typeof i.scaleToFit>"u"||i.scaleToFit,m=o*lo(s,so(f,u),i.rotation,p?i.center:{x:.5,y:.5});d.width=Math.round(c.width/m),d.height=Math.round(c.height/m),h.x/=m,h.y/=m;let g={x:h.x-s.width*(i.center?i.center.x:.5),y:h.y-s.height*(i.center?i.center.y:.5)},b=d.getContext("2d");r&&(b.fillStyle=r,b.fillRect(0,0,d.width,d.height)),b.translate(h.x,h.y),b.rotate(i.rotation||0),b.drawImage(l,g.x-h.x,g.y-h.y,s.width,s.height);let E=b.getImageData(0,0,d.width,d.height);return co(d),E},rf=(()=>typeof window<"u"&&typeof window.document<"u")();rf&&(HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,i){var a=this.toDataURL(t,i).split(",")[1];setTimeout(function(){for(var n=atob(a),r=n.length,o=new Uint8Array(r),l=0;lnew Promise(a=>{let n=i?i(e):e;Promise.resolve(n).then(r=>{r.toBlob(a,t.type,t.quality)})}),Ii=(e,t)=>Ht(e.x*t,e.y*t),bi=(e,t)=>Ht(e.x+t.x,e.y+t.y),uo=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:Ht(e.x/t,e.y/t)},Ye=(e,t,i)=>{let a=Math.cos(t),n=Math.sin(t),r=Ht(e.x-i.x,e.y-i.y);return Ht(i.x+a*r.x-n*r.y,i.y+n*r.x+a*r.y)},Ht=(e=0,t=0)=>({x:e,y:t}),he=(e,t,i=1,a)=>{if(typeof e=="string")return parseFloat(e)*i;if(typeof e=="number")return e*(a?t[a]:Math.min(t.width,t.height))},rt=(e,t,i)=>{let a=e.borderStyle||e.lineStyle||"solid",n=e.backgroundColor||e.fontColor||"transparent",r=e.borderColor||e.lineColor||"transparent",o=he(e.borderWidth||e.lineWidth,t,i),l=e.lineCap||"round",s=e.lineJoin||"round",u=typeof a=="string"?"":a.map(d=>he(d,t,i)).join(","),c=e.opacity||1;return{"stroke-linecap":l,"stroke-linejoin":s,"stroke-width":o||0,"stroke-dasharray":u,stroke:r,fill:n,opacity:c}},Ae=e=>e!=null,Rt=(e,t,i=1)=>{let a=he(e.x,t,i,"width")||he(e.left,t,i,"width"),n=he(e.y,t,i,"height")||he(e.top,t,i,"height"),r=he(e.width,t,i,"width"),o=he(e.height,t,i,"height"),l=he(e.right,t,i,"width"),s=he(e.bottom,t,i,"height");return Ae(n)||(Ae(o)&&Ae(s)?n=t.height-o-s:n=s),Ae(a)||(Ae(r)&&Ae(l)?a=t.width-r-l:a=l),Ae(r)||(Ae(a)&&Ae(l)?r=t.width-a-l:r=0),Ae(o)||(Ae(n)&&Ae(s)?o=t.height-n-s:o=0),{x:a||0,y:n||0,width:r||0,height:o||0}},lf=e=>e.map((t,i)=>`${i===0?"M":"L"} ${t.x} ${t.y}`).join(" "),ze=(e,t)=>Object.keys(t).forEach(i=>e.setAttribute(i,t[i])),sf="http://www.w3.org/2000/svg",_t=(e,t)=>{let i=document.createElementNS(sf,e);return t&&ze(i,t),i},cf=e=>ze(e,{...e.rect,...e.styles}),df=e=>{let t=e.rect.x+e.rect.width*.5,i=e.rect.y+e.rect.height*.5,a=e.rect.width*.5,n=e.rect.height*.5;return ze(e,{cx:t,cy:i,rx:a,ry:n,...e.styles})},uf={contain:"xMidYMid meet",cover:"xMidYMid slice"},hf=(e,t)=>{ze(e,{...e.rect,...e.styles,preserveAspectRatio:uf[t.fit]||"none"})},ff={left:"start",center:"middle",right:"end"},pf=(e,t,i,a)=>{let n=he(t.fontSize,i,a),r=t.fontFamily||"sans-serif",o=t.fontWeight||"normal",l=ff[t.textAlign]||"start";ze(e,{...e.rect,...e.styles,"stroke-width":0,"font-weight":o,"font-size":n,"font-family":r,"text-anchor":l}),e.text!==t.text&&(e.text=t.text,e.textContent=t.text.length?t.text:" ")},mf=(e,t,i,a)=>{ze(e,{...e.rect,...e.styles,fill:"none"});let n=e.childNodes[0],r=e.childNodes[1],o=e.childNodes[2],l=e.rect,s={x:e.rect.x+e.rect.width,y:e.rect.y+e.rect.height};if(ze(n,{x1:l.x,y1:l.y,x2:s.x,y2:s.y}),!t.lineDecoration)return;r.style.display="none",o.style.display="none";let u=uo({x:s.x-l.x,y:s.y-l.y}),c=he(.05,i,a);if(t.lineDecoration.indexOf("arrow-begin")!==-1){let d=Ii(u,c),h=bi(l,d),f=Ye(l,2,h),p=Ye(l,-2,h);ze(r,{style:"display:block;",d:`M${f.x},${f.y} L${l.x},${l.y} L${p.x},${p.y}`})}if(t.lineDecoration.indexOf("arrow-end")!==-1){let d=Ii(u,-c),h=bi(s,d),f=Ye(s,2,h),p=Ye(s,-2,h);ze(o,{style:"display:block;",d:`M${f.x},${f.y} L${s.x},${s.y} L${p.x},${p.y}`})}},gf=(e,t,i,a)=>{ze(e,{...e.styles,fill:"none",d:lf(t.points.map(n=>({x:he(n.x,i,a,"width"),y:he(n.y,i,a,"height")})))})},Ti=e=>t=>_t(e,{id:t.id}),Ef=e=>{let t=_t("image",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0"});return t.onload=()=>{t.setAttribute("opacity",e.opacity||1)},t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.src),t},Tf=e=>{let t=_t("g",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round"}),i=_t("line");t.appendChild(i);let a=_t("path");t.appendChild(a);let n=_t("path");return t.appendChild(n),t},If={image:Ef,rect:Ti("rect"),ellipse:Ti("ellipse"),text:Ti("text"),path:Ti("path"),line:Tf},bf={rect:cf,ellipse:df,image:hf,text:pf,path:gf,line:mf},_f=(e,t)=>If[e](t),Rf=(e,t,i,a,n)=>{t!=="path"&&(e.rect=Rt(i,a,n)),e.styles=rt(i,a,n),bf[t](e,i,a,n)},ho=(e,t)=>e[1].zIndex>t[1].zIndex?1:e[1].zIndexnew Promise(n=>{let{background:r=null}=a,o=new FileReader;o.onloadend=()=>{let l=o.result,s=document.createElement("div");s.style.cssText="position:absolute;pointer-events:none;width:0;height:0;visibility:hidden;",s.innerHTML=l;let u=s.querySelector("svg");document.body.appendChild(s);let c=u.getBBox();s.parentNode.removeChild(s);let d=s.querySelector("title"),h=u.getAttribute("viewBox")||"",f=u.getAttribute("width")||"",p=u.getAttribute("height")||"",m=parseFloat(f)||null,g=parseFloat(p)||null,b=(f.match(/[a-z]+/)||[])[0]||"",E=(p.match(/[a-z]+/)||[])[0]||"",I=h.split(" ").map(parseFloat),_=I.length?{x:I[0],y:I[1],width:I[2],height:I[3]}:c,y=m??_.width,T=g??_.height;u.style.overflow="visible",u.setAttribute("width",y),u.setAttribute("height",T);let v="";if(i&&i.length){let j={width:y,height:T};v=i.sort(ho).reduce((ue,U)=>{let W=_f(U[0],U[1]);return Rf(W,U[0],U[1],j),W.removeAttribute("id"),W.getAttribute("opacity")===1&&W.removeAttribute("opacity"),ue+` +`,jr=0,Lh=e=>e.utils.createView({name:"image-preview-overlay",tag:"div",ignoreRect:!0,create:({root:t,props:i})=>{let a=Ah;if(document.querySelector("base")){let n=new URL(window.location.href.replace(window.location.hash,"")).href;a=a.replace(/url\(\#/g,"url("+n+"#")}jr++,t.element.classList.add(`filepond--image-preview-overlay-${i.status}`),t.element.innerHTML=a.replace(/__UID__/g,jr)},mixins:{styles:["opacity"],animations:{opacity:{type:"spring",mass:25}}}}),Mh=function(){self.onmessage=e=>{createImageBitmap(e.data.message.file).then(t=>{self.postMessage({id:e.data.id,message:t},[t])})}},Oh=function(){self.onmessage=e=>{let t=e.data.message.imageData,i=e.data.message.colorMatrix,a=t.data,n=a.length,r=i[0],o=i[1],l=i[2],s=i[3],u=i[4],c=i[5],d=i[6],h=i[7],m=i[8],p=i[9],f=i[10],g=i[11],b=i[12],E=i[13],I=i[14],_=i[15],y=i[16],T=i[17],v=i[18],R=i[19],S=0,P=0,x=0,O=0,z=0;for(;S{let i=new Image;i.onload=()=>{let a=i.naturalWidth,n=i.naturalHeight;i=null,t(a,n)},i.src=e},Ph={1:()=>[1,0,0,1,0,0],2:e=>[-1,0,0,1,e,0],3:(e,t)=>[-1,0,0,-1,e,t],4:(e,t)=>[1,0,0,-1,0,t],5:()=>[0,1,1,0,0,0],6:(e,t)=>[0,1,-1,0,t,0],7:(e,t)=>[0,-1,-1,0,t,e],8:e=>[0,-1,1,0,0,e]},Dh=(e,t,i,a)=>{a!==-1&&e.transform.apply(e,Ph[a](t,i))},Fh=(e,t,i,a)=>{t=Math.round(t),i=Math.round(i);let n=document.createElement("canvas");n.width=t,n.height=i;let r=n.getContext("2d");return a>=5&&a<=8&&([t,i]=[i,t]),Dh(r,t,i,a),r.drawImage(e,0,0,t,i),n},Zr=e=>/^image/.test(e.type)&&!/svg/.test(e.type),Ch=10,zh=10,Nh=e=>{let t=Math.min(Ch/e.width,zh/e.height),i=document.createElement("canvas"),a=i.getContext("2d"),n=i.width=Math.ceil(e.width*t),r=i.height=Math.ceil(e.height*t);a.drawImage(e,0,0,n,r);let o=null;try{o=a.getImageData(0,0,n,r).data}catch{return null}let l=o.length,s=0,u=0,c=0,d=0;for(;dMath.floor(Math.sqrt(e/(t/4))),Bh=(e,t)=>(t=t||document.createElement("canvas"),t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0),t),Vh=e=>{let t;try{t=new ImageData(e.width,e.height)}catch{t=document.createElement("canvas").getContext("2d").createImageData(e.width,e.height)}return t.data.set(new Uint8ClampedArray(e.data)),t},Gh=e=>new Promise((t,i)=>{let a=new Image;a.crossOrigin="Anonymous",a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Uh=e=>{let t=Lh(e),i=vh(e),{createWorker:a}=e.utils,n=(E,I,_)=>new Promise(y=>{E.ref.imageData||(E.ref.imageData=_.getContext("2d").getImageData(0,0,_.width,_.height));let T=Vh(E.ref.imageData);if(!I||I.length!==20)return _.getContext("2d").putImageData(T,0,0),y();let v=a(Oh);v.post({imageData:T,colorMatrix:I},R=>{_.getContext("2d").putImageData(R,0,0),v.terminate(),y()},[T.data.buffer])}),r=(E,I)=>{E.removeChildView(I),I.image.width=1,I.image.height=1,I._destroy()},o=({root:E})=>{let I=E.ref.images.shift();return I.opacity=0,I.translateY=-15,E.ref.imageViewBin.push(I),I},l=({root:E,props:I,image:_})=>{let y=I.id,T=E.query("GET_ITEM",{id:y});if(!T)return;let v=T.getMetadata("crop")||{center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},zoom:1,rotation:0,aspectRatio:null},R=E.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR"),S,P,x=!1;E.query("GET_IMAGE_PREVIEW_MARKUP_SHOW")&&(S=T.getMetadata("markup")||[],P=T.getMetadata("resize"),x=!0);let O=E.appendChildView(E.createChildView(i,{id:y,image:_,crop:v,resize:P,markup:S,dirty:x,background:R,opacity:0,scaleX:1.15,scaleY:1.15,translateY:15}),E.childViews.length);E.ref.images.push(O),O.opacity=1,O.scaleX=1,O.scaleY=1,O.translateY=0,setTimeout(()=>{E.dispatch("DID_IMAGE_PREVIEW_SHOW",{id:y})},250)},s=({root:E,props:I})=>{let _=E.query("GET_ITEM",{id:I.id});if(!_)return;let y=E.ref.images[E.ref.images.length-1];y.crop=_.getMetadata("crop"),y.background=E.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR"),E.query("GET_IMAGE_PREVIEW_MARKUP_SHOW")&&(y.dirty=!0,y.resize=_.getMetadata("resize"),y.markup=_.getMetadata("markup"))},u=({root:E,props:I,action:_})=>{if(!/crop|filter|markup|resize/.test(_.change.key)||!E.ref.images.length)return;let y=E.query("GET_ITEM",{id:I.id});if(y){if(/filter/.test(_.change.key)){let T=E.ref.images[E.ref.images.length-1];n(E,_.change.value,T.image);return}if(/crop|markup|resize/.test(_.change.key)){let T=y.getMetadata("crop"),v=E.ref.images[E.ref.images.length-1];if(T&&T.aspectRatio&&v.crop&&v.crop.aspectRatio&&Math.abs(T.aspectRatio-v.crop.aspectRatio)>1e-5){let R=o({root:E});l({root:E,props:I,image:Bh(R.image)})}else s({root:E,props:I})}}},c=E=>{let _=window.navigator.userAgent.match(/Firefox\/([0-9]+)\./),y=_?parseInt(_[1]):null;return y!==null&&y<=58?!1:"createImageBitmap"in window&&Zr(E)},d=({root:E,props:I})=>{let{id:_}=I,y=E.query("GET_ITEM",_);if(!y)return;let T=URL.createObjectURL(y.file);xh(T,(v,R)=>{E.dispatch("DID_IMAGE_PREVIEW_CALCULATE_SIZE",{id:_,width:v,height:R})})},h=({root:E,props:I})=>{let{id:_}=I,y=E.query("GET_ITEM",_);if(!y)return;let T=URL.createObjectURL(y.file),v=()=>{Gh(T).then(R)},R=S=>{URL.revokeObjectURL(T);let x=(y.getMetadata("exif")||{}).orientation||-1,{width:O,height:z}=S;if(!O||!z)return;x>=5&&x<=8&&([O,z]=[z,O]);let A=Math.max(1,window.devicePixelRatio*.75),w=E.query("GET_IMAGE_PREVIEW_ZOOM_FACTOR")*A,L=z/O,C=E.rect.element.width,D=E.rect.element.height,V=C,B=V*L;L>1?(V=Math.min(O,C*w),B=V*L):(B=Math.min(z,D*w),V=B/L);let j=Fh(S,V,B,x),q=()=>{let ue=E.query("GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR")?Nh(data):null;y.setMetadata("color",ue,!0),"close"in S&&S.close(),E.ref.overlayShadow.opacity=1,l({root:E,props:I,image:j})},X=y.getMetadata("filter");X?n(E,X,j).then(q):q()};if(c(y.file)){let S=a(Mh);S.post({file:y.file},P=>{if(S.terminate(),!P){v();return}R(P)})}else v()},m=({root:E})=>{let I=E.ref.images[E.ref.images.length-1];I.translateY=0,I.scaleX=1,I.scaleY=1,I.opacity=1},p=({root:E})=>{E.ref.overlayShadow.opacity=1,E.ref.overlayError.opacity=0,E.ref.overlaySuccess.opacity=0},f=({root:E})=>{E.ref.overlayShadow.opacity=.25,E.ref.overlayError.opacity=1},g=({root:E})=>{E.ref.overlayShadow.opacity=.25,E.ref.overlaySuccess.opacity=1},b=({root:E})=>{E.ref.images=[],E.ref.imageData=null,E.ref.imageViewBin=[],E.ref.overlayShadow=E.appendChildView(E.createChildView(t,{opacity:0,status:"idle"})),E.ref.overlaySuccess=E.appendChildView(E.createChildView(t,{opacity:0,status:"success"})),E.ref.overlayError=E.appendChildView(E.createChildView(t,{opacity:0,status:"failure"}))};return e.utils.createView({name:"image-preview-wrapper",create:b,styles:["height"],apis:["height"],destroy:({root:E})=>{E.ref.images.forEach(I=>{I.image.width=1,I.image.height=1})},didWriteView:({root:E})=>{E.ref.images.forEach(I=>{I.dirty=!1})},write:e.utils.createRoute({DID_IMAGE_PREVIEW_DRAW:m,DID_IMAGE_PREVIEW_CONTAINER_CREATE:d,DID_FINISH_CALCULATE_PREVIEWSIZE:h,DID_UPDATE_ITEM_METADATA:u,DID_THROW_ITEM_LOAD_ERROR:f,DID_THROW_ITEM_PROCESSING_ERROR:f,DID_THROW_ITEM_INVALID:f,DID_COMPLETE_ITEM_PROCESSING:g,DID_START_ITEM_PROCESSING:p,DID_REVERT_ITEM_PROCESSING:p},({root:E})=>{let I=E.ref.imageViewBin.filter(_=>_.opacity===0);E.ref.imageViewBin=E.ref.imageViewBin.filter(_=>_.opacity>0),I.forEach(_=>r(E,_)),I.length=0})})},Kr=e=>{let{addFilter:t,utils:i}=e,{Type:a,createRoute:n,isFile:r}=i,o=Uh(e);return t("CREATE_VIEW",l=>{let{is:s,view:u,query:c}=l;if(!s("file")||!c("GET_ALLOW_IMAGE_PREVIEW"))return;let d=({root:g,props:b})=>{let{id:E}=b,I=c("GET_ITEM",E);if(!I||!r(I.file)||I.archived)return;let _=I.file;if(!qu(_)||!c("GET_IMAGE_PREVIEW_FILTER_ITEM")(I))return;let y="createImageBitmap"in(window||{}),T=c("GET_IMAGE_PREVIEW_MAX_FILE_SIZE");if(!y&&T&&_.size>T)return;g.ref.imagePreview=u.appendChildView(u.createChildView(o,{id:E}));let v=g.query("GET_IMAGE_PREVIEW_HEIGHT");v&&g.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:I.id,height:v});let R=!y&&_.size>c("GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE");g.dispatch("DID_IMAGE_PREVIEW_CONTAINER_CREATE",{id:E},R)},h=(g,b)=>{if(!g.ref.imagePreview)return;let{id:E}=b,I=g.query("GET_ITEM",{id:E});if(!I)return;let _=g.query("GET_PANEL_ASPECT_RATIO"),y=g.query("GET_ITEM_PANEL_ASPECT_RATIO"),T=g.query("GET_IMAGE_PREVIEW_HEIGHT");if(_||y||T)return;let{imageWidth:v,imageHeight:R}=g.ref;if(!v||!R)return;let S=g.query("GET_IMAGE_PREVIEW_MIN_HEIGHT"),P=g.query("GET_IMAGE_PREVIEW_MAX_HEIGHT"),O=(I.getMetadata("exif")||{}).orientation||-1;if(O>=5&&O<=8&&([v,R]=[R,v]),!Zr(I.file)||g.query("GET_IMAGE_PREVIEW_UPSCALE")){let C=2048/v;v*=C,R*=C}let z=R/v,A=(I.getMetadata("crop")||{}).aspectRatio||z,F=Math.max(S,Math.min(R,P)),w=g.rect.element.width,L=Math.min(w*A,F);g.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:I.id,height:L})},m=({root:g})=>{g.ref.shouldRescale=!0},p=({root:g,action:b})=>{b.change.key==="crop"&&(g.ref.shouldRescale=!0)},f=({root:g,action:b})=>{g.ref.imageWidth=b.width,g.ref.imageHeight=b.height,g.ref.shouldRescale=!0,g.ref.shouldDrawPreview=!0,g.dispatch("KICK")};u.registerWriter(n({DID_RESIZE_ROOT:m,DID_STOP_RESIZE:m,DID_LOAD_ITEM:d,DID_IMAGE_PREVIEW_CALCULATE_SIZE:f,DID_UPDATE_ITEM_METADATA:p},({root:g,props:b})=>{g.ref.imagePreview&&(g.rect.element.hidden||(g.ref.shouldRescale&&(h(g,b),g.ref.shouldRescale=!1),g.ref.shouldDrawPreview&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{g.dispatch("DID_FINISH_CALCULATE_PREVIEWSIZE",{id:b.id})})}),g.ref.shouldDrawPreview=!1)))}))}),{options:{allowImagePreview:[!0,a.BOOLEAN],imagePreviewFilterItem:[()=>!0,a.FUNCTION],imagePreviewHeight:[null,a.INT],imagePreviewMinHeight:[44,a.INT],imagePreviewMaxHeight:[256,a.INT],imagePreviewMaxFileSize:[null,a.INT],imagePreviewZoomFactor:[2,a.INT],imagePreviewUpscale:[!1,a.BOOLEAN],imagePreviewMaxInstantPreviewFileSize:[1e6,a.INT],imagePreviewTransparencyIndicator:[null,a.STRING],imagePreviewCalculateAverageImageColor:[!1,a.BOOLEAN],imagePreviewMarkupShow:[!0,a.BOOLEAN],imagePreviewMarkupFilter:[()=>!0,a.FUNCTION]}}},kh=typeof window<"u"&&typeof window.document<"u";kh&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Kr}));var Jr=Kr;var Hh=e=>/^image/.test(e.type),Wh=(e,t)=>{let i=new Image;i.onload=()=>{let a=i.naturalWidth,n=i.naturalHeight;i=null,t({width:a,height:n})},i.onerror=()=>t(null),i.src=e},eo=({addFilter:e,utils:t})=>{let{Type:i}=t;return e("DID_LOAD_ITEM",(a,{query:n})=>new Promise((r,o)=>{let l=a.file;if(!Hh(l)||!n("GET_ALLOW_IMAGE_RESIZE"))return r(a);let s=n("GET_IMAGE_RESIZE_MODE"),u=n("GET_IMAGE_RESIZE_TARGET_WIDTH"),c=n("GET_IMAGE_RESIZE_TARGET_HEIGHT"),d=n("GET_IMAGE_RESIZE_UPSCALE");if(u===null&&c===null)return r(a);let h=u===null?c:u,m=c===null?h:c,p=URL.createObjectURL(l);Wh(p,f=>{if(URL.revokeObjectURL(p),!f)return r(a);let{width:g,height:b}=f,E=(a.getMetadata("exif")||{}).orientation||-1;if(E>=5&&E<=8&&([g,b]=[b,g]),g===h&&b===m)return r(a);if(!d){if(s==="cover"){if(g<=h||b<=m)return r(a)}else if(g<=h&&b<=h)return r(a)}a.setMetadata("resize",{mode:s,upscale:d,size:{width:h,height:m}}),r(a)})})),{options:{allowImageResize:[!0,i.BOOLEAN],imageResizeMode:["cover",i.STRING],imageResizeUpscale:[!0,i.BOOLEAN],imageResizeTargetWidth:[null,i.INT],imageResizeTargetHeight:[null,i.INT]}}},Yh=typeof window<"u"&&typeof window.document<"u";Yh&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:eo}));var to=eo;var $h=e=>/^image/.test(e.type),qh=e=>e.substr(0,e.lastIndexOf("."))||e,jh={jpeg:"jpg","svg+xml":"svg"},Xh=(e,t)=>{let i=qh(e),a=t.split("/")[1],n=jh[a]||a;return`${i}.${n}`},Qh=e=>/jpeg|png|svg\+xml/.test(e)?e:"image/jpeg",Zh=e=>/^image/.test(e.type),Kh={1:()=>[1,0,0,1,0,0],2:e=>[-1,0,0,1,e,0],3:(e,t)=>[-1,0,0,-1,e,t],4:(e,t)=>[1,0,0,-1,0,t],5:()=>[0,1,1,0,0,0],6:(e,t)=>[0,1,-1,0,t,0],7:(e,t)=>[0,-1,-1,0,t,e],8:e=>[0,-1,1,0,0,e]},Jh=(e,t,i)=>(i===-1&&(i=1),Kh[i](e,t)),kt=(e,t)=>({x:e,y:t}),em=(e,t)=>e.x*t.x+e.y*t.y,io=(e,t)=>kt(e.x-t.x,e.y-t.y),tm=(e,t)=>em(io(e,t),io(e,t)),ao=(e,t)=>Math.sqrt(tm(e,t)),no=(e,t)=>{let i=e,a=1.5707963267948966,n=t,r=1.5707963267948966-t,o=Math.sin(a),l=Math.sin(n),s=Math.sin(r),u=Math.cos(r),c=i/o,d=c*l,h=c*s;return kt(u*d,u*h)},im=(e,t)=>{let i=e.width,a=e.height,n=no(i,t),r=no(a,t),o=kt(e.x+Math.abs(n.x),e.y-Math.abs(n.y)),l=kt(e.x+e.width+Math.abs(r.y),e.y+Math.abs(r.x)),s=kt(e.x-Math.abs(r.y),e.y+e.height-Math.abs(r.x));return{width:ao(o,l),height:ao(o,s)}},lo=(e,t,i=0,a={x:.5,y:.5})=>{let n=a.x>.5?1-a.x:a.x,r=a.y>.5?1-a.y:a.y,o=n*2*e.width,l=r*2*e.height,s=im(t,i);return Math.max(s.width/o,s.height/l)},so=(e,t)=>{let i=e.width,a=i*t;a>e.height&&(a=e.height,i=a/t);let n=(e.width-i)*.5,r=(e.height-a)*.5;return{x:n,y:r,width:i,height:a}},ro=(e,t,i=1)=>{let a=e.height/e.width,n=1,r=t,o=1,l=a;l>r&&(l=r,o=l/a);let s=Math.max(n/o,r/l),u=e.width/(i*s*o),c=u*t;return{width:u,height:c}},co=e=>{e.width=1,e.height=1,e.getContext("2d").clearRect(0,0,1,1)},oo=e=>e&&(e.horizontal||e.vertical),am=(e,t,i)=>{if(t<=1&&!oo(i))return e.width=e.naturalWidth,e.height=e.naturalHeight,e;let a=document.createElement("canvas"),n=e.naturalWidth,r=e.naturalHeight,o=t>=5&&t<=8;o?(a.width=r,a.height=n):(a.width=n,a.height=r);let l=a.getContext("2d");if(t&&l.transform.apply(l,Jh(n,r,t)),oo(i)){let s=[1,0,0,1,0,0];(!o&&i.horizontal||o&i.vertical)&&(s[0]=-1,s[4]=n),(!o&&i.vertical||o&&i.horizontal)&&(s[3]=-1,s[5]=r),l.transform(...s)}return l.drawImage(e,0,0,n,r),a},nm=(e,t,i={},a={})=>{let{canvasMemoryLimit:n,background:r=null}=a,o=i.zoom||1,l=am(e,t,i.flip),s={width:l.width,height:l.height},u=i.aspectRatio||s.height/s.width,c=ro(s,u,o);if(n){let I=c.width*c.height;if(I>n){let _=Math.sqrt(n)/Math.sqrt(I);s.width=Math.floor(s.width*_),s.height=Math.floor(s.height*_),c=ro(s,u,o)}}let d=document.createElement("canvas"),h={x:c.width*.5,y:c.height*.5},m={x:0,y:0,width:c.width,height:c.height,center:h},p=typeof i.scaleToFit>"u"||i.scaleToFit,f=o*lo(s,so(m,u),i.rotation,p?i.center:{x:.5,y:.5});d.width=Math.round(c.width/f),d.height=Math.round(c.height/f),h.x/=f,h.y/=f;let g={x:h.x-s.width*(i.center?i.center.x:.5),y:h.y-s.height*(i.center?i.center.y:.5)},b=d.getContext("2d");r&&(b.fillStyle=r,b.fillRect(0,0,d.width,d.height)),b.translate(h.x,h.y),b.rotate(i.rotation||0),b.drawImage(l,g.x-h.x,g.y-h.y,s.width,s.height);let E=b.getImageData(0,0,d.width,d.height);return co(d),E},rm=(()=>typeof window<"u"&&typeof window.document<"u")();rm&&(HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,i){var a=this.toDataURL(t,i).split(",")[1];setTimeout(function(){for(var n=atob(a),r=n.length,o=new Uint8Array(r),l=0;lnew Promise(a=>{let n=i?i(e):e;Promise.resolve(n).then(r=>{r.toBlob(a,t.type,t.quality)})}),Ii=(e,t)=>Ht(e.x*t,e.y*t),bi=(e,t)=>Ht(e.x+t.x,e.y+t.y),uo=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:Ht(e.x/t,e.y/t)},Ye=(e,t,i)=>{let a=Math.cos(t),n=Math.sin(t),r=Ht(e.x-i.x,e.y-i.y);return Ht(i.x+a*r.x-n*r.y,i.y+n*r.x+a*r.y)},Ht=(e=0,t=0)=>({x:e,y:t}),he=(e,t,i=1,a)=>{if(typeof e=="string")return parseFloat(e)*i;if(typeof e=="number")return e*(a?t[a]:Math.min(t.width,t.height))},ot=(e,t,i)=>{let a=e.borderStyle||e.lineStyle||"solid",n=e.backgroundColor||e.fontColor||"transparent",r=e.borderColor||e.lineColor||"transparent",o=he(e.borderWidth||e.lineWidth,t,i),l=e.lineCap||"round",s=e.lineJoin||"round",u=typeof a=="string"?"":a.map(d=>he(d,t,i)).join(","),c=e.opacity||1;return{"stroke-linecap":l,"stroke-linejoin":s,"stroke-width":o||0,"stroke-dasharray":u,stroke:r,fill:n,opacity:c}},Ae=e=>e!=null,Rt=(e,t,i=1)=>{let a=he(e.x,t,i,"width")||he(e.left,t,i,"width"),n=he(e.y,t,i,"height")||he(e.top,t,i,"height"),r=he(e.width,t,i,"width"),o=he(e.height,t,i,"height"),l=he(e.right,t,i,"width"),s=he(e.bottom,t,i,"height");return Ae(n)||(Ae(o)&&Ae(s)?n=t.height-o-s:n=s),Ae(a)||(Ae(r)&&Ae(l)?a=t.width-r-l:a=l),Ae(r)||(Ae(a)&&Ae(l)?r=t.width-a-l:r=0),Ae(o)||(Ae(n)&&Ae(s)?o=t.height-n-s:o=0),{x:a||0,y:n||0,width:r||0,height:o||0}},lm=e=>e.map((t,i)=>`${i===0?"M":"L"} ${t.x} ${t.y}`).join(" "),ze=(e,t)=>Object.keys(t).forEach(i=>e.setAttribute(i,t[i])),sm="http://www.w3.org/2000/svg",_t=(e,t)=>{let i=document.createElementNS(sm,e);return t&&ze(i,t),i},cm=e=>ze(e,{...e.rect,...e.styles}),dm=e=>{let t=e.rect.x+e.rect.width*.5,i=e.rect.y+e.rect.height*.5,a=e.rect.width*.5,n=e.rect.height*.5;return ze(e,{cx:t,cy:i,rx:a,ry:n,...e.styles})},um={contain:"xMidYMid meet",cover:"xMidYMid slice"},hm=(e,t)=>{ze(e,{...e.rect,...e.styles,preserveAspectRatio:um[t.fit]||"none"})},mm={left:"start",center:"middle",right:"end"},pm=(e,t,i,a)=>{let n=he(t.fontSize,i,a),r=t.fontFamily||"sans-serif",o=t.fontWeight||"normal",l=mm[t.textAlign]||"start";ze(e,{...e.rect,...e.styles,"stroke-width":0,"font-weight":o,"font-size":n,"font-family":r,"text-anchor":l}),e.text!==t.text&&(e.text=t.text,e.textContent=t.text.length?t.text:" ")},fm=(e,t,i,a)=>{ze(e,{...e.rect,...e.styles,fill:"none"});let n=e.childNodes[0],r=e.childNodes[1],o=e.childNodes[2],l=e.rect,s={x:e.rect.x+e.rect.width,y:e.rect.y+e.rect.height};if(ze(n,{x1:l.x,y1:l.y,x2:s.x,y2:s.y}),!t.lineDecoration)return;r.style.display="none",o.style.display="none";let u=uo({x:s.x-l.x,y:s.y-l.y}),c=he(.05,i,a);if(t.lineDecoration.indexOf("arrow-begin")!==-1){let d=Ii(u,c),h=bi(l,d),m=Ye(l,2,h),p=Ye(l,-2,h);ze(r,{style:"display:block;",d:`M${m.x},${m.y} L${l.x},${l.y} L${p.x},${p.y}`})}if(t.lineDecoration.indexOf("arrow-end")!==-1){let d=Ii(u,-c),h=bi(s,d),m=Ye(s,2,h),p=Ye(s,-2,h);ze(o,{style:"display:block;",d:`M${m.x},${m.y} L${s.x},${s.y} L${p.x},${p.y}`})}},gm=(e,t,i,a)=>{ze(e,{...e.styles,fill:"none",d:lm(t.points.map(n=>({x:he(n.x,i,a,"width"),y:he(n.y,i,a,"height")})))})},Ti=e=>t=>_t(e,{id:t.id}),Em=e=>{let t=_t("image",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0"});return t.onload=()=>{t.setAttribute("opacity",e.opacity||1)},t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.src),t},Tm=e=>{let t=_t("g",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round"}),i=_t("line");t.appendChild(i);let a=_t("path");t.appendChild(a);let n=_t("path");return t.appendChild(n),t},Im={image:Em,rect:Ti("rect"),ellipse:Ti("ellipse"),text:Ti("text"),path:Ti("path"),line:Tm},bm={rect:cm,ellipse:dm,image:hm,text:pm,path:gm,line:fm},_m=(e,t)=>Im[e](t),Rm=(e,t,i,a,n)=>{t!=="path"&&(e.rect=Rt(i,a,n)),e.styles=ot(i,a,n),bm[t](e,i,a,n)},ho=(e,t)=>e[1].zIndex>t[1].zIndex?1:e[1].zIndexnew Promise(n=>{let{background:r=null}=a,o=new FileReader;o.onloadend=()=>{let l=o.result,s=document.createElement("div");s.style.cssText="position:absolute;pointer-events:none;width:0;height:0;visibility:hidden;",s.innerHTML=l;let u=s.querySelector("svg");document.body.appendChild(s);let c=u.getBBox();s.parentNode.removeChild(s);let d=s.querySelector("title"),h=u.getAttribute("viewBox")||"",m=u.getAttribute("width")||"",p=u.getAttribute("height")||"",f=parseFloat(m)||null,g=parseFloat(p)||null,b=(m.match(/[a-z]+/)||[])[0]||"",E=(p.match(/[a-z]+/)||[])[0]||"",I=h.split(" ").map(parseFloat),_=I.length?{x:I[0],y:I[1],width:I[2],height:I[3]}:c,y=f??_.width,T=g??_.height;u.style.overflow="visible",u.setAttribute("width",y),u.setAttribute("height",T);let v="";if(i&&i.length){let X={width:y,height:T};v=i.sort(ho).reduce((ue,U)=>{let W=_m(U[0],U[1]);return Rm(W,U[0],U[1],X),W.removeAttribute("id"),W.getAttribute("opacity")===1&&W.removeAttribute("opacity"),ue+` `+W.outerHTML+` `},""),v=` ${v.replace(/ /g," ")} -`}let R=t.aspectRatio||T/y,S=y,D=S*R,x=typeof t.scaleToFit>"u"||t.scaleToFit,O=t.center?t.center.x:.5,z=t.center?t.center.y:.5,A=lo({width:y,height:T},so({width:S,height:D},R),t.rotation,x?{x:O,y:z}:{x:.5,y:.5}),F=t.zoom*A,w=t.rotation*(180/Math.PI),L={x:S*.5,y:D*.5},C={x:L.x-y*O,y:L.y-T*z},P=[`rotate(${w} ${L.x} ${L.y})`,`translate(${L.x} ${L.y})`,`scale(${F})`,`translate(${-L.x} ${-L.y})`,`translate(${C.x} ${C.y})`],G=t.flip&&t.flip.horizontal,B=t.flip&&t.flip.vertical,X=[`scale(${G?-1:1} ${B?-1:1})`,`translate(${G?-y:0} ${B?-T:0})`],q=` -"u"||t.scaleToFit,O=t.center?t.center.x:.5,z=t.center?t.center.y:.5,A=lo({width:y,height:T},so({width:S,height:P},R),t.rotation,x?{x:O,y:z}:{x:.5,y:.5}),F=t.zoom*A,w=t.rotation*(180/Math.PI),L={x:S*.5,y:P*.5},C={x:L.x-y*O,y:L.y-T*z},D=[`rotate(${w} ${L.x} ${L.y})`,`translate(${L.x} ${L.y})`,`scale(${F})`,`translate(${-L.x} ${-L.y})`,`translate(${C.x} ${C.y})`],V=t.flip&&t.flip.horizontal,B=t.flip&&t.flip.vertical,j=[`scale(${V?-1:1} ${B?-1:1})`,`translate(${V?-y:0} ${B?-T:0})`],q=` + ${d?d.textContent:""} - - + + ${u.outerHTML}${v} -`;n(q)},o.readAsText(e)}),Sf=e=>{let t;try{t=new ImageData(e.width,e.height)}catch{t=document.createElement("canvas").getContext("2d").createImageData(e.width,e.height)}return t.data.set(e.data),t},wf=()=>{let e={resize:c,filter:u},t=(d,h)=>(d.forEach(f=>{h=e[f.type](h,f.data)}),h),i=(d,h)=>{let f=d.transforms,p=null;if(f.forEach(m=>{m.type==="filter"&&(p=m)}),p){let m=null;f.forEach(g=>{g.type==="resize"&&(m=g)}),m&&(m.data.matrix=p.data,f=f.filter(g=>g.type!=="filter"))}h(t(f,d.imageData))};self.onmessage=d=>{i(d.data.message,h=>{self.postMessage({id:d.data.id,message:h},[h.data.buffer])})};let a=1,n=1,r=1;function o(d,h,f){let p=h[d]/255,m=h[d+1]/255,g=h[d+2]/255,b=h[d+3]/255,E=p*f[0]+m*f[1]+g*f[2]+b*f[3]+f[4],I=p*f[5]+m*f[6]+g*f[7]+b*f[8]+f[9],_=p*f[10]+m*f[11]+g*f[12]+b*f[13]+f[14],y=p*f[15]+m*f[16]+g*f[17]+b*f[18]+f[19],T=Math.max(0,E*y)+a*(1-y),v=Math.max(0,I*y)+n*(1-y),R=Math.max(0,_*y)+r*(1-y);h[d]=Math.max(0,Math.min(1,T))*255,h[d+1]=Math.max(0,Math.min(1,v))*255,h[d+2]=Math.max(0,Math.min(1,R))*255}let l=self.JSON.stringify([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]);function s(d){return self.JSON.stringify(d||[])===l}function u(d,h){if(!h||s(h))return d;let f=d.data,p=f.length,m=h[0],g=h[1],b=h[2],E=h[3],I=h[4],_=h[5],y=h[6],T=h[7],v=h[8],R=h[9],S=h[10],D=h[11],x=h[12],O=h[13],z=h[14],A=h[15],F=h[16],w=h[17],L=h[18],C=h[19],P=0,G=0,B=0,X=0,q=0,j=0,ue=0,U=0,W=0,$=0,le=0,J=0;for(;P1&&p===!1)return u(d,b);m=d.width*A,g=d.height*A}let E=d.width,I=d.height,_=Math.round(m),y=Math.round(g),T=d.data,v=new Uint8ClampedArray(_*y*4),R=E/_,S=I/y,D=Math.ceil(R*.5),x=Math.ceil(S*.5);for(let O=0;O=-1&&le<=1&&(F=2*le*le*le-3*le*le+1,F>0)){$=4*(W+q*E);let J=T[$+3];B+=F*J,L+=F,J<255&&(F=F*J/250),C+=F*T[$],P+=F*T[$+1],G+=F*T[$+2],w+=F}}}v[A]=C/w,v[A+1]=P/w,v[A+2]=G/w,v[A+3]=B/L,b&&o(A,v,b)}return{data:v,width:_,height:y}}},vf=(e,t)=>{if(e.getUint32(t+4,!1)!==1165519206)return;t+=4;let i=e.getUint16(t+=6,!1)===18761;t+=e.getUint32(t+4,i);let a=e.getUint16(t,i);t+=2;for(let n=0;n{let t=new DataView(e);if(t.getUint16(0)!==65496)return null;let i=2,a,n,r=!1;for(;i=65504&&a<=65519||a===65534)||(r||(r=vf(t,i,n)),i+n>t.byteLength)));)i+=n;return e.slice(0,i)},Lf=e=>new Promise(t=>{let i=new FileReader;i.onload=()=>t(Af(i.result)||null),i.readAsArrayBuffer(e.slice(0,256*1024))}),Mf=()=>window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,Of=(e,t)=>{let i=Mf();if(i){let a=new i;return a.append(e),a.getBlob(t)}return new Blob([e],{type:t})},xf=()=>Math.random().toString(36).substr(2,9),Df=e=>{let t=new Blob(["(",e.toString(),")()"],{type:"application/javascript"}),i=URL.createObjectURL(t),a=new Worker(i),n=[];return{transfer:()=>{},post:(r,o,l)=>{let s=xf();n[s]=o,a.onmessage=u=>{let c=n[u.data.id];c&&(c(u.data.message),delete n[u.data.id])},a.postMessage({id:s,message:r},l)},terminate:()=>{a.terminate(),URL.revokeObjectURL(i)}}},Pf=e=>new Promise((t,i)=>{let a=new Image;a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Ff=e=>e.reduce((t,i)=>t.then(a=>i().then(Array.prototype.concat.bind(a))),Promise.resolve([])),Cf=(e,t)=>new Promise(i=>{let a={width:e.width,height:e.height},n=e.getContext("2d"),r=t.sort(ho).map(o=>()=>new Promise(l=>{kf[o[0]](n,a,o[1],l)&&l()}));Ff(r).then(()=>i(e))}),yt=(e,t)=>{e.beginPath(),e.lineCap=t["stroke-linecap"],e.lineJoin=t["stroke-linejoin"],e.lineWidth=t["stroke-width"],t["stroke-dasharray"].length&&e.setLineDash(t["stroke-dasharray"].split(",")),e.fillStyle=t.fill,e.strokeStyle=t.stroke,e.globalAlpha=t.opacity||1},St=e=>{e.fill(),e.stroke(),e.globalAlpha=1},zf=(e,t,i)=>{let a=Rt(i,t),n=rt(i,t);return yt(e,n),e.rect(a.x,a.y,a.width,a.height),St(e,n),!0},Nf=(e,t,i)=>{let a=Rt(i,t),n=rt(i,t);yt(e,n);let r=a.x,o=a.y,l=a.width,s=a.height,u=.5522848,c=l/2*u,d=s/2*u,h=r+l,f=o+s,p=r+l/2,m=o+s/2;return e.moveTo(r,m),e.bezierCurveTo(r,m-d,p-c,o,p,o),e.bezierCurveTo(p+c,o,h,m-d,h,m),e.bezierCurveTo(h,m+d,p+c,f,p,f),e.bezierCurveTo(p-c,f,r,m+d,r,m),St(e,n),!0},Bf=(e,t,i,a)=>{let n=Rt(i,t),r=rt(i,t);yt(e,r);let o=new Image;new URL(i.src,window.location.href).origin!==window.location.origin&&(o.crossOrigin=""),o.onload=()=>{if(i.fit==="cover"){let s=n.width/n.height,u=s>1?o.width:o.height*s,c=s>1?o.width/s:o.height,d=o.width*.5-u*.5,h=o.height*.5-c*.5;e.drawImage(o,d,h,u,c,n.x,n.y,n.width,n.height)}else if(i.fit==="contain"){let s=Math.min(n.width/o.width,n.height/o.height),u=s*o.width,c=s*o.height,d=n.x+n.width*.5-u*.5,h=n.y+n.height*.5-c*.5;e.drawImage(o,0,0,o.width,o.height,d,h,u,c)}else e.drawImage(o,0,0,o.width,o.height,n.x,n.y,n.width,n.height);St(e,r),a()},o.src=i.src},Gf=(e,t,i)=>{let a=Rt(i,t),n=rt(i,t);yt(e,n);let r=he(i.fontSize,t),o=i.fontFamily||"sans-serif",l=i.fontWeight||"normal",s=i.textAlign||"left";return e.font=`${l} ${r}px ${o}`,e.textAlign=s,e.fillText(i.text,a.x,a.y),St(e,n),!0},Vf=(e,t,i)=>{let a=rt(i,t);yt(e,a),e.beginPath();let n=i.points.map(o=>({x:he(o.x,t,1,"width"),y:he(o.y,t,1,"height")}));e.moveTo(n[0].x,n[0].y);let r=n.length;for(let o=1;o{let a=Rt(i,t),n=rt(i,t);yt(e,n),e.beginPath();let r={x:a.x,y:a.y},o={x:a.x+a.width,y:a.y+a.height};e.moveTo(r.x,r.y),e.lineTo(o.x,o.y);let l=uo({x:o.x-r.x,y:o.y-r.y}),s=.04*Math.min(t.width,t.height);if(i.lineDecoration.indexOf("arrow-begin")!==-1){let u=Ii(l,s),c=bi(r,u),d=Ye(r,2,c),h=Ye(r,-2,c);e.moveTo(d.x,d.y),e.lineTo(r.x,r.y),e.lineTo(h.x,h.y)}if(i.lineDecoration.indexOf("arrow-end")!==-1){let u=Ii(l,-s),c=bi(o,u),d=Ye(o,2,c),h=Ye(o,-2,c);e.moveTo(d.x,d.y),e.lineTo(o.x,o.y),e.lineTo(h.x,h.y)}return St(e,n),!0},kf={rect:zf,ellipse:Nf,image:Bf,text:Gf,line:Uf,path:Vf},Hf=e=>{let t=document.createElement("canvas");return t.width=e.width,t.height=e.height,t.getContext("2d").putImageData(e,0,0),t},Wf=(e,t,i={})=>new Promise((a,n)=>{if(!e||!Qh(e))return n({status:"not an image file",file:e});let{stripImageHead:r,beforeCreateBlob:o,afterCreateBlob:l,canvasMemoryLimit:s}=i,{crop:u,size:c,filter:d,markup:h,output:f}=t,p=t.image&&t.image.orientation?Math.max(1,Math.min(8,t.image.orientation)):null,m=f&&f.quality,g=m===null?null:m/100,b=f&&f.type||null,E=f&&f.background||null,I=[];c&&(typeof c.width=="number"||typeof c.height=="number")&&I.push({type:"resize",data:c}),d&&d.length===20&&I.push({type:"filter",data:d});let _=v=>{let R=l?l(v):v;Promise.resolve(R).then(a)},y=(v,R)=>{let S=Hf(v),D=h.length?Cf(S,h):S;Promise.resolve(D).then(x=>{of(x,R,o).then(O=>{if(co(x),r)return _(O);Lf(e).then(z=>{z!==null&&(O=new Blob([z,O.slice(20)],{type:O.type})),_(O)})}).catch(n)})};if(/svg/.test(e.type)&&b===null)return yf(e,u,h,{background:E}).then(v=>{a(Of(v,"image/svg+xml"))});let T=URL.createObjectURL(e);Pf(T).then(v=>{URL.revokeObjectURL(T);let R=nf(v,p,u,{canvasMemoryLimit:s,background:E}),S={quality:g,type:b||e.type};if(!I.length)return y(R,S);let D=Df(wf);D.post({transforms:I,imageData:R},x=>{y(Sf(x),S),D.terminate()},[R.data.buffer])}).catch(n)}),Yf=["x","y","left","top","right","bottom","width","height"],$f=e=>typeof e=="string"&&/%/.test(e)?parseFloat(e)/100:e,qf=e=>{let[t,i]=e,a=i.points?{}:Yf.reduce((n,r)=>(n[r]=$f(i[r]),n),{});return[t,{zIndex:0,...i,...a}]},Xf=e=>new Promise((t,i)=>{let a=new Image;a.src=URL.createObjectURL(e);let n=()=>{let o=a.naturalWidth,l=a.naturalHeight;o&&l&&(URL.revokeObjectURL(a.src),clearInterval(r),t({width:o,height:l}))};a.onerror=o=>{URL.revokeObjectURL(a.src),clearInterval(r),i(o)};let r=setInterval(n,1);n()});typeof window<"u"&&typeof window.document<"u"&&(HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,i){let a=this;setTimeout(()=>{let n=a.toDataURL(t,i).split(",")[1],r=atob(n),o=r.length,l=new Uint8Array(o);for(;o--;)l[o]=r.charCodeAt(o);e(new Blob([l],{type:t||"image/png"}))})}}));var _a=typeof window<"u"&&typeof window.document<"u",jf=_a&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,fo=({addFilter:e,utils:t})=>{let{Type:i,forin:a,getFileFromBlob:n,isFile:r}=t,o=["crop","resize","filter","markup","output"],l=c=>(d,h,f)=>d(h,c?c(f):f),s=c=>c.aspectRatio===null&&c.rotation===0&&c.zoom===1&&c.center&&c.center.x===.5&&c.center.y===.5&&c.flip&&c.flip.horizontal===!1&&c.flip.vertical===!1;e("SHOULD_PREPARE_OUTPUT",(c,{query:d})=>new Promise(h=>{h(!d("IS_ASYNC"))}));let u=(c,d,h)=>new Promise(f=>{if(!c("GET_ALLOW_IMAGE_TRANSFORM")||h.archived||!r(d)||!Yh(d))return f(!1);Xf(d).then(()=>{let p=c("GET_IMAGE_TRANSFORM_IMAGE_FILTER");if(p){let m=p(d);if(m==null)return handleRevert(!0);if(typeof m=="boolean")return f(m);if(typeof m.then=="function")return m.then(f)}f(!0)}).catch(p=>{f(!1)})});return e("DID_CREATE_ITEM",(c,{query:d,dispatch:h})=>{d("GET_ALLOW_IMAGE_TRANSFORM")&&c.extend("requestPrepare",()=>new Promise((f,p)=>{h("REQUEST_PREPARE_OUTPUT",{query:c.id,item:c,success:f,failure:p},!0)}))}),e("PREPARE_OUTPUT",(c,{query:d,item:h})=>new Promise(f=>{u(d,c,h).then(p=>{if(!p)return f(c);let m=[];d("GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_ORIGINAL")&&m.push(()=>new Promise(R=>{R({name:d("GET_IMAGE_TRANSFORM_VARIANTS_ORIGINAL_NAME"),file:c})})),d("GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_DEFAULT")&&m.push((R,S,D)=>new Promise(x=>{R(S,D).then(O=>x({name:d("GET_IMAGE_TRANSFORM_VARIANTS_DEFAULT_NAME"),file:O}))}));let g=d("GET_IMAGE_TRANSFORM_VARIANTS")||{};a(g,(R,S)=>{let D=l(S);m.push((x,O,z)=>new Promise(A=>{D(x,O,z).then(F=>A({name:R,file:F}))}))});let b=d("GET_IMAGE_TRANSFORM_OUTPUT_QUALITY"),E=d("GET_IMAGE_TRANSFORM_OUTPUT_QUALITY_MODE"),I=b===null?null:b/100,_=d("GET_IMAGE_TRANSFORM_OUTPUT_MIME_TYPE"),y=d("GET_IMAGE_TRANSFORM_CLIENT_TRANSFORMS")||o;h.setMetadata("output",{type:_,quality:I,client:y},!0);let T=(R,S)=>new Promise((D,x)=>{let O={...S};Object.keys(O).filter(B=>B!=="exif").forEach(B=>{y.indexOf(B)===-1&&delete O[B]});let{resize:z,exif:A,output:F,crop:w,filter:L,markup:C}=O,P={image:{orientation:A?A.orientation:null},output:F&&(F.type||typeof F.quality=="number"||F.background)?{type:F.type,quality:typeof F.quality=="number"?F.quality*100:null,background:F.background||d("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR")||null}:void 0,size:z&&(z.size.width||z.size.height)?{mode:z.mode,upscale:z.upscale,...z.size}:void 0,crop:w&&!s(w)?{...w}:void 0,markup:C&&C.length?C.map(qf):[],filter:L};if(P.output){let B=F.type?F.type!==R.type:!1,X=/\/jpe?g$/.test(R.type),q=F.quality!==null?X&&E==="always":!1;if(!!!(P.size||P.crop||P.filter||B||q))return D(R)}let G={beforeCreateBlob:d("GET_IMAGE_TRANSFORM_BEFORE_CREATE_BLOB"),afterCreateBlob:d("GET_IMAGE_TRANSFORM_AFTER_CREATE_BLOB"),canvasMemoryLimit:d("GET_IMAGE_TRANSFORM_CANVAS_MEMORY_LIMIT"),stripImageHead:d("GET_IMAGE_TRANSFORM_OUTPUT_STRIP_IMAGE_HEAD")};Wf(R,P,G).then(B=>{let X=n(B,Xh(R.name,jh(B.type)));D(X)}).catch(x)}),v=m.map(R=>R(T,c,h.getMetadata()));Promise.all(v).then(R=>{f(R.length===1&&R[0].name===null?R[0].file:R)})})})),{options:{allowImageTransform:[!0,i.BOOLEAN],imageTransformImageFilter:[null,i.FUNCTION],imageTransformOutputMimeType:[null,i.STRING],imageTransformOutputQuality:[null,i.INT],imageTransformOutputStripImageHead:[!0,i.BOOLEAN],imageTransformClientTransforms:[null,i.ARRAY],imageTransformOutputQualityMode:["always",i.STRING],imageTransformVariants:[null,i.OBJECT],imageTransformVariantsIncludeDefault:[!0,i.BOOLEAN],imageTransformVariantsDefaultName:[null,i.STRING],imageTransformVariantsIncludeOriginal:[!1,i.BOOLEAN],imageTransformVariantsOriginalName:["original_",i.STRING],imageTransformBeforeCreateBlob:[null,i.FUNCTION],imageTransformAfterCreateBlob:[null,i.FUNCTION],imageTransformCanvasMemoryLimit:[_a&&jf?4096*4096:null,i.INT],imageTransformCanvasBackgroundColor:[null,i.STRING]}}};_a&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:fo}));var po=fo;var Ra=e=>/^video/.test(e.type),Wt=e=>/^audio/.test(e.type),ya=class{constructor(t,i){this.mediaEl=t,this.audioElems=i,this.onplayhead=!1,this.duration=0,this.timelineWidth=this.audioElems.timeline.offsetWidth-this.audioElems.playhead.offsetWidth,this.moveplayheadFn=this.moveplayhead.bind(this),this.registerListeners()}registerListeners(){this.mediaEl.addEventListener("timeupdate",this.timeUpdate.bind(this),!1),this.mediaEl.addEventListener("canplaythrough",()=>this.duration=this.mediaEl.duration,!1),this.audioElems.timeline.addEventListener("click",this.timelineClicked.bind(this),!1),this.audioElems.button.addEventListener("click",this.play.bind(this)),this.audioElems.playhead.addEventListener("mousedown",this.mouseDown.bind(this),!1),window.addEventListener("mouseup",this.mouseUp.bind(this),!1)}play(){this.mediaEl.paused?this.mediaEl.play():this.mediaEl.pause(),this.audioElems.button.classList.toggle("play"),this.audioElems.button.classList.toggle("pause")}timeUpdate(){let t=this.mediaEl.currentTime/this.duration*100;this.audioElems.playhead.style.marginLeft=t+"%",this.mediaEl.currentTime===this.duration&&(this.audioElems.button.classList.toggle("play"),this.audioElems.button.classList.toggle("pause"))}moveplayhead(t){let i=t.clientX-this.getPosition(this.audioElems.timeline);i>=0&&i<=this.timelineWidth&&(this.audioElems.playhead.style.marginLeft=i+"px"),i<0&&(this.audioElems.playhead.style.marginLeft="0px"),i>this.timelineWidth&&(this.audioElems.playhead.style.marginLeft=this.timelineWidth-4+"px")}timelineClicked(t){this.moveplayhead(t),this.mediaEl.currentTime=this.duration*this.clickPercent(t)}mouseDown(){this.onplayhead=!0,window.addEventListener("mousemove",this.moveplayheadFn,!0),this.mediaEl.removeEventListener("timeupdate",this.timeUpdate.bind(this),!1)}mouseUp(t){window.removeEventListener("mousemove",this.moveplayheadFn,!0),this.onplayhead==!0&&(this.moveplayhead(t),this.mediaEl.currentTime=this.duration*this.clickPercent(t),this.mediaEl.addEventListener("timeupdate",this.timeUpdate.bind(this),!1)),this.onplayhead=!1}clickPercent(t){return(t.clientX-this.getPosition(this.audioElems.timeline))/this.timelineWidth}getPosition(t){return t.getBoundingClientRect().left}},Qf=e=>e.utils.createView({name:"media-preview",tag:"div",ignoreRect:!0,create:({root:t,props:i})=>{let{id:a}=i,n=t.query("GET_ITEM",{id:i.id}),r=Wt(n.file)?"audio":"video";if(t.ref.media=document.createElement(r),t.ref.media.setAttribute("controls",!0),t.element.appendChild(t.ref.media),Wt(n.file)){let o=document.createDocumentFragment();t.ref.audio=[],t.ref.audio.container=document.createElement("div"),t.ref.audio.button=document.createElement("span"),t.ref.audio.timeline=document.createElement("div"),t.ref.audio.playhead=document.createElement("div"),t.ref.audio.container.className="audioplayer",t.ref.audio.button.className="playpausebtn play",t.ref.audio.timeline.className="timeline",t.ref.audio.playhead.className="playhead",t.ref.audio.timeline.appendChild(t.ref.audio.playhead),t.ref.audio.container.appendChild(t.ref.audio.button),t.ref.audio.container.appendChild(t.ref.audio.timeline),o.appendChild(t.ref.audio.container),t.element.appendChild(o)}},write:e.utils.createRoute({DID_MEDIA_PREVIEW_LOAD:({root:t,props:i})=>{let{id:a}=i,n=t.query("GET_ITEM",{id:i.id});if(!n)return;let r=window.URL||window.webkitURL,o=new Blob([n.file],{type:n.file.type});t.ref.media.type=n.file.type,t.ref.media.src=n.file.mock&&n.file.url||r.createObjectURL(o),Wt(n.file)&&new ya(t.ref.media,t.ref.audio),t.ref.media.addEventListener("loadeddata",()=>{let l=75;if(Ra(n.file)){let s=t.ref.media.offsetWidth,u=t.ref.media.videoWidth/s;l=t.ref.media.videoHeight/u}t.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:i.id,height:l})},!1)}})}),Zf=e=>{let t=({root:a,props:n})=>{let{id:r}=n;a.query("GET_ITEM",r)&&a.dispatch("DID_MEDIA_PREVIEW_LOAD",{id:r})},i=({root:a,props:n})=>{let r=Qf(e);a.ref.media=a.appendChildView(a.createChildView(r,{id:n.id}))};return e.utils.createView({name:"media-preview-wrapper",create:i,write:e.utils.createRoute({DID_MEDIA_PREVIEW_CONTAINER_CREATE:t})})},Sa=e=>{let{addFilter:t,utils:i}=e,{Type:a,createRoute:n}=i,r=Zf(e);return t("CREATE_VIEW",o=>{let{is:l,view:s,query:u}=o;if(!l("file"))return;let c=({root:d,props:h})=>{let{id:f}=h,p=u("GET_ITEM",f),m=u("GET_ALLOW_VIDEO_PREVIEW"),g=u("GET_ALLOW_AUDIO_PREVIEW");!p||p.archived||(!Ra(p.file)||!m)&&(!Wt(p.file)||!g)||(d.ref.mediaPreview=s.appendChildView(s.createChildView(r,{id:f})),d.dispatch("DID_MEDIA_PREVIEW_CONTAINER_CREATE",{id:f}))};s.registerWriter(n({DID_LOAD_ITEM:c},({root:d,props:h})=>{let{id:f}=h,p=u("GET_ITEM",f),m=d.query("GET_ALLOW_VIDEO_PREVIEW"),g=d.query("GET_ALLOW_AUDIO_PREVIEW");!p||(!Ra(p.file)||!m)&&(!Wt(p.file)||!g)||d.rect.element.hidden}))}),{options:{allowVideoPreview:[!0,a.BOOLEAN],allowAudioPreview:[!0,a.BOOLEAN]}}},Kf=typeof window<"u"&&typeof window.document<"u";Kf&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Sa}));var mo={labelIdle:'\u0627\u0633\u062D\u0628 \u0648 \u0627\u062F\u0631\u062C \u0645\u0644\u0641\u0627\u062A\u0643 \u0623\u0648 \u062A\u0635\u0641\u062D ',labelInvalidField:"\u0627\u0644\u062D\u0642\u0644 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0645\u0644\u0641\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629",labelFileWaitingForSize:"\u0628\u0627\u0646\u062A\u0638\u0627\u0631 \u0627\u0644\u062D\u062C\u0645",labelFileSizeNotAvailable:"\u0627\u0644\u062D\u062C\u0645 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D",labelFileLoading:"\u0628\u0627\u0644\u0625\u0646\u062A\u0638\u0627\u0631",labelFileLoadError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u062D\u0645\u064A\u0644",labelFileProcessing:"\u064A\u062A\u0645 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingComplete:"\u062A\u0645 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingAborted:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingRevertError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u0631\u0627\u062C\u0639",labelFileRemoveError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062D\u0630\u0641",labelTapToCancel:"\u0627\u0646\u0642\u0631 \u0644\u0644\u0625\u0644\u063A\u0627\u0621",labelTapToRetry:"\u0627\u0646\u0642\u0631 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",labelTapToUndo:"\u0627\u0646\u0642\u0631 \u0644\u0644\u062A\u0631\u0627\u062C\u0639",labelButtonRemoveItem:"\u0645\u0633\u062D",labelButtonAbortItemLoad:"\u0625\u0644\u063A\u0627\u0621",labelButtonRetryItemLoad:"\u0625\u0639\u0627\u062F\u0629",labelButtonAbortItemProcessing:"\u0625\u0644\u063A\u0627\u0621",labelButtonUndoItemProcessing:"\u062A\u0631\u0627\u062C\u0639",labelButtonRetryItemProcessing:"\u0625\u0639\u0627\u062F\u0629",labelButtonProcessItem:"\u0631\u0641\u0639",labelMaxFileSizeExceeded:"\u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u0627",labelMaxFileSize:"\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0623\u0642\u0635\u0649: {filesize}",labelMaxTotalFileSizeExceeded:"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u062D\u062C\u0645 \u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A",labelMaxTotalFileSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641: {filesize}",labelFileTypeNotAllowed:"\u0645\u0644\u0641 \u0645\u0646 \u0646\u0648\u0639 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",fileValidateTypeLabelExpectedTypes:"\u062A\u062A\u0648\u0642\u0639 {allButLastType} \u0645\u0646 {lastType}",imageValidateSizeLabelFormatError:"\u0646\u0648\u0639 \u0627\u0644\u0635\u0648\u0631\u0629 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",imageValidateSizeLabelImageSizeTooSmall:"\u0627\u0644\u0635\u0648\u0631\u0629 \u0635\u063A\u064A\u0631 \u062C\u062F\u0627",imageValidateSizeLabelImageSizeTooBig:"\u0627\u0644\u0635\u0648\u0631\u0629 \u0643\u0628\u064A\u0631\u0629 \u062C\u062F\u0627",imageValidateSizeLabelExpectedMinSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 \u0644\u0644\u0623\u0628\u0639\u0627\u062F \u0647\u0648: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0623\u0628\u0639\u0627\u062F \u0647\u0648: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0627\u0644\u062F\u0642\u0629 \u0636\u0639\u064A\u0641\u0629 \u062C\u062F\u0627",imageValidateSizeLabelImageResolutionTooHigh:"\u0627\u0644\u062F\u0642\u0629 \u0645\u0631\u062A\u0641\u0639\u0629 \u062C\u062F\u0627",imageValidateSizeLabelExpectedMinResolution:"\u0623\u0642\u0644 \u062F\u0642\u0629: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u0623\u0642\u0635\u0649 \u062F\u0642\u0629: {maxResolution}"};var go={labelIdle:'P\u0159et\xE1hn\u011Bte soubor sem (drag&drop) nebo Vyhledat ',labelInvalidField:"Pole obsahuje chybn\xE9 soubory",labelFileWaitingForSize:"Zji\u0161\u0165uje se velikost",labelFileSizeNotAvailable:"Velikost nen\xED zn\xE1m\xE1",labelFileLoading:"P\u0159en\xE1\u0161\xED se",labelFileLoadError:"Chyba p\u0159i p\u0159enosu",labelFileProcessing:"Prob\xEDh\xE1 upload",labelFileProcessingComplete:"Upload dokon\u010Den",labelFileProcessingAborted:"Upload stornov\xE1n",labelFileProcessingError:"Chyba p\u0159i uploadu",labelFileProcessingRevertError:"Chyba p\u0159i obnov\u011B",labelFileRemoveError:"Chyba p\u0159i odstran\u011Bn\xED",labelTapToCancel:"klepn\u011Bte pro storno",labelTapToRetry:"klepn\u011Bte pro opakov\xE1n\xED",labelTapToUndo:"klepn\u011Bte pro vr\xE1cen\xED",labelButtonRemoveItem:"Odstranit",labelButtonAbortItemLoad:"Storno",labelButtonRetryItemLoad:"Opakovat",labelButtonAbortItemProcessing:"Zp\u011Bt",labelButtonUndoItemProcessing:"Vr\xE1tit",labelButtonRetryItemProcessing:"Opakovat",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Soubor je p\u0159\xEDli\u0161 velk\xFD",labelMaxFileSize:"Nejv\u011Bt\u0161\xED velikost souboru je {filesize}",labelMaxTotalFileSizeExceeded:"P\u0159ekro\u010Dena maxim\xE1ln\xED celkov\xE1 velikost souboru",labelMaxTotalFileSize:"Maxim\xE1ln\xED celkov\xE1 velikost souboru je {filesize}",labelFileTypeNotAllowed:"Soubor je nespr\xE1vn\xE9ho typu",fileValidateTypeLabelExpectedTypes:"O\u010Dek\xE1v\xE1 se {allButLastType} nebo {lastType}",imageValidateSizeLabelFormatError:"Obr\xE1zek tohoto typu nen\xED podporov\xE1n",imageValidateSizeLabelImageSizeTooSmall:"Obr\xE1zek je p\u0159\xEDli\u0161 mal\xFD",imageValidateSizeLabelImageSizeTooBig:"Obr\xE1zek je p\u0159\xEDli\u0161 velk\xFD",imageValidateSizeLabelExpectedMinSize:"Minim\xE1ln\xED rozm\u011Br je {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maxim\xE1ln\xED rozm\u011Br je {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rozli\u0161en\xED je p\u0159\xEDli\u0161 mal\xE9",imageValidateSizeLabelImageResolutionTooHigh:"Rozli\u0161en\xED je p\u0159\xEDli\u0161 velk\xE9",imageValidateSizeLabelExpectedMinResolution:"Minim\xE1ln\xED rozli\u0161en\xED je {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maxim\xE1ln\xED rozli\u0161en\xED je {maxResolution}"};var Eo={labelIdle:'Tr\xE6k & slip filer eller Gennemse ',labelInvalidField:"Felt indeholder ugyldige filer",labelFileWaitingForSize:"Venter p\xE5 st\xF8rrelse",labelFileSizeNotAvailable:"St\xF8rrelse ikke tilg\xE6ngelig",labelFileLoading:"Loader",labelFileLoadError:"Load fejlede",labelFileProcessing:"Uploader",labelFileProcessingComplete:"Upload f\xE6rdig",labelFileProcessingAborted:"Upload annulleret",labelFileProcessingError:"Upload fejlede",labelFileProcessingRevertError:"Fortryd fejlede",labelFileRemoveError:"Fjern fejlede",labelTapToCancel:"tryk for at annullere",labelTapToRetry:"tryk for at pr\xF8ve igen",labelTapToUndo:"tryk for at fortryde",labelButtonRemoveItem:"Fjern",labelButtonAbortItemLoad:"Annuller",labelButtonRetryItemLoad:"Fors\xF8g igen",labelButtonAbortItemProcessing:"Annuller",labelButtonUndoItemProcessing:"Fortryd",labelButtonRetryItemProcessing:"Pr\xF8v igen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Filen er for stor",labelMaxFileSize:"Maksimal filst\xF8rrelse er {filesize}",labelMaxTotalFileSizeExceeded:"Maksimal totalst\xF8rrelse overskredet",labelMaxTotalFileSize:"Maksimal total filst\xF8rrelse er {filesize}",labelFileTypeNotAllowed:"Ugyldig filtype",fileValidateTypeLabelExpectedTypes:"Forventer {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Ugyldigt format",imageValidateSizeLabelImageSizeTooSmall:"Billedet er for lille",imageValidateSizeLabelImageSizeTooBig:"Billedet er for stort",imageValidateSizeLabelExpectedMinSize:"Minimum st\xF8rrelse er {minBredde} \xD7 {minH\xF8jde}",imageValidateSizeLabelExpectedMaxSize:"Maksimal st\xF8rrelse er {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"For lav opl\xF8sning",imageValidateSizeLabelImageResolutionTooHigh:"For h\xF8j opl\xF8sning",imageValidateSizeLabelExpectedMinResolution:"Minimum opl\xF8sning er {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimal opl\xF8sning er {maxResolution}"};var To={labelIdle:'Dateien ablegen oder ausw\xE4hlen ',labelInvalidField:"Feld beinhaltet ung\xFCltige Dateien",labelFileWaitingForSize:"Dateigr\xF6\xDFe berechnen",labelFileSizeNotAvailable:"Dateigr\xF6\xDFe nicht verf\xFCgbar",labelFileLoading:"Laden",labelFileLoadError:"Fehler beim Laden",labelFileProcessing:"Upload l\xE4uft",labelFileProcessingComplete:"Upload abgeschlossen",labelFileProcessingAborted:"Upload abgebrochen",labelFileProcessingError:"Fehler beim Upload",labelFileProcessingRevertError:"Fehler beim Wiederherstellen",labelFileRemoveError:"Fehler beim L\xF6schen",labelTapToCancel:"abbrechen",labelTapToRetry:"erneut versuchen",labelTapToUndo:"r\xFCckg\xE4ngig",labelButtonRemoveItem:"Entfernen",labelButtonAbortItemLoad:"Verwerfen",labelButtonRetryItemLoad:"Erneut versuchen",labelButtonAbortItemProcessing:"Abbrechen",labelButtonUndoItemProcessing:"R\xFCckg\xE4ngig",labelButtonRetryItemProcessing:"Erneut versuchen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Datei ist zu gro\xDF",labelMaxFileSize:"Maximale Dateigr\xF6\xDFe: {filesize}",labelMaxTotalFileSizeExceeded:"Maximale gesamte Dateigr\xF6\xDFe \xFCberschritten",labelMaxTotalFileSize:"Maximale gesamte Dateigr\xF6\xDFe: {filesize}",labelFileTypeNotAllowed:"Dateityp ung\xFCltig",fileValidateTypeLabelExpectedTypes:"Erwartet {allButLastType} oder {lastType}",imageValidateSizeLabelFormatError:"Bildtyp nicht unterst\xFCtzt",imageValidateSizeLabelImageSizeTooSmall:"Bild ist zu klein",imageValidateSizeLabelImageSizeTooBig:"Bild ist zu gro\xDF",imageValidateSizeLabelExpectedMinSize:"Mindestgr\xF6\xDFe: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximale Gr\xF6\xDFe: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Aufl\xF6sung ist zu niedrig",imageValidateSizeLabelImageResolutionTooHigh:"Aufl\xF6sung ist zu hoch",imageValidateSizeLabelExpectedMinResolution:"Mindestaufl\xF6sung: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximale Aufl\xF6sung: {maxResolution}"};var Io={labelIdle:'Drag & Drop your files or Browse ',labelInvalidField:"Field contains invalid files",labelFileWaitingForSize:"Waiting for size",labelFileSizeNotAvailable:"Size not available",labelFileLoading:"Loading",labelFileLoadError:"Error during load",labelFileProcessing:"Uploading",labelFileProcessingComplete:"Upload complete",labelFileProcessingAborted:"Upload cancelled",labelFileProcessingError:"Error during upload",labelFileProcessingRevertError:"Error during revert",labelFileRemoveError:"Error during remove",labelTapToCancel:"tap to cancel",labelTapToRetry:"tap to retry",labelTapToUndo:"tap to undo",labelButtonRemoveItem:"Remove",labelButtonAbortItemLoad:"Abort",labelButtonRetryItemLoad:"Retry",labelButtonAbortItemProcessing:"Cancel",labelButtonUndoItemProcessing:"Undo",labelButtonRetryItemProcessing:"Retry",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"File is too large",labelMaxFileSize:"Maximum file size is {filesize}",labelMaxTotalFileSizeExceeded:"Maximum total size exceeded",labelMaxTotalFileSize:"Maximum total file size is {filesize}",labelFileTypeNotAllowed:"File of invalid type",fileValidateTypeLabelExpectedTypes:"Expects {allButLastType} or {lastType}",imageValidateSizeLabelFormatError:"Image type not supported",imageValidateSizeLabelImageSizeTooSmall:"Image is too small",imageValidateSizeLabelImageSizeTooBig:"Image is too big",imageValidateSizeLabelExpectedMinSize:"Minimum size is {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum size is {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolution is too low",imageValidateSizeLabelImageResolutionTooHigh:"Resolution is too high",imageValidateSizeLabelExpectedMinResolution:"Minimum resolution is {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximum resolution is {maxResolution}"};var bo={labelIdle:'Arrastra y suelta tus archivos o Examinar ',labelInvalidField:"El campo contiene archivos inv\xE1lidos",labelFileWaitingForSize:"Esperando tama\xF1o",labelFileSizeNotAvailable:"Tama\xF1o no disponible",labelFileLoading:"Cargando",labelFileLoadError:"Error durante la carga",labelFileProcessing:"Cargando",labelFileProcessingComplete:"Carga completa",labelFileProcessingAborted:"Carga cancelada",labelFileProcessingError:"Error durante la carga",labelFileProcessingRevertError:"Error durante la reversi\xF3n",labelFileRemoveError:"Error durante la eliminaci\xF3n",labelTapToCancel:"toca para cancelar",labelTapToRetry:"tocar para volver a intentar",labelTapToUndo:"tocar para deshacer",labelButtonRemoveItem:"Eliminar",labelButtonAbortItemLoad:"Abortar",labelButtonRetryItemLoad:"Reintentar",labelButtonAbortItemProcessing:"Cancelar",labelButtonUndoItemProcessing:"Deshacer",labelButtonRetryItemProcessing:"Reintentar",labelButtonProcessItem:"Cargar",labelMaxFileSizeExceeded:"El archivo es demasiado grande",labelMaxFileSize:"El tama\xF1o m\xE1ximo del archivo es {filesize}",labelMaxTotalFileSizeExceeded:"Tama\xF1o total m\xE1ximo excedido",labelMaxTotalFileSize:"El tama\xF1o total m\xE1ximo del archivo es {filesize}",labelFileTypeNotAllowed:"Archivo de tipo no v\xE1lido",fileValidateTypeLabelExpectedTypes:"Espera {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipo de imagen no compatible",imageValidateSizeLabelImageSizeTooSmall:"La imagen es demasiado peque\xF1a",imageValidateSizeLabelImageSizeTooBig:"La imagen es demasiado grande",imageValidateSizeLabelExpectedMinSize:"El tama\xF1o m\xEDnimo es {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"El tama\xF1o m\xE1ximo es {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La resoluci\xF3n es demasiado baja",imageValidateSizeLabelImageResolutionTooHigh:"La resoluci\xF3n es demasiado alta",imageValidateSizeLabelExpectedMinResolution:"La resoluci\xF3n m\xEDnima es {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La resoluci\xF3n m\xE1xima es {maxResolution}"};var _o={labelIdle:'\u0641\u0627\u06CC\u0644 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0628\u06A9\u0634\u06CC\u062F \u0648 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F\u060C \u06CC\u0627 \u062C\u0633\u062A\u062C\u0648 \u06A9\u0646\u06CC\u062F ',labelInvalidField:"\u0641\u06CC\u0644\u062F \u062F\u0627\u0631\u0627\u06CC \u0641\u0627\u06CC\u0644 \u0647\u0627\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",labelFileWaitingForSize:"Waiting for size",labelFileSizeNotAvailable:"\u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 \u0645\u062C\u0627\u0632 \u0646\u06CC\u0633\u062A",labelFileLoading:"\u062F\u0631\u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileLoadError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u0627\u062C\u0631\u0627",labelFileProcessing:"\u062F\u0631\u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileProcessingComplete:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u06A9\u0627\u0645\u0644 \u0634\u062F",labelFileProcessingAborted:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u0644\u063A\u0648 \u0634\u062F",labelFileProcessingError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileProcessingRevertError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u0630\u0641",labelFileRemoveError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u0630\u0641",labelTapToCancel:"\u0628\u0631\u0627\u06CC \u0644\u063A\u0648 \u0636\u0631\u0628\u0647 \u0628\u0632\u0646\u06CC\u062F",labelTapToRetry:"\u0628\u0631\u0627\u06CC \u062A\u06A9\u0631\u0627\u0631 \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",labelTapToUndo:"\u0628\u0631\u0627\u06CC \u0628\u0631\u06AF\u0634\u062A \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",labelButtonRemoveItem:"\u062D\u0630\u0641",labelButtonAbortItemLoad:"\u0644\u063A\u0648",labelButtonRetryItemLoad:"\u062A\u06A9\u0631\u0627\u0631",labelButtonAbortItemProcessing:"\u0644\u063A\u0648",labelButtonUndoItemProcessing:"\u0628\u0631\u06AF\u0634\u062A",labelButtonRetryItemProcessing:"\u062A\u06A9\u0631\u0627\u0631",labelButtonProcessItem:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelMaxFileSizeExceeded:"\u0641\u0627\u06CC\u0644 \u0628\u0633\u06CC\u0627\u0631 \u062D\u062C\u06CC\u0645 \u0627\u0633\u062A",labelMaxFileSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0645\u062C\u0627\u0632 \u0641\u0627\u06CC\u0644 {filesize} \u0627\u0633\u062A",labelMaxTotalFileSizeExceeded:"\u0627\u0632 \u062D\u062F\u0627\u06A9\u062B\u0631 \u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 \u0628\u06CC\u0634\u062A\u0631 \u0634\u062F",labelMaxTotalFileSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 {filesize} \u0627\u0633\u062A",labelFileTypeNotAllowed:"\u0646\u0648\u0639 \u0641\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",fileValidateTypeLabelExpectedTypes:"\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 {allButLastType} \u06CC\u0627 {lastType}",imageValidateSizeLabelFormatError:"\u0641\u0631\u0645\u062A \u062A\u0635\u0648\u06CC\u0631 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u0646\u0645\u06CC \u0634\u0648\u062F",imageValidateSizeLabelImageSizeTooSmall:"\u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u06A9\u0648\u0686\u06A9 \u0627\u0633\u062A",imageValidateSizeLabelImageSizeTooBig:"\u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u0628\u0632\u0631\u06AF \u0627\u0633\u062A",imageValidateSizeLabelExpectedMinSize:"\u062D\u062F\u0627\u0642\u0644 \u0627\u0646\u062F\u0627\u0632\u0647 {minWidth} \xD7 {minHeight} \u0627\u0633\u062A",imageValidateSizeLabelExpectedMaxSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0627\u0646\u062F\u0627\u0632\u0647 {maxWidth} \xD7 {maxHeight} \u0627\u0633\u062A",imageValidateSizeLabelImageResolutionTooLow:"\u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u06A9\u0645 \u0627\u0633\u062A",imageValidateSizeLabelImageResolutionTooHigh:"\u0648\u0636\u0648\u0639 \u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u0632\u06CC\u0627\u062F \u0627\u0633\u062A",imageValidateSizeLabelExpectedMinResolution:"\u062D\u062F\u0627\u0642\u0644 \u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 {minResolution} \u0627\u0633\u062A",imageValidateSizeLabelExpectedMaxResolution:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 {maxResolution} \u0627\u0633\u062A"};var Ro={labelIdle:'Ved\xE4 ja pudota tiedostoja tai Selaa ',labelInvalidField:"Kent\xE4ss\xE4 on virheellisi\xE4 tiedostoja",labelFileWaitingForSize:"Odotetaan kokoa",labelFileSizeNotAvailable:"Kokoa ei saatavilla",labelFileLoading:"Ladataan",labelFileLoadError:"Virhe latauksessa",labelFileProcessing:"L\xE4hetet\xE4\xE4n",labelFileProcessingComplete:"L\xE4hetys valmis",labelFileProcessingAborted:"L\xE4hetys peruttu",labelFileProcessingError:"Virhe l\xE4hetyksess\xE4",labelFileProcessingRevertError:"Virhe palautuksessa",labelFileRemoveError:"Virhe poistamisessa",labelTapToCancel:"peruuta napauttamalla",labelTapToRetry:"yrit\xE4 uudelleen napauttamalla",labelTapToUndo:"kumoa napauttamalla",labelButtonRemoveItem:"Poista",labelButtonAbortItemLoad:"Keskeyt\xE4",labelButtonRetryItemLoad:"Yrit\xE4 uudelleen",labelButtonAbortItemProcessing:"Peruuta",labelButtonUndoItemProcessing:"Kumoa",labelButtonRetryItemProcessing:"Yrit\xE4 uudelleen",labelButtonProcessItem:"L\xE4het\xE4",labelMaxFileSizeExceeded:"Tiedoston koko on liian suuri",labelMaxFileSize:"Tiedoston maksimikoko on {filesize}",labelMaxTotalFileSizeExceeded:"Tiedostojen yhdistetty maksimikoko ylitetty",labelMaxTotalFileSize:"Tiedostojen yhdistetty maksimikoko on {filesize}",labelFileTypeNotAllowed:"Tiedostotyyppi\xE4 ei sallita",fileValidateTypeLabelExpectedTypes:"Sallitaan {allButLastType} tai {lastType}",imageValidateSizeLabelFormatError:"Kuvatyyppi\xE4 ei tueta",imageValidateSizeLabelImageSizeTooSmall:"Kuva on liian pieni",imageValidateSizeLabelImageSizeTooBig:"Kuva on liian suuri",imageValidateSizeLabelExpectedMinSize:"Minimikoko on {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksimikoko on {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resoluutio on liian pieni",imageValidateSizeLabelImageResolutionTooHigh:"Resoluutio on liian suuri",imageValidateSizeLabelExpectedMinResolution:"Minimiresoluutio on {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimiresoluutio on {maxResolution}"};var yo={labelIdle:'Faites glisser vos fichiers ou Parcourir ',labelInvalidField:"Le champ contient des fichiers invalides",labelFileWaitingForSize:"En attente de taille",labelFileSizeNotAvailable:"Taille non disponible",labelFileLoading:"Chargement",labelFileLoadError:"Erreur durant le chargement",labelFileProcessing:"Traitement",labelFileProcessingComplete:"Traitement effectu\xE9",labelFileProcessingAborted:"Traitement interrompu",labelFileProcessingError:"Erreur durant le traitement",labelFileProcessingRevertError:"Erreur durant la restauration",labelFileRemoveError:"Erreur durant la suppression",labelTapToCancel:"appuyer pour annuler",labelTapToRetry:"appuyer pour r\xE9essayer",labelTapToUndo:"appuyer pour revenir en arri\xE8re",labelButtonRemoveItem:"Retirer",labelButtonAbortItemLoad:"Annuler",labelButtonRetryItemLoad:"Recommencer",labelButtonAbortItemProcessing:"Annuler",labelButtonUndoItemProcessing:"Revenir en arri\xE8re",labelButtonRetryItemProcessing:"Recommencer",labelButtonProcessItem:"Transf\xE9rer",labelMaxFileSizeExceeded:"Le fichier est trop volumineux",labelMaxFileSize:"La taille maximale de fichier est {filesize}",labelMaxTotalFileSizeExceeded:"Taille totale maximale d\xE9pass\xE9e",labelMaxTotalFileSize:"La taille totale maximale des fichiers est {filesize}",labelFileTypeNotAllowed:"Fichier non valide",fileValidateTypeLabelExpectedTypes:"Attendu {allButLastType} ou {lastType}",imageValidateSizeLabelFormatError:"Type d'image non pris en charge",imageValidateSizeLabelImageSizeTooSmall:"L'image est trop petite",imageValidateSizeLabelImageSizeTooBig:"L'image est trop grande",imageValidateSizeLabelExpectedMinSize:"La taille minimale est {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La taille maximale est {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La r\xE9solution est trop faible",imageValidateSizeLabelImageResolutionTooHigh:"La r\xE9solution est trop \xE9lev\xE9e",imageValidateSizeLabelExpectedMinResolution:"La r\xE9solution minimale est {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La r\xE9solution maximale est {maxResolution}"};var So={labelIdle:'Mozgasd ide a f\xE1jlt a felt\xF6lt\xE9shez, vagy tall\xF3z\xE1s ',labelInvalidField:"A mez\u0151 \xE9rv\xE9nytelen f\xE1jlokat tartalmaz",labelFileWaitingForSize:"F\xE1ljm\xE9ret kisz\xE1mol\xE1sa",labelFileSizeNotAvailable:"A f\xE1jlm\xE9ret nem el\xE9rhet\u0151",labelFileLoading:"T\xF6lt\xE9s",labelFileLoadError:"Hiba a bet\xF6lt\xE9s sor\xE1n",labelFileProcessing:"Felt\xF6lt\xE9s",labelFileProcessingComplete:"Sikeres felt\xF6lt\xE9s",labelFileProcessingAborted:"A felt\xF6lt\xE9s megszak\xEDtva",labelFileProcessingError:"Hiba t\xF6rt\xE9nt a felt\xF6lt\xE9s sor\xE1n",labelFileProcessingRevertError:"Hiba a vissza\xE1ll\xEDt\xE1s sor\xE1n",labelFileRemoveError:"Hiba t\xF6rt\xE9nt az elt\xE1vol\xEDt\xE1s sor\xE1n",labelTapToCancel:"koppints a t\xF6rl\xE9shez",labelTapToRetry:"koppints az \xFAjrakezd\xE9shez",labelTapToUndo:"koppints a visszavon\xE1shoz",labelButtonRemoveItem:"Elt\xE1vol\xEDt\xE1s",labelButtonAbortItemLoad:"Megszak\xEDt\xE1s",labelButtonRetryItemLoad:"\xDAjrapr\xF3b\xE1lkoz\xE1s",labelButtonAbortItemProcessing:"Megszak\xEDt\xE1s",labelButtonUndoItemProcessing:"Visszavon\xE1s",labelButtonRetryItemProcessing:"\xDAjrapr\xF3b\xE1lkoz\xE1s",labelButtonProcessItem:"Felt\xF6lt\xE9s",labelMaxFileSizeExceeded:"A f\xE1jl t\xFAll\xE9pte a maxim\xE1lis m\xE9retet",labelMaxFileSize:"Maxim\xE1lis f\xE1jlm\xE9ret: {filesize}",labelMaxTotalFileSizeExceeded:"T\xFAll\xE9pte a maxim\xE1lis teljes m\xE9retet",labelMaxTotalFileSize:"A maxim\xE1is teljes f\xE1jlm\xE9ret: {filesize}",labelFileTypeNotAllowed:"\xC9rv\xE9nytelen t\xEDpus\xFA f\xE1jl",fileValidateTypeLabelExpectedTypes:"Enged\xE9lyezett t\xEDpusok {allButLastType} vagy {lastType}",imageValidateSizeLabelFormatError:"A k\xE9pt\xEDpus nem t\xE1mogatott",imageValidateSizeLabelImageSizeTooSmall:"A k\xE9p t\xFAl kicsi",imageValidateSizeLabelImageSizeTooBig:"A k\xE9p t\xFAl nagy",imageValidateSizeLabelExpectedMinSize:"Minimum m\xE9ret: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum m\xE9ret: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"A felbont\xE1s t\xFAl alacsony",imageValidateSizeLabelImageResolutionTooHigh:"A felbont\xE1s t\xFAl magas",imageValidateSizeLabelExpectedMinResolution:"Minim\xE1is felbont\xE1s: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maxim\xE1lis felbont\xE1s: {maxResolution}"};var wo={labelIdle:'Seret & Jatuhkan berkas Anda atau Jelajahi',labelInvalidField:"Isian berisi berkas yang tidak valid",labelFileWaitingForSize:"Menunggu ukuran berkas",labelFileSizeNotAvailable:"Ukuran berkas tidak tersedia",labelFileLoading:"Memuat",labelFileLoadError:"Kesalahan saat memuat",labelFileProcessing:"Mengunggah",labelFileProcessingComplete:"Pengunggahan selesai",labelFileProcessingAborted:"Pengunggahan dibatalkan",labelFileProcessingError:"Kesalahan saat pengunggahan",labelFileProcessingRevertError:"Kesalahan saat pemulihan",labelFileRemoveError:"Kesalahan saat penghapusan",labelTapToCancel:"ketuk untuk membatalkan",labelTapToRetry:"ketuk untuk mencoba lagi",labelTapToUndo:"ketuk untuk mengurungkan",labelButtonRemoveItem:"Hapus",labelButtonAbortItemLoad:"Batalkan",labelButtonRetryItemLoad:"Coba Kembali",labelButtonAbortItemProcessing:"Batalkan",labelButtonUndoItemProcessing:"Urungkan",labelButtonRetryItemProcessing:"Coba Kembali",labelButtonProcessItem:"Unggah",labelMaxFileSizeExceeded:"Berkas terlalu besar",labelMaxFileSize:"Ukuran berkas maksimum adalah {filesize}",labelMaxTotalFileSizeExceeded:"Jumlah berkas maksimum terlampaui",labelMaxTotalFileSize:"Jumlah berkas maksimum adalah {filesize}",labelFileTypeNotAllowed:"Jenis berkas tidak valid",fileValidateTypeLabelExpectedTypes:"Mengharapkan {allButLastType} atau {lastType}",imageValidateSizeLabelFormatError:"Jenis citra tidak didukung",imageValidateSizeLabelImageSizeTooSmall:"Citra terlalu kecil",imageValidateSizeLabelImageSizeTooBig:"Citra terlalu besar",imageValidateSizeLabelExpectedMinSize:"Ukuran minimum adalah {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Ukuran maksimum adalah {minWidth} \xD7 {minHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolusi terlalu rendah",imageValidateSizeLabelImageResolutionTooHigh:"Resolusi terlalu tinggi",imageValidateSizeLabelExpectedMinResolution:"Resolusi minimum adalah {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Resolusi maksimum adalah {maxResolution}"};var vo={labelIdle:'Trascina e rilascia i tuoi file oppure Carica ',labelInvalidField:"Il campo contiene dei file non validi",labelFileWaitingForSize:"Aspettando le dimensioni",labelFileSizeNotAvailable:"Dimensioni non disponibili",labelFileLoading:"Caricamento",labelFileLoadError:"Errore durante il caricamento",labelFileProcessing:"Caricamento",labelFileProcessingComplete:"Caricamento completato",labelFileProcessingAborted:"Caricamento cancellato",labelFileProcessingError:"Errore durante il caricamento",labelFileProcessingRevertError:"Errore durante il ripristino",labelFileRemoveError:"Errore durante l'eliminazione",labelTapToCancel:"tocca per cancellare",labelTapToRetry:"tocca per riprovare",labelTapToUndo:"tocca per ripristinare",labelButtonRemoveItem:"Elimina",labelButtonAbortItemLoad:"Cancella",labelButtonRetryItemLoad:"Ritenta",labelButtonAbortItemProcessing:"Camcella",labelButtonUndoItemProcessing:"Indietro",labelButtonRetryItemProcessing:"Ritenta",labelButtonProcessItem:"Carica",labelMaxFileSizeExceeded:"Il peso del file \xE8 eccessivo",labelMaxFileSize:"Il peso massimo del file \xE8 {filesize}",labelMaxTotalFileSizeExceeded:"Dimensione totale massima superata",labelMaxTotalFileSize:"La dimensione massima totale del file \xE8 {filesize}",labelFileTypeNotAllowed:"File non supportato",fileValidateTypeLabelExpectedTypes:"Aspetta {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipo di immagine non compatibile",imageValidateSizeLabelImageSizeTooSmall:"L'immagine \xE8 troppo piccola",imageValidateSizeLabelImageSizeTooBig:"L'immagine \xE8 troppo grande",imageValidateSizeLabelExpectedMinSize:"La dimensione minima \xE8 {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La dimensione massima \xE8 {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La risoluzione \xE8 troppo bassa",imageValidateSizeLabelImageResolutionTooHigh:"La risoluzione \xE8 troppo alta",imageValidateSizeLabelExpectedMinResolution:"La risoluzione minima \xE8 {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La risoluzione massima \xE8 {maxResolution}"};var Ao={labelIdle:'Drag & Drop je bestanden of Bladeren ',labelInvalidField:"Veld bevat ongeldige bestanden",labelFileWaitingForSize:"Wachten op grootte",labelFileSizeNotAvailable:"Grootte niet beschikbaar",labelFileLoading:"Laden",labelFileLoadError:"Fout tijdens laden",labelFileProcessing:"Uploaden",labelFileProcessingComplete:"Upload afgerond",labelFileProcessingAborted:"Upload geannuleerd",labelFileProcessingError:"Fout tijdens upload",labelFileProcessingRevertError:"Fout bij herstellen",labelFileRemoveError:"Fout bij verwijderen",labelTapToCancel:"tik om te annuleren",labelTapToRetry:"tik om opnieuw te proberen",labelTapToUndo:"tik om ongedaan te maken",labelButtonRemoveItem:"Verwijderen",labelButtonAbortItemLoad:"Afbreken",labelButtonRetryItemLoad:"Opnieuw proberen",labelButtonAbortItemProcessing:"Annuleren",labelButtonUndoItemProcessing:"Ongedaan maken",labelButtonRetryItemProcessing:"Opnieuw proberen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Bestand is te groot",labelMaxFileSize:"Maximale bestandsgrootte is {filesize}",labelMaxTotalFileSizeExceeded:"Maximale totale grootte overschreden",labelMaxTotalFileSize:"Maximale totale bestandsgrootte is {filesize}",labelFileTypeNotAllowed:"Ongeldig bestandstype",fileValidateTypeLabelExpectedTypes:"Verwacht {allButLastType} of {lastType}",imageValidateSizeLabelFormatError:"Afbeeldingstype niet ondersteund",imageValidateSizeLabelImageSizeTooSmall:"Afbeelding is te klein",imageValidateSizeLabelImageSizeTooBig:"Afbeelding is te groot",imageValidateSizeLabelExpectedMinSize:"Minimale afmeting is {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximale afmeting is {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolutie is te laag",imageValidateSizeLabelImageResolutionTooHigh:"Resolution is too high",imageValidateSizeLabelExpectedMinResolution:"Minimale resolutie is {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximale resolutie is {maxResolution}"};var Lo={labelIdle:'Dra og slipp filene dine, eller Bla gjennom... ',labelInvalidField:"Feltet inneholder ugyldige filer",labelFileWaitingForSize:"Venter p\xE5 st\xF8rrelse",labelFileSizeNotAvailable:"St\xF8rrelse ikke tilgjengelig",labelFileLoading:"Laster",labelFileLoadError:"Feil under lasting",labelFileProcessing:"Laster opp",labelFileProcessingComplete:"Opplasting ferdig",labelFileProcessingAborted:"Opplasting avbrutt",labelFileProcessingError:"Feil under opplasting",labelFileProcessingRevertError:"Feil under reversering",labelFileRemoveError:"Feil under flytting",labelTapToCancel:"klikk for \xE5 avbryte",labelTapToRetry:"klikk for \xE5 pr\xF8ve p\xE5 nytt",labelTapToUndo:"klikk for \xE5 angre",labelButtonRemoveItem:"Fjern",labelButtonAbortItemLoad:"Avbryt",labelButtonRetryItemLoad:"Pr\xF8v p\xE5 nytt",labelButtonAbortItemProcessing:"Avbryt",labelButtonUndoItemProcessing:"Angre",labelButtonRetryItemProcessing:"Pr\xF8v p\xE5 nytt",labelButtonProcessItem:"Last opp",labelMaxFileSizeExceeded:"Filen er for stor",labelMaxFileSize:"Maksimal filst\xF8rrelse er {filesize}",labelMaxTotalFileSizeExceeded:"Maksimal total st\xF8rrelse oversteget",labelMaxTotalFileSize:"Maksimal total st\xF8rrelse er {filesize}",labelFileTypeNotAllowed:"Ugyldig filtype",fileValidateTypeLabelExpectedTypes:"Forventer {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Bildeformat ikke st\xF8ttet",imageValidateSizeLabelImageSizeTooSmall:"Bildet er for lite",imageValidateSizeLabelImageSizeTooBig:"Bildet er for stort",imageValidateSizeLabelExpectedMinSize:"Minimumsst\xF8rrelse er {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksimumsst\xF8rrelse er {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Oppl\xF8sningen er for lav",imageValidateSizeLabelImageResolutionTooHigh:"Oppl\xF8sningen er for h\xF8y",imageValidateSizeLabelExpectedMinResolution:"Minimum oppl\xF8sning er {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimal oppl\xF8sning er {maxResolution}"};var Mo={labelIdle:'Przeci\u0105gnij i upu\u015B\u0107 lub wybierz pliki',labelInvalidField:"Nieprawid\u0142owe pliki",labelFileWaitingForSize:"Pobieranie rozmiaru",labelFileSizeNotAvailable:"Nieznany rozmiar",labelFileLoading:"Wczytywanie",labelFileLoadError:"B\u0142\u0105d wczytywania",labelFileProcessing:"Przesy\u0142anie",labelFileProcessingComplete:"Przes\u0142ano",labelFileProcessingAborted:"Przerwano",labelFileProcessingError:"Przesy\u0142anie nie powiod\u0142o si\u0119",labelFileProcessingRevertError:"Co\u015B posz\u0142o nie tak",labelFileRemoveError:"Nieudane usuni\u0119cie",labelTapToCancel:"Anuluj",labelTapToRetry:"Pon\xF3w",labelTapToUndo:"Cofnij",labelButtonRemoveItem:"Usu\u0144",labelButtonAbortItemLoad:"Przerwij",labelButtonRetryItemLoad:"Pon\xF3w",labelButtonAbortItemProcessing:"Anuluj",labelButtonUndoItemProcessing:"Cofnij",labelButtonRetryItemProcessing:"Pon\xF3w",labelButtonProcessItem:"Prze\u015Blij",labelMaxFileSizeExceeded:"Plik jest zbyt du\u017Cy",labelMaxFileSize:"Dopuszczalna wielko\u015B\u0107 pliku to {filesize}",labelMaxTotalFileSizeExceeded:"Przekroczono \u0142\u0105czny rozmiar plik\xF3w",labelMaxTotalFileSize:"\u0141\u0105czny rozmiar plik\xF3w nie mo\u017Ce przekroczy\u0107 {filesize}",labelFileTypeNotAllowed:"Niedozwolony rodzaj pliku",fileValidateTypeLabelExpectedTypes:"Oczekiwano {allButLastType} lub {lastType}",imageValidateSizeLabelFormatError:"Nieobs\u0142ugiwany format obrazu",imageValidateSizeLabelImageSizeTooSmall:"Obraz jest zbyt ma\u0142y",imageValidateSizeLabelImageSizeTooBig:"Obraz jest zbyt du\u017Cy",imageValidateSizeLabelExpectedMinSize:"Minimalne wymiary obrazu to {minWidth}\xD7{minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksymalna wymiary obrazu to {maxWidth}\xD7{maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rozdzielczo\u015B\u0107 jest zbyt niska",imageValidateSizeLabelImageResolutionTooHigh:"Rozdzielczo\u015B\u0107 jest zbyt wysoka",imageValidateSizeLabelExpectedMinResolution:"Minimalna rozdzielczo\u015B\u0107 to {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksymalna rozdzielczo\u015B\u0107 to {maxResolution}"};var _i={labelIdle:'Arraste e solte os arquivos ou Clique aqui ',labelInvalidField:"Arquivos inv\xE1lidos",labelFileWaitingForSize:"Calculando o tamanho do arquivo",labelFileSizeNotAvailable:"Tamanho do arquivo indispon\xEDvel",labelFileLoading:"Carregando",labelFileLoadError:"Erro durante o carregamento",labelFileProcessing:"Enviando",labelFileProcessingComplete:"Envio finalizado",labelFileProcessingAborted:"Envio cancelado",labelFileProcessingError:"Erro durante o envio",labelFileProcessingRevertError:"Erro ao reverter o envio",labelFileRemoveError:"Erro ao remover o arquivo",labelTapToCancel:"clique para cancelar",labelTapToRetry:"clique para reenviar",labelTapToUndo:"clique para desfazer",labelButtonRemoveItem:"Remover",labelButtonAbortItemLoad:"Abortar",labelButtonRetryItemLoad:"Reenviar",labelButtonAbortItemProcessing:"Cancelar",labelButtonUndoItemProcessing:"Desfazer",labelButtonRetryItemProcessing:"Reenviar",labelButtonProcessItem:"Enviar",labelMaxFileSizeExceeded:"Arquivo \xE9 muito grande",labelMaxFileSize:"O tamanho m\xE1ximo permitido: {filesize}",labelMaxTotalFileSizeExceeded:"Tamanho total dos arquivos excedido",labelMaxTotalFileSize:"Tamanho total permitido: {filesize}",labelFileTypeNotAllowed:"Tipo de arquivo inv\xE1lido",fileValidateTypeLabelExpectedTypes:"Tipos de arquivo suportados s\xE3o {allButLastType} ou {lastType}",imageValidateSizeLabelFormatError:"Tipo de imagem inv\xE1lida",imageValidateSizeLabelImageSizeTooSmall:"Imagem muito pequena",imageValidateSizeLabelImageSizeTooBig:"Imagem muito grande",imageValidateSizeLabelExpectedMinSize:"Tamanho m\xEDnimo permitida: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Tamanho m\xE1ximo permitido: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolu\xE7\xE3o muito baixa",imageValidateSizeLabelImageResolutionTooHigh:"Resolu\xE7\xE3o muito alta",imageValidateSizeLabelExpectedMinResolution:"Resolu\xE7\xE3o m\xEDnima permitida: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Resolu\xE7\xE3o m\xE1xima permitida: {maxResolution}"};var Oo={labelIdle:'Trage \u0219i plaseaz\u0103 fi\u0219iere sau Caut\u0103-le ',labelInvalidField:"C\xE2mpul con\u021Bine fi\u0219iere care nu sunt valide",labelFileWaitingForSize:"\xCEn a\u0219teptarea dimensiunii",labelFileSizeNotAvailable:"Dimensiunea nu este diponibil\u0103",labelFileLoading:"Se \xEEncarc\u0103",labelFileLoadError:"Eroare la \xEEnc\u0103rcare",labelFileProcessing:"Se \xEEncarc\u0103",labelFileProcessingComplete:"\xCEnc\u0103rcare finalizat\u0103",labelFileProcessingAborted:"\xCEnc\u0103rcare anulat\u0103",labelFileProcessingError:"Eroare la \xEEnc\u0103rcare",labelFileProcessingRevertError:"Eroare la anulare",labelFileRemoveError:"Eroare la \u015Ftergere",labelTapToCancel:"apas\u0103 pentru a anula",labelTapToRetry:"apas\u0103 pentru a re\xEEncerca",labelTapToUndo:"apas\u0103 pentru a anula",labelButtonRemoveItem:"\u015Eterge",labelButtonAbortItemLoad:"Anuleaz\u0103",labelButtonRetryItemLoad:"Re\xEEncearc\u0103",labelButtonAbortItemProcessing:"Anuleaz\u0103",labelButtonUndoItemProcessing:"Anuleaz\u0103",labelButtonRetryItemProcessing:"Re\xEEncearc\u0103",labelButtonProcessItem:"\xCEncarc\u0103",labelMaxFileSizeExceeded:"Fi\u0219ierul este prea mare",labelMaxFileSize:"Dimensiunea maxim\u0103 a unui fi\u0219ier este de {filesize}",labelMaxTotalFileSizeExceeded:"Dimensiunea total\u0103 maxim\u0103 a fost dep\u0103\u0219it\u0103",labelMaxTotalFileSize:"Dimensiunea total\u0103 maxim\u0103 a fi\u0219ierelor este de {filesize}",labelFileTypeNotAllowed:"Tipul fi\u0219ierului nu este valid",fileValidateTypeLabelExpectedTypes:"Se a\u0219teapt\u0103 {allButLastType} sau {lastType}",imageValidateSizeLabelFormatError:"Formatul imaginii nu este acceptat",imageValidateSizeLabelImageSizeTooSmall:"Imaginea este prea mic\u0103",imageValidateSizeLabelImageSizeTooBig:"Imaginea este prea mare",imageValidateSizeLabelExpectedMinSize:"M\u0103rimea minim\u0103 este de {maxWidth} x {maxHeight}",imageValidateSizeLabelExpectedMaxSize:"M\u0103rimea maxim\u0103 este de {maxWidth} x {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rezolu\u021Bia este prea mic\u0103",imageValidateSizeLabelImageResolutionTooHigh:"Rezolu\u021Bia este prea mare",imageValidateSizeLabelExpectedMinResolution:"Rezolu\u021Bia minim\u0103 este de {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Rezolu\u021Bia maxim\u0103 este de {maxResolution}"};var xo={labelIdle:'\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0444\u0430\u0439\u043B\u044B \u0438\u043B\u0438 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ',labelInvalidField:"\u041F\u043E\u043B\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0444\u0430\u0439\u043B\u044B",labelFileWaitingForSize:"\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0437\u043C\u0435\u0440",labelFileSizeNotAvailable:"\u0420\u0430\u0437\u043C\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F",labelFileLoading:"\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435",labelFileLoadError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u0438",labelFileProcessing:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",labelFileProcessingComplete:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430",labelFileProcessingAborted:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043E\u0442\u043C\u0435\u043D\u0435\u043D\u0430",labelFileProcessingError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435",labelFileProcessingRevertError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0442\u0435",labelFileRemoveError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0438",labelTapToCancel:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B",labelTapToRetry:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelTapToUndo:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",labelButtonRemoveItem:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",labelButtonAbortItemLoad:"\u041F\u0440\u0435\u043A\u0440\u0430\u0449\u0435\u043D\u043E",labelButtonRetryItemLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelButtonAbortItemProcessing:"\u041E\u0442\u043C\u0435\u043D\u0430",labelButtonUndoItemProcessing:"\u041E\u0442\u043C\u0435\u043D\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",labelButtonRetryItemProcessing:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelButtonProcessItem:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",labelMaxFileSizeExceeded:"\u0424\u0430\u0439\u043B \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0439",labelMaxFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430: {filesize}",labelMaxTotalFileSizeExceeded:"\u041F\u0440\u0435\u0432\u044B\u0448\u0435\u043D \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440",labelMaxTotalFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430: {filesize}",labelFileTypeNotAllowed:"\u0424\u0430\u0439\u043B \u043D\u0435\u0432\u0435\u0440\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430",fileValidateTypeLabelExpectedTypes:"\u041E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F {allButLastType} \u0438\u043B\u0438 {lastType}",imageValidateSizeLabelFormatError:"\u0422\u0438\u043F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F",imageValidateSizeLabelImageSizeTooSmall:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435",imageValidateSizeLabelImageSizeTooBig:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435",imageValidateSizeLabelExpectedMinSize:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043D\u0438\u0437\u043A\u043E\u0435",imageValidateSizeLabelImageResolutionTooHigh:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0432\u044B\u0441\u043E\u043A\u043E\u0435",imageValidateSizeLabelExpectedMinResolution:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435: {maxResolution}"};var Do={labelIdle:'Drag och sl\xE4pp dina filer eller Bl\xE4ddra ',labelInvalidField:"F\xE4ltet inneh\xE5ller felaktiga filer",labelFileWaitingForSize:"V\xE4ntar p\xE5 storlek",labelFileSizeNotAvailable:"Storleken finns inte tillg\xE4nglig",labelFileLoading:"Laddar",labelFileLoadError:"Fel under laddning",labelFileProcessing:"Laddar upp",labelFileProcessingComplete:"Uppladdning klar",labelFileProcessingAborted:"Uppladdning avbruten",labelFileProcessingError:"Fel under uppladdning",labelFileProcessingRevertError:"Fel under \xE5terst\xE4llning",labelFileRemoveError:"Fel under borttagning",labelTapToCancel:"tryck f\xF6r att avbryta",labelTapToRetry:"tryck f\xF6r att f\xF6rs\xF6ka igen",labelTapToUndo:"tryck f\xF6r att \xE5ngra",labelButtonRemoveItem:"Tabort",labelButtonAbortItemLoad:"Avbryt",labelButtonRetryItemLoad:"F\xF6rs\xF6k igen",labelButtonAbortItemProcessing:"Avbryt",labelButtonUndoItemProcessing:"\xC5ngra",labelButtonRetryItemProcessing:"F\xF6rs\xF6k igen",labelButtonProcessItem:"Ladda upp",labelMaxFileSizeExceeded:"Filen \xE4r f\xF6r stor",labelMaxFileSize:"St\xF6rsta till\xE5tna filstorlek \xE4r {filesize}",labelMaxTotalFileSizeExceeded:"Maximal uppladdningsstorlek uppn\xE5d",labelMaxTotalFileSize:"Maximal uppladdningsstorlek \xE4r {filesize}",labelFileTypeNotAllowed:"Felaktig filtyp",fileValidateTypeLabelExpectedTypes:"Godk\xE4nda filtyper {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Bildtypen saknar st\xF6d",imageValidateSizeLabelImageSizeTooSmall:"Bilden \xE4r f\xF6r liten",imageValidateSizeLabelImageSizeTooBig:"Bilden \xE4r f\xF6r stor",imageValidateSizeLabelExpectedMinSize:"Minimal storlek \xE4r {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximal storlek \xE4r {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Uppl\xF6sningen \xE4r f\xF6r l\xE5g",imageValidateSizeLabelImageResolutionTooHigh:"Uppl\xF6sningen \xE4r f\xF6r h\xF6g",imageValidateSizeLabelExpectedMinResolution:"Minsta till\xE5tna uppl\xF6sning \xE4r {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"H\xF6gsta till\xE5tna uppl\xF6sning \xE4r {maxResolution}"};var Po={labelIdle:'Dosyan\u0131z\u0131 S\xFCr\xFCkleyin & B\u0131rak\u0131n ya da Se\xE7in ',labelInvalidField:"Alan ge\xE7ersiz dosyalar i\xE7eriyor",labelFileWaitingForSize:"Boyut hesaplan\u0131yor",labelFileSizeNotAvailable:"Boyut mevcut de\u011Fil",labelFileLoading:"Y\xFCkleniyor",labelFileLoadError:"Y\xFCkleme s\u0131ras\u0131nda hata olu\u015Ftu",labelFileProcessing:"Y\xFCkleniyor",labelFileProcessingComplete:"Y\xFCkleme tamamland\u0131",labelFileProcessingAborted:"Y\xFCkleme iptal edildi",labelFileProcessingError:"Y\xFCklerken hata olu\u015Ftu",labelFileProcessingRevertError:"Geri \xE7ekerken hata olu\u015Ftu",labelFileRemoveError:"Kald\u0131r\u0131rken hata olu\u015Ftu",labelTapToCancel:"\u0130ptal etmek i\xE7in t\u0131klay\u0131n",labelTapToRetry:"Tekrar denemek i\xE7in t\u0131klay\u0131n",labelTapToUndo:"Geri almak i\xE7in t\u0131klay\u0131n",labelButtonRemoveItem:"Kald\u0131r",labelButtonAbortItemLoad:"\u0130ptal Et",labelButtonRetryItemLoad:"Tekrar dene",labelButtonAbortItemProcessing:"\u0130ptal et",labelButtonUndoItemProcessing:"Geri Al",labelButtonRetryItemProcessing:"Tekrar dene",labelButtonProcessItem:"Y\xFCkle",labelMaxFileSizeExceeded:"Dosya \xE7ok b\xFCy\xFCk",labelMaxFileSize:"En fazla dosya boyutu: {filesize}",labelMaxTotalFileSizeExceeded:"Maximum boyut a\u015F\u0131ld\u0131",labelMaxTotalFileSize:"Maximum dosya boyutu :{filesize}",labelFileTypeNotAllowed:"Ge\xE7ersiz dosya tipi",fileValidateTypeLabelExpectedTypes:"\u015Eu {allButLastType} ya da \u015Fu dosya olmas\u0131 gerekir: {lastType}",imageValidateSizeLabelFormatError:"Resim tipi desteklenmiyor",imageValidateSizeLabelImageSizeTooSmall:"Resim \xE7ok k\xFC\xE7\xFCk",imageValidateSizeLabelImageSizeTooBig:"Resim \xE7ok b\xFCy\xFCk",imageValidateSizeLabelExpectedMinSize:"Minimum boyut {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum boyut {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\xC7\xF6z\xFCn\xFCrl\xFCk \xE7ok d\xFC\u015F\xFCk",imageValidateSizeLabelImageResolutionTooHigh:"\xC7\xF6z\xFCn\xFCrl\xFCk \xE7ok y\xFCksek",imageValidateSizeLabelExpectedMinResolution:"Minimum \xE7\xF6z\xFCn\xFCrl\xFCk {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximum \xE7\xF6z\xFCn\xFCrl\xFCk {maxResolution}"};var Fo={labelIdle:'\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0444\u0430\u0439\u043B\u0438 \u0430\u0431\u043E \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044C ',labelInvalidField:"\u041F\u043E\u043B\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u0456 \u0444\u0430\u0439\u043B\u0438",labelFileWaitingForSize:"\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0440\u043E\u0437\u043C\u0456\u0440",labelFileSizeNotAvailable:"\u0420\u043E\u0437\u043C\u0456\u0440 \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0438\u0439",labelFileLoading:"\u041E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u044F",labelFileLoadError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u043E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u0456",labelFileProcessing:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",labelFileProcessingComplete:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",labelFileProcessingAborted:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0441\u043A\u0430\u0441\u043E\u0432\u0430\u043D\u043E",labelFileProcessingError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u0456",labelFileProcessingRevertError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0432\u0456\u0434\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u0456",labelFileRemoveError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043D\u0456",labelTapToCancel:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelTapToRetry:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelTapToUndo:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0432\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0434\u0456\u044E",labelButtonRemoveItem:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438",labelButtonAbortItemLoad:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelButtonRetryItemLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelButtonAbortItemProcessing:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelButtonUndoItemProcessing:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0434\u0456\u044E",labelButtonRetryItemProcessing:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelButtonProcessItem:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",labelMaxFileSizeExceeded:"\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439",labelMaxFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440 \u0444\u0430\u0439\u043B\u0443: {filesize}",labelMaxTotalFileSizeExceeded:"\u041F\u0435\u0440\u0435\u0432\u0438\u0449\u0435\u043D\u043E \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440",labelMaxTotalFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {filesize}",labelFileTypeNotAllowed:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0444\u0430\u0439\u043B\u0443 \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F",fileValidateTypeLabelExpectedTypes:"\u041E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F {allButLastType} \u0430\u0431\u043E {lastType}",imageValidateSizeLabelFormatError:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F",imageValidateSizeLabelImageSizeTooSmall:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0435",imageValidateSizeLabelImageSizeTooBig:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435",imageValidateSizeLabelExpectedMinSize:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0420\u043E\u0437\u043C\u0456\u0440\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0456",imageValidateSizeLabelImageResolutionTooHigh:"\u0420\u043E\u0437\u043C\u0456\u0440\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0456",imageValidateSizeLabelExpectedMinResolution:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0456 \u0440\u043E\u0437\u043C\u0456\u0440\u0438: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0456 \u0440\u043E\u0437\u043C\u0456\u0440\u0438: {maxResolution}"};var Co={labelIdle:'K\xE9o th\u1EA3 t\u1EC7p c\u1EE7a b\u1EA1n ho\u1EB7c T\xECm ki\u1EBFm ',labelInvalidField:"Tr\u01B0\u1EDDng ch\u1EE9a c\xE1c t\u1EC7p kh\xF4ng h\u1EE3p l\u1EC7",labelFileWaitingForSize:"\u0110ang ch\u1EDD k\xEDch th\u01B0\u1EDBc",labelFileSizeNotAvailable:"K\xEDch th\u01B0\u1EDBc kh\xF4ng c\xF3 s\u1EB5n",labelFileLoading:"\u0110ang t\u1EA3i",labelFileLoadError:"L\u1ED7i khi t\u1EA3i",labelFileProcessing:"\u0110ang t\u1EA3i l\xEAn",labelFileProcessingComplete:"T\u1EA3i l\xEAn th\xE0nh c\xF4ng",labelFileProcessingAborted:"\u0110\xE3 hu\u1EF7 t\u1EA3i l\xEAn",labelFileProcessingError:"L\u1ED7i khi t\u1EA3i l\xEAn",labelFileProcessingRevertError:"L\u1ED7i khi ho\xE0n nguy\xEAn",labelFileRemoveError:"L\u1ED7i khi x\xF3a",labelTapToCancel:"nh\u1EA5n \u0111\u1EC3 h\u1EE7y",labelTapToRetry:"nh\u1EA5n \u0111\u1EC3 th\u1EED l\u1EA1i",labelTapToUndo:"nh\u1EA5n \u0111\u1EC3 ho\xE0n t\xE1c",labelButtonRemoveItem:"Xo\xE1",labelButtonAbortItemLoad:"Hu\u1EF7 b\u1ECF",labelButtonRetryItemLoad:"Th\u1EED l\u1EA1i",labelButtonAbortItemProcessing:"H\u1EE7y b\u1ECF",labelButtonUndoItemProcessing:"Ho\xE0n t\xE1c",labelButtonRetryItemProcessing:"Th\u1EED l\u1EA1i",labelButtonProcessItem:"T\u1EA3i l\xEAn",labelMaxFileSizeExceeded:"T\u1EADp tin qu\xE1 l\u1EDBn",labelMaxFileSize:"K\xEDch th\u01B0\u1EDBc t\u1EC7p t\u1ED1i \u0111a l\xE0 {filesize}",labelMaxTotalFileSizeExceeded:"\u0110\xE3 v\u01B0\u1EE3t qu\xE1 t\u1ED5ng k\xEDch th\u01B0\u1EDBc t\u1ED1i \u0111a",labelMaxTotalFileSize:"T\u1ED5ng k\xEDch th\u01B0\u1EDBc t\u1EC7p t\u1ED1i \u0111a l\xE0 {filesize}",labelFileTypeNotAllowed:"T\u1EC7p thu\u1ED9c lo\u1EA1i kh\xF4ng h\u1EE3p l\u1EC7",fileValidateTypeLabelExpectedTypes:"Ki\u1EC3u t\u1EC7p h\u1EE3p l\u1EC7 l\xE0 {allButLastType} ho\u1EB7c {lastType}",imageValidateSizeLabelFormatError:"Lo\u1EA1i h\xECnh \u1EA3nh kh\xF4ng \u0111\u01B0\u1EE3c h\u1ED7 tr\u1EE3",imageValidateSizeLabelImageSizeTooSmall:"H\xECnh \u1EA3nh qu\xE1 nh\u1ECF",imageValidateSizeLabelImageSizeTooBig:"H\xECnh \u1EA3nh qu\xE1 l\u1EDBn",imageValidateSizeLabelExpectedMinSize:"K\xEDch th\u01B0\u1EDBc t\u1ED1i thi\u1EC3u l\xE0 {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"K\xEDch th\u01B0\u1EDBc t\u1ED1i \u0111a l\xE0 {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0110\u1ED9 ph\xE2n gi\u1EA3i qu\xE1 th\u1EA5p",imageValidateSizeLabelImageResolutionTooHigh:"\u0110\u1ED9 ph\xE2n gi\u1EA3i qu\xE1 cao",imageValidateSizeLabelExpectedMinResolution:"\u0110\u1ED9 ph\xE2n gi\u1EA3i t\u1ED1i thi\u1EC3u l\xE0 {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u0110\u1ED9 ph\xE2n gi\u1EA3i t\u1ED1i \u0111a l\xE0 {maxResolution}"};var zo={labelIdle:'\u62D6\u653E\u6587\u4EF6\uFF0C\u6216\u8005 \u6D4F\u89C8 ',labelInvalidField:"\u5B57\u6BB5\u5305\u542B\u65E0\u6548\u6587\u4EF6",labelFileWaitingForSize:"\u8BA1\u7B97\u6587\u4EF6\u5927\u5C0F",labelFileSizeNotAvailable:"\u6587\u4EF6\u5927\u5C0F\u4E0D\u53EF\u7528",labelFileLoading:"\u52A0\u8F7D",labelFileLoadError:"\u52A0\u8F7D\u9519\u8BEF",labelFileProcessing:"\u4E0A\u4F20",labelFileProcessingComplete:"\u5DF2\u4E0A\u4F20",labelFileProcessingAborted:"\u4E0A\u4F20\u5DF2\u53D6\u6D88",labelFileProcessingError:"\u4E0A\u4F20\u51FA\u9519",labelFileProcessingRevertError:"\u8FD8\u539F\u51FA\u9519",labelFileRemoveError:"\u5220\u9664\u51FA\u9519",labelTapToCancel:"\u70B9\u51FB\u53D6\u6D88",labelTapToRetry:"\u70B9\u51FB\u91CD\u8BD5",labelTapToUndo:"\u70B9\u51FB\u64A4\u6D88",labelButtonRemoveItem:"\u5220\u9664",labelButtonAbortItemLoad:"\u4E2D\u6B62",labelButtonRetryItemLoad:"\u91CD\u8BD5",labelButtonAbortItemProcessing:"\u53D6\u6D88",labelButtonUndoItemProcessing:"\u64A4\u6D88",labelButtonRetryItemProcessing:"\u91CD\u8BD5",labelButtonProcessItem:"\u4E0A\u4F20",labelMaxFileSizeExceeded:"\u6587\u4EF6\u592A\u5927",labelMaxFileSize:"\u6700\u5927\u503C: {filesize}",labelMaxTotalFileSizeExceeded:"\u8D85\u8FC7\u6700\u5927\u6587\u4EF6\u5927\u5C0F",labelMaxTotalFileSize:"\u6700\u5927\u6587\u4EF6\u5927\u5C0F\uFF1A{filesize}",labelFileTypeNotAllowed:"\u6587\u4EF6\u7C7B\u578B\u65E0\u6548",fileValidateTypeLabelExpectedTypes:"\u5E94\u4E3A {allButLastType} \u6216 {lastType}",imageValidateSizeLabelFormatError:"\u4E0D\u652F\u6301\u56FE\u50CF\u7C7B\u578B",imageValidateSizeLabelImageSizeTooSmall:"\u56FE\u50CF\u592A\u5C0F",imageValidateSizeLabelImageSizeTooBig:"\u56FE\u50CF\u592A\u5927",imageValidateSizeLabelExpectedMinSize:"\u6700\u5C0F\u503C: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u6700\u5927\u503C: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u5206\u8FA8\u7387\u592A\u4F4E",imageValidateSizeLabelImageResolutionTooHigh:"\u5206\u8FA8\u7387\u592A\u9AD8",imageValidateSizeLabelExpectedMinResolution:"\u6700\u5C0F\u5206\u8FA8\u7387\uFF1A{minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u6700\u5927\u5206\u8FA8\u7387\uFF1A{maxResolution}"};var No={labelIdle:'\u62D6\u653E\u6A94\u6848\uFF0C\u6216\u8005 \u700F\u89BD ',labelInvalidField:"\u4E0D\u652F\u63F4\u6B64\u6A94\u6848",labelFileWaitingForSize:"\u6B63\u5728\u8A08\u7B97\u6A94\u6848\u5927\u5C0F",labelFileSizeNotAvailable:"\u6A94\u6848\u5927\u5C0F\u4E0D\u7B26",labelFileLoading:"\u8B80\u53D6\u4E2D",labelFileLoadError:"\u8B80\u53D6\u932F\u8AA4",labelFileProcessing:"\u4E0A\u50B3",labelFileProcessingComplete:"\u5DF2\u4E0A\u50B3",labelFileProcessingAborted:"\u4E0A\u50B3\u5DF2\u53D6\u6D88",labelFileProcessingError:"\u4E0A\u50B3\u767C\u751F\u932F\u8AA4",labelFileProcessingRevertError:"\u9084\u539F\u932F\u8AA4",labelFileRemoveError:"\u522A\u9664\u932F\u8AA4",labelTapToCancel:"\u9EDE\u64CA\u53D6\u6D88",labelTapToRetry:"\u9EDE\u64CA\u91CD\u8A66",labelTapToUndo:"\u9EDE\u64CA\u9084\u539F",labelButtonRemoveItem:"\u522A\u9664",labelButtonAbortItemLoad:"\u505C\u6B62",labelButtonRetryItemLoad:"\u91CD\u8A66",labelButtonAbortItemProcessing:"\u53D6\u6D88",labelButtonUndoItemProcessing:"\u53D6\u6D88",labelButtonRetryItemProcessing:"\u91CD\u8A66",labelButtonProcessItem:"\u4E0A\u50B3",labelMaxFileSizeExceeded:"\u6A94\u6848\u904E\u5927",labelMaxFileSize:"\u6700\u5927\u503C\uFF1A{filesize}",labelMaxTotalFileSizeExceeded:"\u8D85\u904E\u6700\u5927\u53EF\u4E0A\u50B3\u5927\u5C0F",labelMaxTotalFileSize:"\u6700\u5927\u53EF\u4E0A\u50B3\u5927\u5C0F\uFF1A{filesize}",labelFileTypeNotAllowed:"\u4E0D\u652F\u63F4\u6B64\u985E\u578B\u6A94\u6848",fileValidateTypeLabelExpectedTypes:"\u61C9\u70BA {allButLastType} \u6216 {lastType}",imageValidateSizeLabelFormatError:"\u4E0D\u652F\u6301\u6B64\u985E\u5716\u7247\u985E\u578B",imageValidateSizeLabelImageSizeTooSmall:"\u5716\u7247\u904E\u5C0F",imageValidateSizeLabelImageSizeTooBig:"\u5716\u7247\u904E\u5927",imageValidateSizeLabelExpectedMinSize:"\u6700\u5C0F\u5C3A\u5BF8\uFF1A{minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u6700\u5927\u5C3A\u5BF8\uFF1A{maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u89E3\u6790\u5EA6\u904E\u4F4E",imageValidateSizeLabelImageResolutionTooHigh:"\u89E3\u6790\u5EA6\u904E\u9AD8",imageValidateSizeLabelExpectedMinResolution:"\u6700\u4F4E\u89E3\u6790\u5EA6\uFF1A{minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u6700\u9AD8\u89E3\u6790\u5EA6\uFF1A{maxResolution}"};_e(xr);_e(Pr);_e(zr);_e(Br);_e(kr);_e(Jr);_e(to);_e(po);_e(Sa);window.FilePond=ea;function Jf({acceptedFileTypes:e,imageEditorEmptyFillColor:t,imageEditorMode:i,imageEditorViewportHeight:a,imageEditorViewportWidth:n,deleteUploadedFileUsing:r,isDeletable:o,isDisabled:l,getUploadedFilesUsing:s,imageCropAspectRatio:u,imagePreviewHeight:c,imageResizeMode:d,imageResizeTargetHeight:h,imageResizeTargetWidth:f,imageResizeUpscale:p,isAvatar:m,hasImageEditor:g,hasCircleCropper:b,canEditSvgs:E,isSvgEditingConfirmed:I,confirmSvgEditingMessage:_,disabledSvgEditingMessage:y,isDownloadable:T,isMultiple:v,isOpenable:R,isPreviewable:S,isReorderable:D,itemPanelAspectRatio:x,loadingIndicatorPosition:O,locale:z,maxFiles:A,maxSize:F,minSize:w,panelAspectRatio:L,panelLayout:C,placeholder:P,removeUploadedFileButtonPosition:G,removeUploadedFileUsing:B,reorderUploadedFilesUsing:X,shouldAppendFiles:q,shouldOrientImageFromExif:j,shouldTransformImage:ue,state:U,uploadButtonPosition:W,uploadingMessage:$,uploadProgressIndicatorPosition:le,uploadUsing:J}){return{fileKeyIndex:{},pond:null,shouldUpdateState:!0,state:U,lastState:null,uploadedFileIndex:{},isEditorOpen:!1,editingFile:{},currentRatio:"",editor:{},init:async function(){Ot(Bo[z]??Bo.en),this.pond=ct(this.$refs.input,{acceptedFileTypes:e,allowImageExifOrientation:j,allowPaste:!1,allowRemove:o,allowReorder:D,allowImagePreview:S,allowVideoPreview:S,allowAudioPreview:S,allowImageTransform:ue,credits:!1,files:await this.getFiles(),imageCropAspectRatio:u,imagePreviewHeight:c,imageResizeTargetHeight:h,imageResizeTargetWidth:f,imageResizeMode:d,imageResizeUpscale:p,itemInsertLocation:q?"after":"before",...P&&{labelIdle:P},maxFiles:A,maxFileSize:F,minFileSize:w,styleButtonProcessItemPosition:W,styleButtonRemoveItemPosition:G,styleItemPanelAspectRatio:x,styleLoadIndicatorPosition:O,stylePanelAspectRatio:L,stylePanelLayout:C,styleProgressIndicatorPosition:le,server:{load:async(N,H)=>{let ee=await(await fetch(N,{cache:"no-store"})).blob();H(ee)},process:(N,H,Q,ee,wt,Ge)=>{this.shouldUpdateState=!1;let Yt=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,$t=>($t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>$t/4).toString(16));J(Yt,H,$t=>{this.shouldUpdateState=!0,ee($t)},wt,Ge)},remove:async(N,H)=>{let Q=this.uploadedFileIndex[N]??null;Q&&(await r(Q),H())},revert:async(N,H)=>{await B(N),H()}},allowImageEdit:g,imageEditEditor:{open:N=>this.loadEditor(N),onconfirm:()=>{},oncancel:()=>this.closeEditor(),onclose:()=>this.closeEditor()}}),this.$watch("state",async()=>{if(this.pond&&this.shouldUpdateState&&this.state!==void 0){if(this.state!==null&&Object.values(this.state).filter(N=>N.startsWith("livewire-file:")).length){this.lastState=null;return}JSON.stringify(this.state)!==this.lastState&&(this.lastState=JSON.stringify(this.state),this.pond.files=await this.getFiles())}}),this.pond.on("reorderfiles",async N=>{let H=N.map(Q=>Q.source instanceof File?Q.serverId:this.uploadedFileIndex[Q.source]??null).filter(Q=>Q);await X(q?H:H.reverse())}),this.pond.on("initfile",async N=>{T&&(m||this.insertDownloadLink(N))}),this.pond.on("initfile",async N=>{R&&(m||this.insertOpenLink(N))}),this.pond.on("addfilestart",async N=>{N.status===pt.PROCESSING_QUEUED&&this.dispatchFormEvent("form-processing-started",{message:$})});let V=async()=>{this.pond.getFiles().filter(N=>N.status===pt.PROCESSING||N.status===pt.PROCESSING_QUEUED).length||this.dispatchFormEvent("form-processing-finished")};this.pond.on("processfile",V),this.pond.on("processfileabort",V),this.pond.on("processfilerevert",V)},destroy:function(){this.destroyEditor(),dt(this.$refs.input),this.pond=null},dispatchFormEvent:function(V,N={}){this.$el.closest("form")?.dispatchEvent(new CustomEvent(V,{composed:!0,cancelable:!0,detail:N}))},getUploadedFiles:async function(){let V=await s();this.fileKeyIndex=V??{},this.uploadedFileIndex=Object.entries(this.fileKeyIndex).filter(([N,H])=>H?.url).reduce((N,[H,Q])=>(N[Q.url]=H,N),{})},getFiles:async function(){await this.getUploadedFiles();let V=[];for(let N of Object.values(this.fileKeyIndex))N&&V.push({source:N.url,options:{type:"local",...!N.type||S&&(/^audio/.test(N.type)||/^image/.test(N.type)||/^video/.test(N.type))?{}:{file:{name:N.name,size:N.size,type:N.type}}}});return q?V:V.reverse()},insertDownloadLink:function(V){if(V.origin!==Dt.LOCAL)return;let N=this.getDownloadLink(V);N&&document.getElementById(`filepond--item-${V.id}`).querySelector(".filepond--file-info-main").prepend(N)},insertOpenLink:function(V){if(V.origin!==Dt.LOCAL)return;let N=this.getOpenLink(V);N&&document.getElementById(`filepond--item-${V.id}`).querySelector(".filepond--file-info-main").prepend(N)},getDownloadLink:function(V){let N=V.source;if(!N)return;let H=document.createElement("a");return H.className="filepond--download-icon",H.href=N,H.download=V.file.name,H},getOpenLink:function(V){let N=V.source;if(!N)return;let H=document.createElement("a");return H.className="filepond--open-icon",H.href=N,H.target="_blank",H},initEditor:function(){l||g&&(this.editor=new Ta(this.$refs.editor,{aspectRatio:n/a,autoCropArea:1,center:!0,crop:V=>{this.$refs.xPositionInput.value=Math.round(V.detail.x),this.$refs.yPositionInput.value=Math.round(V.detail.y),this.$refs.heightInput.value=Math.round(V.detail.height),this.$refs.widthInput.value=Math.round(V.detail.width),this.$refs.rotationInput.value=V.detail.rotate},cropBoxResizable:!0,guides:!0,highlight:!0,responsive:!0,toggleDragModeOnDblclick:!0,viewMode:i,wheelZoomRatio:.02}))},closeEditor:function(){this.editingFile={},this.isEditorOpen=!1,this.destroyEditor()},fixImageDimensions:function(V,N){if(V.type!=="image/svg+xml")return N(V);let H=new FileReader;H.onload=Q=>{let ee=new DOMParser().parseFromString(Q.target.result,"image/svg+xml")?.querySelector("svg");if(!ee)return N(V);let wt=["viewBox","ViewBox","viewbox"].find(Yt=>ee.hasAttribute(Yt));if(!wt)return N(V);let Ge=ee.getAttribute(wt).split(" ");return!Ge||Ge.length!==4?N(V):(ee.setAttribute("width",parseFloat(Ge[2])+"pt"),ee.setAttribute("height",parseFloat(Ge[3])+"pt"),N(new File([new Blob([new XMLSerializer().serializeToString(ee)],{type:"image/svg+xml"})],V.name,{type:"image/svg+xml",_relativePath:""})))},H.readAsText(V)},loadEditor:function(V){if(l||!g||!V)return;let N=V.type==="image/svg+xml";if(!E&&N){alert(y);return}I&&N&&!confirm(_)||this.fixImageDimensions(V,H=>{this.editingFile=H,this.initEditor();let Q=new FileReader;Q.onload=ee=>{this.isEditorOpen=!0,setTimeout(()=>this.editor.replace(ee.target.result),200)},Q.readAsDataURL(V)})},getRoundedCanvas:function(V){let N=V.width,H=V.height,Q=document.createElement("canvas");Q.width=N,Q.height=H;let ee=Q.getContext("2d");return ee.imageSmoothingEnabled=!0,ee.drawImage(V,0,0,N,H),ee.globalCompositeOperation="destination-in",ee.beginPath(),ee.ellipse(N/2,H/2,N/2,H/2,0,0,2*Math.PI),ee.fill(),Q},saveEditor:function(){if(l||!g)return;let V=this.editor.getCroppedCanvas({fillColor:t??"transparent",height:h,imageSmoothingEnabled:!0,imageSmoothingQuality:"high",width:f});b&&(V=this.getRoundedCanvas(V)),V.toBlob(N=>{v&&this.pond.removeFile(this.pond.getFiles().find(H=>H.filename===this.editingFile.name)?.id,{revert:!0}),this.$nextTick(()=>{this.shouldUpdateState=!1;let H=this.editingFile.name.slice(0,this.editingFile.name.lastIndexOf(".")),Q=this.editingFile.name.split(".").pop();Q==="svg"&&(Q="png");let ee=/-v(\d+)/;ee.test(H)?H=H.replace(ee,(wt,Ge)=>`-v${Number(Ge)+1}`):H+="-v1",this.pond.addFile(new File([N],`${H}.${Q}`,{type:this.editingFile.type==="image/svg+xml"||b?"image/png":this.editingFile.type,lastModified:new Date().getTime()})).then(()=>{this.closeEditor()}).catch(()=>{this.closeEditor()})})},b?"image/png":this.editingFile.type)},destroyEditor:function(){this.editor&&typeof this.editor.destroy=="function"&&this.editor.destroy(),this.editor=null}}}var Bo={ar:mo,cs:go,da:Eo,de:To,en:Io,es:bo,fa:_o,fi:Ro,fr:yo,hu:So,id:wo,it:vo,nl:Ao,no:Lo,pl:Mo,pt_BR:_i,pt_PT:_i,ro:Oo,ru:xo,sv:Do,tr:Po,uk:Fo,vi:Co,zh_CN:zo,zh_TW:No};export{Jf as default}; +`;n(q)},o.readAsText(e)}),Sm=e=>{let t;try{t=new ImageData(e.width,e.height)}catch{t=document.createElement("canvas").getContext("2d").createImageData(e.width,e.height)}return t.data.set(e.data),t},wm=()=>{let e={resize:c,filter:u},t=(d,h)=>(d.forEach(m=>{h=e[m.type](h,m.data)}),h),i=(d,h)=>{let m=d.transforms,p=null;if(m.forEach(f=>{f.type==="filter"&&(p=f)}),p){let f=null;m.forEach(g=>{g.type==="resize"&&(f=g)}),f&&(f.data.matrix=p.data,m=m.filter(g=>g.type!=="filter"))}h(t(m,d.imageData))};self.onmessage=d=>{i(d.data.message,h=>{self.postMessage({id:d.data.id,message:h},[h.data.buffer])})};let a=1,n=1,r=1;function o(d,h,m){let p=h[d]/255,f=h[d+1]/255,g=h[d+2]/255,b=h[d+3]/255,E=p*m[0]+f*m[1]+g*m[2]+b*m[3]+m[4],I=p*m[5]+f*m[6]+g*m[7]+b*m[8]+m[9],_=p*m[10]+f*m[11]+g*m[12]+b*m[13]+m[14],y=p*m[15]+f*m[16]+g*m[17]+b*m[18]+m[19],T=Math.max(0,E*y)+a*(1-y),v=Math.max(0,I*y)+n*(1-y),R=Math.max(0,_*y)+r*(1-y);h[d]=Math.max(0,Math.min(1,T))*255,h[d+1]=Math.max(0,Math.min(1,v))*255,h[d+2]=Math.max(0,Math.min(1,R))*255}let l=self.JSON.stringify([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]);function s(d){return self.JSON.stringify(d||[])===l}function u(d,h){if(!h||s(h))return d;let m=d.data,p=m.length,f=h[0],g=h[1],b=h[2],E=h[3],I=h[4],_=h[5],y=h[6],T=h[7],v=h[8],R=h[9],S=h[10],P=h[11],x=h[12],O=h[13],z=h[14],A=h[15],F=h[16],w=h[17],L=h[18],C=h[19],D=0,V=0,B=0,j=0,q=0,X=0,ue=0,U=0,W=0,$=0,le=0,J=0;for(;D1&&p===!1)return u(d,b);f=d.width*A,g=d.height*A}let E=d.width,I=d.height,_=Math.round(f),y=Math.round(g),T=d.data,v=new Uint8ClampedArray(_*y*4),R=E/_,S=I/y,P=Math.ceil(R*.5),x=Math.ceil(S*.5);for(let O=0;O=-1&&le<=1&&(F=2*le*le*le-3*le*le+1,F>0)){$=4*(W+q*E);let J=T[$+3];B+=F*J,L+=F,J<255&&(F=F*J/250),C+=F*T[$],D+=F*T[$+1],V+=F*T[$+2],w+=F}}}v[A]=C/w,v[A+1]=D/w,v[A+2]=V/w,v[A+3]=B/L,b&&o(A,v,b)}return{data:v,width:_,height:y}}},vm=(e,t)=>{if(e.getUint32(t+4,!1)!==1165519206)return;t+=4;let i=e.getUint16(t+=6,!1)===18761;t+=e.getUint32(t+4,i);let a=e.getUint16(t,i);t+=2;for(let n=0;n{let t=new DataView(e);if(t.getUint16(0)!==65496)return null;let i=2,a,n,r=!1;for(;i=65504&&a<=65519||a===65534)||(r||(r=vm(t,i,n)),i+n>t.byteLength)));)i+=n;return e.slice(0,i)},Lm=e=>new Promise(t=>{let i=new FileReader;i.onload=()=>t(Am(i.result)||null),i.readAsArrayBuffer(e.slice(0,256*1024))}),Mm=()=>window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,Om=(e,t)=>{let i=Mm();if(i){let a=new i;return a.append(e),a.getBlob(t)}return new Blob([e],{type:t})},xm=()=>Math.random().toString(36).substr(2,9),Pm=e=>{let t=new Blob(["(",e.toString(),")()"],{type:"application/javascript"}),i=URL.createObjectURL(t),a=new Worker(i),n=[];return{transfer:()=>{},post:(r,o,l)=>{let s=xm();n[s]=o,a.onmessage=u=>{let c=n[u.data.id];c&&(c(u.data.message),delete n[u.data.id])},a.postMessage({id:s,message:r},l)},terminate:()=>{a.terminate(),URL.revokeObjectURL(i)}}},Dm=e=>new Promise((t,i)=>{let a=new Image;a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Fm=e=>e.reduce((t,i)=>t.then(a=>i().then(Array.prototype.concat.bind(a))),Promise.resolve([])),Cm=(e,t)=>new Promise(i=>{let a={width:e.width,height:e.height},n=e.getContext("2d"),r=t.sort(ho).map(o=>()=>new Promise(l=>{km[o[0]](n,a,o[1],l)&&l()}));Fm(r).then(()=>i(e))}),yt=(e,t)=>{e.beginPath(),e.lineCap=t["stroke-linecap"],e.lineJoin=t["stroke-linejoin"],e.lineWidth=t["stroke-width"],t["stroke-dasharray"].length&&e.setLineDash(t["stroke-dasharray"].split(",")),e.fillStyle=t.fill,e.strokeStyle=t.stroke,e.globalAlpha=t.opacity||1},St=e=>{e.fill(),e.stroke(),e.globalAlpha=1},zm=(e,t,i)=>{let a=Rt(i,t),n=ot(i,t);return yt(e,n),e.rect(a.x,a.y,a.width,a.height),St(e,n),!0},Nm=(e,t,i)=>{let a=Rt(i,t),n=ot(i,t);yt(e,n);let r=a.x,o=a.y,l=a.width,s=a.height,u=.5522848,c=l/2*u,d=s/2*u,h=r+l,m=o+s,p=r+l/2,f=o+s/2;return e.moveTo(r,f),e.bezierCurveTo(r,f-d,p-c,o,p,o),e.bezierCurveTo(p+c,o,h,f-d,h,f),e.bezierCurveTo(h,f+d,p+c,m,p,m),e.bezierCurveTo(p-c,m,r,f+d,r,f),St(e,n),!0},Bm=(e,t,i,a)=>{let n=Rt(i,t),r=ot(i,t);yt(e,r);let o=new Image;new URL(i.src,window.location.href).origin!==window.location.origin&&(o.crossOrigin=""),o.onload=()=>{if(i.fit==="cover"){let s=n.width/n.height,u=s>1?o.width:o.height*s,c=s>1?o.width/s:o.height,d=o.width*.5-u*.5,h=o.height*.5-c*.5;e.drawImage(o,d,h,u,c,n.x,n.y,n.width,n.height)}else if(i.fit==="contain"){let s=Math.min(n.width/o.width,n.height/o.height),u=s*o.width,c=s*o.height,d=n.x+n.width*.5-u*.5,h=n.y+n.height*.5-c*.5;e.drawImage(o,0,0,o.width,o.height,d,h,u,c)}else e.drawImage(o,0,0,o.width,o.height,n.x,n.y,n.width,n.height);St(e,r),a()},o.src=i.src},Vm=(e,t,i)=>{let a=Rt(i,t),n=ot(i,t);yt(e,n);let r=he(i.fontSize,t),o=i.fontFamily||"sans-serif",l=i.fontWeight||"normal",s=i.textAlign||"left";return e.font=`${l} ${r}px ${o}`,e.textAlign=s,e.fillText(i.text,a.x,a.y),St(e,n),!0},Gm=(e,t,i)=>{let a=ot(i,t);yt(e,a),e.beginPath();let n=i.points.map(o=>({x:he(o.x,t,1,"width"),y:he(o.y,t,1,"height")}));e.moveTo(n[0].x,n[0].y);let r=n.length;for(let o=1;o{let a=Rt(i,t),n=ot(i,t);yt(e,n),e.beginPath();let r={x:a.x,y:a.y},o={x:a.x+a.width,y:a.y+a.height};e.moveTo(r.x,r.y),e.lineTo(o.x,o.y);let l=uo({x:o.x-r.x,y:o.y-r.y}),s=.04*Math.min(t.width,t.height);if(i.lineDecoration.indexOf("arrow-begin")!==-1){let u=Ii(l,s),c=bi(r,u),d=Ye(r,2,c),h=Ye(r,-2,c);e.moveTo(d.x,d.y),e.lineTo(r.x,r.y),e.lineTo(h.x,h.y)}if(i.lineDecoration.indexOf("arrow-end")!==-1){let u=Ii(l,-s),c=bi(o,u),d=Ye(o,2,c),h=Ye(o,-2,c);e.moveTo(d.x,d.y),e.lineTo(o.x,o.y),e.lineTo(h.x,h.y)}return St(e,n),!0},km={rect:zm,ellipse:Nm,image:Bm,text:Vm,line:Um,path:Gm},Hm=e=>{let t=document.createElement("canvas");return t.width=e.width,t.height=e.height,t.getContext("2d").putImageData(e,0,0),t},Wm=(e,t,i={})=>new Promise((a,n)=>{if(!e||!Zh(e))return n({status:"not an image file",file:e});let{stripImageHead:r,beforeCreateBlob:o,afterCreateBlob:l,canvasMemoryLimit:s}=i,{crop:u,size:c,filter:d,markup:h,output:m}=t,p=t.image&&t.image.orientation?Math.max(1,Math.min(8,t.image.orientation)):null,f=m&&m.quality,g=f===null?null:f/100,b=m&&m.type||null,E=m&&m.background||null,I=[];c&&(typeof c.width=="number"||typeof c.height=="number")&&I.push({type:"resize",data:c}),d&&d.length===20&&I.push({type:"filter",data:d});let _=v=>{let R=l?l(v):v;Promise.resolve(R).then(a)},y=(v,R)=>{let S=Hm(v),P=h.length?Cm(S,h):S;Promise.resolve(P).then(x=>{om(x,R,o).then(O=>{if(co(x),r)return _(O);Lm(e).then(z=>{z!==null&&(O=new Blob([z,O.slice(20)],{type:O.type})),_(O)})}).catch(n)})};if(/svg/.test(e.type)&&b===null)return ym(e,u,h,{background:E}).then(v=>{a(Om(v,"image/svg+xml"))});let T=URL.createObjectURL(e);Dm(T).then(v=>{URL.revokeObjectURL(T);let R=nm(v,p,u,{canvasMemoryLimit:s,background:E}),S={quality:g,type:b||e.type};if(!I.length)return y(R,S);let P=Pm(wm);P.post({transforms:I,imageData:R},x=>{y(Sm(x),S),P.terminate()},[R.data.buffer])}).catch(n)}),Ym=["x","y","left","top","right","bottom","width","height"],$m=e=>typeof e=="string"&&/%/.test(e)?parseFloat(e)/100:e,qm=e=>{let[t,i]=e,a=i.points?{}:Ym.reduce((n,r)=>(n[r]=$m(i[r]),n),{});return[t,{zIndex:0,...i,...a}]},jm=e=>new Promise((t,i)=>{let a=new Image;a.src=URL.createObjectURL(e);let n=()=>{let o=a.naturalWidth,l=a.naturalHeight;o&&l&&(URL.revokeObjectURL(a.src),clearInterval(r),t({width:o,height:l}))};a.onerror=o=>{URL.revokeObjectURL(a.src),clearInterval(r),i(o)};let r=setInterval(n,1);n()});typeof window<"u"&&typeof window.document<"u"&&(HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,i){let a=this;setTimeout(()=>{let n=a.toDataURL(t,i).split(",")[1],r=atob(n),o=r.length,l=new Uint8Array(o);for(;o--;)l[o]=r.charCodeAt(o);e(new Blob([l],{type:t||"image/png"}))})}}));var _a=typeof window<"u"&&typeof window.document<"u",Xm=_a&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,mo=({addFilter:e,utils:t})=>{let{Type:i,forin:a,getFileFromBlob:n,isFile:r}=t,o=["crop","resize","filter","markup","output"],l=c=>(d,h,m)=>d(h,c?c(m):m),s=c=>c.aspectRatio===null&&c.rotation===0&&c.zoom===1&&c.center&&c.center.x===.5&&c.center.y===.5&&c.flip&&c.flip.horizontal===!1&&c.flip.vertical===!1;e("SHOULD_PREPARE_OUTPUT",(c,{query:d})=>new Promise(h=>{h(!d("IS_ASYNC"))}));let u=(c,d,h)=>new Promise(m=>{if(!c("GET_ALLOW_IMAGE_TRANSFORM")||h.archived||!r(d)||!$h(d))return m(!1);jm(d).then(()=>{let p=c("GET_IMAGE_TRANSFORM_IMAGE_FILTER");if(p){let f=p(d);if(f==null)return handleRevert(!0);if(typeof f=="boolean")return m(f);if(typeof f.then=="function")return f.then(m)}m(!0)}).catch(p=>{m(!1)})});return e("DID_CREATE_ITEM",(c,{query:d,dispatch:h})=>{d("GET_ALLOW_IMAGE_TRANSFORM")&&c.extend("requestPrepare",()=>new Promise((m,p)=>{h("REQUEST_PREPARE_OUTPUT",{query:c.id,item:c,success:m,failure:p},!0)}))}),e("PREPARE_OUTPUT",(c,{query:d,item:h})=>new Promise(m=>{u(d,c,h).then(p=>{if(!p)return m(c);let f=[];d("GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_ORIGINAL")&&f.push(()=>new Promise(R=>{R({name:d("GET_IMAGE_TRANSFORM_VARIANTS_ORIGINAL_NAME"),file:c})})),d("GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_DEFAULT")&&f.push((R,S,P)=>new Promise(x=>{R(S,P).then(O=>x({name:d("GET_IMAGE_TRANSFORM_VARIANTS_DEFAULT_NAME"),file:O}))}));let g=d("GET_IMAGE_TRANSFORM_VARIANTS")||{};a(g,(R,S)=>{let P=l(S);f.push((x,O,z)=>new Promise(A=>{P(x,O,z).then(F=>A({name:R,file:F}))}))});let b=d("GET_IMAGE_TRANSFORM_OUTPUT_QUALITY"),E=d("GET_IMAGE_TRANSFORM_OUTPUT_QUALITY_MODE"),I=b===null?null:b/100,_=d("GET_IMAGE_TRANSFORM_OUTPUT_MIME_TYPE"),y=d("GET_IMAGE_TRANSFORM_CLIENT_TRANSFORMS")||o;h.setMetadata("output",{type:_,quality:I,client:y},!0);let T=(R,S)=>new Promise((P,x)=>{let O={...S};Object.keys(O).filter(B=>B!=="exif").forEach(B=>{y.indexOf(B)===-1&&delete O[B]});let{resize:z,exif:A,output:F,crop:w,filter:L,markup:C}=O,D={image:{orientation:A?A.orientation:null},output:F&&(F.type||typeof F.quality=="number"||F.background)?{type:F.type,quality:typeof F.quality=="number"?F.quality*100:null,background:F.background||d("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR")||null}:void 0,size:z&&(z.size.width||z.size.height)?{mode:z.mode,upscale:z.upscale,...z.size}:void 0,crop:w&&!s(w)?{...w}:void 0,markup:C&&C.length?C.map(qm):[],filter:L};if(D.output){let B=F.type?F.type!==R.type:!1,j=/\/jpe?g$/.test(R.type),q=F.quality!==null?j&&E==="always":!1;if(!!!(D.size||D.crop||D.filter||B||q))return P(R)}let V={beforeCreateBlob:d("GET_IMAGE_TRANSFORM_BEFORE_CREATE_BLOB"),afterCreateBlob:d("GET_IMAGE_TRANSFORM_AFTER_CREATE_BLOB"),canvasMemoryLimit:d("GET_IMAGE_TRANSFORM_CANVAS_MEMORY_LIMIT"),stripImageHead:d("GET_IMAGE_TRANSFORM_OUTPUT_STRIP_IMAGE_HEAD")};Wm(R,D,V).then(B=>{let j=n(B,Xh(R.name,Qh(B.type)));P(j)}).catch(x)}),v=f.map(R=>R(T,c,h.getMetadata()));Promise.all(v).then(R=>{m(R.length===1&&R[0].name===null?R[0].file:R)})})})),{options:{allowImageTransform:[!0,i.BOOLEAN],imageTransformImageFilter:[null,i.FUNCTION],imageTransformOutputMimeType:[null,i.STRING],imageTransformOutputQuality:[null,i.INT],imageTransformOutputStripImageHead:[!0,i.BOOLEAN],imageTransformClientTransforms:[null,i.ARRAY],imageTransformOutputQualityMode:["always",i.STRING],imageTransformVariants:[null,i.OBJECT],imageTransformVariantsIncludeDefault:[!0,i.BOOLEAN],imageTransformVariantsDefaultName:[null,i.STRING],imageTransformVariantsIncludeOriginal:[!1,i.BOOLEAN],imageTransformVariantsOriginalName:["original_",i.STRING],imageTransformBeforeCreateBlob:[null,i.FUNCTION],imageTransformAfterCreateBlob:[null,i.FUNCTION],imageTransformCanvasMemoryLimit:[_a&&Xm?4096*4096:null,i.INT],imageTransformCanvasBackgroundColor:[null,i.STRING]}}};_a&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:mo}));var po=mo;var Ra=e=>/^video/.test(e.type),Wt=e=>/^audio/.test(e.type),ya=class{constructor(t,i){this.mediaEl=t,this.audioElems=i,this.onplayhead=!1,this.duration=0,this.timelineWidth=this.audioElems.timeline.offsetWidth-this.audioElems.playhead.offsetWidth,this.moveplayheadFn=this.moveplayhead.bind(this),this.registerListeners()}registerListeners(){this.mediaEl.addEventListener("timeupdate",this.timeUpdate.bind(this),!1),this.mediaEl.addEventListener("canplaythrough",()=>this.duration=this.mediaEl.duration,!1),this.audioElems.timeline.addEventListener("click",this.timelineClicked.bind(this),!1),this.audioElems.button.addEventListener("click",this.play.bind(this)),this.audioElems.playhead.addEventListener("mousedown",this.mouseDown.bind(this),!1),window.addEventListener("mouseup",this.mouseUp.bind(this),!1)}play(){this.mediaEl.paused?this.mediaEl.play():this.mediaEl.pause(),this.audioElems.button.classList.toggle("play"),this.audioElems.button.classList.toggle("pause")}timeUpdate(){let t=this.mediaEl.currentTime/this.duration*100;this.audioElems.playhead.style.marginLeft=t+"%",this.mediaEl.currentTime===this.duration&&(this.audioElems.button.classList.toggle("play"),this.audioElems.button.classList.toggle("pause"))}moveplayhead(t){let i=t.clientX-this.getPosition(this.audioElems.timeline);i>=0&&i<=this.timelineWidth&&(this.audioElems.playhead.style.marginLeft=i+"px"),i<0&&(this.audioElems.playhead.style.marginLeft="0px"),i>this.timelineWidth&&(this.audioElems.playhead.style.marginLeft=this.timelineWidth-4+"px")}timelineClicked(t){this.moveplayhead(t),this.mediaEl.currentTime=this.duration*this.clickPercent(t)}mouseDown(){this.onplayhead=!0,window.addEventListener("mousemove",this.moveplayheadFn,!0),this.mediaEl.removeEventListener("timeupdate",this.timeUpdate.bind(this),!1)}mouseUp(t){window.removeEventListener("mousemove",this.moveplayheadFn,!0),this.onplayhead==!0&&(this.moveplayhead(t),this.mediaEl.currentTime=this.duration*this.clickPercent(t),this.mediaEl.addEventListener("timeupdate",this.timeUpdate.bind(this),!1)),this.onplayhead=!1}clickPercent(t){return(t.clientX-this.getPosition(this.audioElems.timeline))/this.timelineWidth}getPosition(t){return t.getBoundingClientRect().left}},Qm=e=>e.utils.createView({name:"media-preview",tag:"div",ignoreRect:!0,create:({root:t,props:i})=>{let{id:a}=i,n=t.query("GET_ITEM",{id:i.id}),r=Wt(n.file)?"audio":"video";if(t.ref.media=document.createElement(r),t.ref.media.setAttribute("controls",!0),t.element.appendChild(t.ref.media),Wt(n.file)){let o=document.createDocumentFragment();t.ref.audio=[],t.ref.audio.container=document.createElement("div"),t.ref.audio.button=document.createElement("span"),t.ref.audio.timeline=document.createElement("div"),t.ref.audio.playhead=document.createElement("div"),t.ref.audio.container.className="audioplayer",t.ref.audio.button.className="playpausebtn play",t.ref.audio.timeline.className="timeline",t.ref.audio.playhead.className="playhead",t.ref.audio.timeline.appendChild(t.ref.audio.playhead),t.ref.audio.container.appendChild(t.ref.audio.button),t.ref.audio.container.appendChild(t.ref.audio.timeline),o.appendChild(t.ref.audio.container),t.element.appendChild(o)}},write:e.utils.createRoute({DID_MEDIA_PREVIEW_LOAD:({root:t,props:i})=>{let{id:a}=i,n=t.query("GET_ITEM",{id:i.id});if(!n)return;let r=window.URL||window.webkitURL,o=new Blob([n.file],{type:n.file.type});t.ref.media.type=n.file.type,t.ref.media.src=n.file.mock&&n.file.url||r.createObjectURL(o),Wt(n.file)&&new ya(t.ref.media,t.ref.audio),t.ref.media.addEventListener("loadeddata",()=>{let l=75;if(Ra(n.file)){let s=t.ref.media.offsetWidth,u=t.ref.media.videoWidth/s;l=t.ref.media.videoHeight/u}t.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:i.id,height:l})},!1)}})}),Zm=e=>{let t=({root:a,props:n})=>{let{id:r}=n;a.query("GET_ITEM",r)&&a.dispatch("DID_MEDIA_PREVIEW_LOAD",{id:r})},i=({root:a,props:n})=>{let r=Qm(e);a.ref.media=a.appendChildView(a.createChildView(r,{id:n.id}))};return e.utils.createView({name:"media-preview-wrapper",create:i,write:e.utils.createRoute({DID_MEDIA_PREVIEW_CONTAINER_CREATE:t})})},Sa=e=>{let{addFilter:t,utils:i}=e,{Type:a,createRoute:n}=i,r=Zm(e);return t("CREATE_VIEW",o=>{let{is:l,view:s,query:u}=o;if(!l("file"))return;let c=({root:d,props:h})=>{let{id:m}=h,p=u("GET_ITEM",m),f=u("GET_ALLOW_VIDEO_PREVIEW"),g=u("GET_ALLOW_AUDIO_PREVIEW");!p||p.archived||(!Ra(p.file)||!f)&&(!Wt(p.file)||!g)||(d.ref.mediaPreview=s.appendChildView(s.createChildView(r,{id:m})),d.dispatch("DID_MEDIA_PREVIEW_CONTAINER_CREATE",{id:m}))};s.registerWriter(n({DID_LOAD_ITEM:c},({root:d,props:h})=>{let{id:m}=h,p=u("GET_ITEM",m),f=d.query("GET_ALLOW_VIDEO_PREVIEW"),g=d.query("GET_ALLOW_AUDIO_PREVIEW");!p||(!Ra(p.file)||!f)&&(!Wt(p.file)||!g)||d.rect.element.hidden}))}),{options:{allowVideoPreview:[!0,a.BOOLEAN],allowAudioPreview:[!0,a.BOOLEAN]}}},Km=typeof window<"u"&&typeof window.document<"u";Km&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Sa}));var fo={labelIdle:'\u0627\u0633\u062D\u0628 \u0648 \u0627\u062F\u0631\u062C \u0645\u0644\u0641\u0627\u062A\u0643 \u0623\u0648 \u062A\u0635\u0641\u062D ',labelInvalidField:"\u0627\u0644\u062D\u0642\u0644 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0645\u0644\u0641\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629",labelFileWaitingForSize:"\u0628\u0627\u0646\u062A\u0638\u0627\u0631 \u0627\u0644\u062D\u062C\u0645",labelFileSizeNotAvailable:"\u0627\u0644\u062D\u062C\u0645 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D",labelFileLoading:"\u0628\u0627\u0644\u0625\u0646\u062A\u0638\u0627\u0631",labelFileLoadError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u062D\u0645\u064A\u0644",labelFileProcessing:"\u064A\u062A\u0645 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingComplete:"\u062A\u0645 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingAborted:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingRevertError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u0631\u0627\u062C\u0639",labelFileRemoveError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062D\u0630\u0641",labelTapToCancel:"\u0627\u0646\u0642\u0631 \u0644\u0644\u0625\u0644\u063A\u0627\u0621",labelTapToRetry:"\u0627\u0646\u0642\u0631 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",labelTapToUndo:"\u0627\u0646\u0642\u0631 \u0644\u0644\u062A\u0631\u0627\u062C\u0639",labelButtonRemoveItem:"\u0645\u0633\u062D",labelButtonAbortItemLoad:"\u0625\u0644\u063A\u0627\u0621",labelButtonRetryItemLoad:"\u0625\u0639\u0627\u062F\u0629",labelButtonAbortItemProcessing:"\u0625\u0644\u063A\u0627\u0621",labelButtonUndoItemProcessing:"\u062A\u0631\u0627\u062C\u0639",labelButtonRetryItemProcessing:"\u0625\u0639\u0627\u062F\u0629",labelButtonProcessItem:"\u0631\u0641\u0639",labelMaxFileSizeExceeded:"\u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u0627",labelMaxFileSize:"\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0623\u0642\u0635\u0649: {filesize}",labelMaxTotalFileSizeExceeded:"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u062D\u062C\u0645 \u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A",labelMaxTotalFileSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641: {filesize}",labelFileTypeNotAllowed:"\u0645\u0644\u0641 \u0645\u0646 \u0646\u0648\u0639 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",fileValidateTypeLabelExpectedTypes:"\u062A\u062A\u0648\u0642\u0639 {allButLastType} \u0645\u0646 {lastType}",imageValidateSizeLabelFormatError:"\u0646\u0648\u0639 \u0627\u0644\u0635\u0648\u0631\u0629 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",imageValidateSizeLabelImageSizeTooSmall:"\u0627\u0644\u0635\u0648\u0631\u0629 \u0635\u063A\u064A\u0631 \u062C\u062F\u0627",imageValidateSizeLabelImageSizeTooBig:"\u0627\u0644\u0635\u0648\u0631\u0629 \u0643\u0628\u064A\u0631\u0629 \u062C\u062F\u0627",imageValidateSizeLabelExpectedMinSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 \u0644\u0644\u0623\u0628\u0639\u0627\u062F \u0647\u0648: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0623\u0628\u0639\u0627\u062F \u0647\u0648: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0627\u0644\u062F\u0642\u0629 \u0636\u0639\u064A\u0641\u0629 \u062C\u062F\u0627",imageValidateSizeLabelImageResolutionTooHigh:"\u0627\u0644\u062F\u0642\u0629 \u0645\u0631\u062A\u0641\u0639\u0629 \u062C\u062F\u0627",imageValidateSizeLabelExpectedMinResolution:"\u0623\u0642\u0644 \u062F\u0642\u0629: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u0623\u0642\u0635\u0649 \u062F\u0642\u0629: {maxResolution}"};var go={labelIdle:'Arrossega i deixa els teus fitxers o Navega ',labelInvalidField:"El camp cont\xE9 fitxers inv\xE0lids",labelFileWaitingForSize:"Esperant mida",labelFileSizeNotAvailable:"Mida no disponible",labelFileLoading:"Carregant",labelFileLoadError:"Error durant la c\xE0rrega",labelFileProcessing:"Pujant",labelFileProcessingComplete:"Pujada completada",labelFileProcessingAborted:"Pujada cancel\xB7lada",labelFileProcessingError:"Error durant la pujada",labelFileProcessingRevertError:"Error durant la reversi\xF3",labelFileRemoveError:"Error durant l'eliminaci\xF3",labelTapToCancel:"toca per cancel\xB7lar",labelTapToRetry:"toca per reintentar",labelTapToUndo:"toca per desfer",labelButtonRemoveItem:"Eliminar",labelButtonAbortItemLoad:"Cancel\xB7lar",labelButtonRetryItemLoad:"Reintentar",labelButtonAbortItemProcessing:"Cancel\xB7lar",labelButtonUndoItemProcessing:"Desfer",labelButtonRetryItemProcessing:"Reintentar",labelButtonProcessItem:"Pujar",labelMaxFileSizeExceeded:"El fitxer \xE9s massa gran",labelMaxFileSize:"La mida m\xE0xima del fitxer \xE9s {filesize}",labelMaxTotalFileSizeExceeded:"Mida m\xE0xima total excedida",labelMaxTotalFileSize:"La mida m\xE0xima total del fitxer \xE9s {filesize}",labelFileTypeNotAllowed:"Fitxer de tipus inv\xE0lid",fileValidateTypeLabelExpectedTypes:"Espera {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipus d'imatge no suportada",imageValidateSizeLabelImageSizeTooSmall:"La imatge \xE9s massa petita",imageValidateSizeLabelImageSizeTooBig:"La imatge \xE9s massa gran",imageValidateSizeLabelExpectedMinSize:"La mida m\xEDnima \xE9s {minWidth} x {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La mida m\xE0xima \xE9s {maxWidth} x {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La resoluci\xF3 \xE9s massa baixa",imageValidateSizeLabelImageResolutionTooHigh:"La resoluci\xF3 \xE9s massa alta",imageValidateSizeLabelExpectedMinResolution:"La resoluci\xF3 m\xEDnima \xE9s {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La resoluci\xF3 m\xE0xima \xE9s {maxResolution}"};var Eo={labelIdle:'P\u0159et\xE1hn\u011Bte soubor sem (drag&drop) nebo Vyhledat ',labelInvalidField:"Pole obsahuje chybn\xE9 soubory",labelFileWaitingForSize:"Zji\u0161\u0165uje se velikost",labelFileSizeNotAvailable:"Velikost nen\xED zn\xE1m\xE1",labelFileLoading:"P\u0159en\xE1\u0161\xED se",labelFileLoadError:"Chyba p\u0159i p\u0159enosu",labelFileProcessing:"Prob\xEDh\xE1 upload",labelFileProcessingComplete:"Upload dokon\u010Den",labelFileProcessingAborted:"Upload stornov\xE1n",labelFileProcessingError:"Chyba p\u0159i uploadu",labelFileProcessingRevertError:"Chyba p\u0159i obnov\u011B",labelFileRemoveError:"Chyba p\u0159i odstran\u011Bn\xED",labelTapToCancel:"klepn\u011Bte pro storno",labelTapToRetry:"klepn\u011Bte pro opakov\xE1n\xED",labelTapToUndo:"klepn\u011Bte pro vr\xE1cen\xED",labelButtonRemoveItem:"Odstranit",labelButtonAbortItemLoad:"Storno",labelButtonRetryItemLoad:"Opakovat",labelButtonAbortItemProcessing:"Zp\u011Bt",labelButtonUndoItemProcessing:"Vr\xE1tit",labelButtonRetryItemProcessing:"Opakovat",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Soubor je p\u0159\xEDli\u0161 velk\xFD",labelMaxFileSize:"Nejv\u011Bt\u0161\xED velikost souboru je {filesize}",labelMaxTotalFileSizeExceeded:"P\u0159ekro\u010Dena maxim\xE1ln\xED celkov\xE1 velikost souboru",labelMaxTotalFileSize:"Maxim\xE1ln\xED celkov\xE1 velikost souboru je {filesize}",labelFileTypeNotAllowed:"Soubor je nespr\xE1vn\xE9ho typu",fileValidateTypeLabelExpectedTypes:"O\u010Dek\xE1v\xE1 se {allButLastType} nebo {lastType}",imageValidateSizeLabelFormatError:"Obr\xE1zek tohoto typu nen\xED podporov\xE1n",imageValidateSizeLabelImageSizeTooSmall:"Obr\xE1zek je p\u0159\xEDli\u0161 mal\xFD",imageValidateSizeLabelImageSizeTooBig:"Obr\xE1zek je p\u0159\xEDli\u0161 velk\xFD",imageValidateSizeLabelExpectedMinSize:"Minim\xE1ln\xED rozm\u011Br je {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maxim\xE1ln\xED rozm\u011Br je {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rozli\u0161en\xED je p\u0159\xEDli\u0161 mal\xE9",imageValidateSizeLabelImageResolutionTooHigh:"Rozli\u0161en\xED je p\u0159\xEDli\u0161 velk\xE9",imageValidateSizeLabelExpectedMinResolution:"Minim\xE1ln\xED rozli\u0161en\xED je {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maxim\xE1ln\xED rozli\u0161en\xED je {maxResolution}"};var To={labelIdle:'Tr\xE6k & slip filer eller Gennemse ',labelInvalidField:"Felt indeholder ugyldige filer",labelFileWaitingForSize:"Venter p\xE5 st\xF8rrelse",labelFileSizeNotAvailable:"St\xF8rrelse ikke tilg\xE6ngelig",labelFileLoading:"Loader",labelFileLoadError:"Load fejlede",labelFileProcessing:"Uploader",labelFileProcessingComplete:"Upload f\xE6rdig",labelFileProcessingAborted:"Upload annulleret",labelFileProcessingError:"Upload fejlede",labelFileProcessingRevertError:"Fortryd fejlede",labelFileRemoveError:"Fjern fejlede",labelTapToCancel:"tryk for at annullere",labelTapToRetry:"tryk for at pr\xF8ve igen",labelTapToUndo:"tryk for at fortryde",labelButtonRemoveItem:"Fjern",labelButtonAbortItemLoad:"Annuller",labelButtonRetryItemLoad:"Fors\xF8g igen",labelButtonAbortItemProcessing:"Annuller",labelButtonUndoItemProcessing:"Fortryd",labelButtonRetryItemProcessing:"Pr\xF8v igen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Filen er for stor",labelMaxFileSize:"Maksimal filst\xF8rrelse er {filesize}",labelMaxTotalFileSizeExceeded:"Maksimal totalst\xF8rrelse overskredet",labelMaxTotalFileSize:"Maksimal total filst\xF8rrelse er {filesize}",labelFileTypeNotAllowed:"Ugyldig filtype",fileValidateTypeLabelExpectedTypes:"Forventer {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Ugyldigt format",imageValidateSizeLabelImageSizeTooSmall:"Billedet er for lille",imageValidateSizeLabelImageSizeTooBig:"Billedet er for stort",imageValidateSizeLabelExpectedMinSize:"Minimum st\xF8rrelse er {minBredde} \xD7 {minH\xF8jde}",imageValidateSizeLabelExpectedMaxSize:"Maksimal st\xF8rrelse er {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"For lav opl\xF8sning",imageValidateSizeLabelImageResolutionTooHigh:"For h\xF8j opl\xF8sning",imageValidateSizeLabelExpectedMinResolution:"Minimum opl\xF8sning er {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimal opl\xF8sning er {maxResolution}"};var Io={labelIdle:'Dateien ablegen oder ausw\xE4hlen ',labelInvalidField:"Feld beinhaltet ung\xFCltige Dateien",labelFileWaitingForSize:"Dateigr\xF6\xDFe berechnen",labelFileSizeNotAvailable:"Dateigr\xF6\xDFe nicht verf\xFCgbar",labelFileLoading:"Laden",labelFileLoadError:"Fehler beim Laden",labelFileProcessing:"Upload l\xE4uft",labelFileProcessingComplete:"Upload abgeschlossen",labelFileProcessingAborted:"Upload abgebrochen",labelFileProcessingError:"Fehler beim Upload",labelFileProcessingRevertError:"Fehler beim Wiederherstellen",labelFileRemoveError:"Fehler beim L\xF6schen",labelTapToCancel:"abbrechen",labelTapToRetry:"erneut versuchen",labelTapToUndo:"r\xFCckg\xE4ngig",labelButtonRemoveItem:"Entfernen",labelButtonAbortItemLoad:"Verwerfen",labelButtonRetryItemLoad:"Erneut versuchen",labelButtonAbortItemProcessing:"Abbrechen",labelButtonUndoItemProcessing:"R\xFCckg\xE4ngig",labelButtonRetryItemProcessing:"Erneut versuchen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Datei ist zu gro\xDF",labelMaxFileSize:"Maximale Dateigr\xF6\xDFe: {filesize}",labelMaxTotalFileSizeExceeded:"Maximale gesamte Dateigr\xF6\xDFe \xFCberschritten",labelMaxTotalFileSize:"Maximale gesamte Dateigr\xF6\xDFe: {filesize}",labelFileTypeNotAllowed:"Dateityp ung\xFCltig",fileValidateTypeLabelExpectedTypes:"Erwartet {allButLastType} oder {lastType}",imageValidateSizeLabelFormatError:"Bildtyp nicht unterst\xFCtzt",imageValidateSizeLabelImageSizeTooSmall:"Bild ist zu klein",imageValidateSizeLabelImageSizeTooBig:"Bild ist zu gro\xDF",imageValidateSizeLabelExpectedMinSize:"Mindestgr\xF6\xDFe: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximale Gr\xF6\xDFe: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Aufl\xF6sung ist zu niedrig",imageValidateSizeLabelImageResolutionTooHigh:"Aufl\xF6sung ist zu hoch",imageValidateSizeLabelExpectedMinResolution:"Mindestaufl\xF6sung: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximale Aufl\xF6sung: {maxResolution}"};var bo={labelIdle:'Drag & Drop your files or Browse ',labelInvalidField:"Field contains invalid files",labelFileWaitingForSize:"Waiting for size",labelFileSizeNotAvailable:"Size not available",labelFileLoading:"Loading",labelFileLoadError:"Error during load",labelFileProcessing:"Uploading",labelFileProcessingComplete:"Upload complete",labelFileProcessingAborted:"Upload cancelled",labelFileProcessingError:"Error during upload",labelFileProcessingRevertError:"Error during revert",labelFileRemoveError:"Error during remove",labelTapToCancel:"tap to cancel",labelTapToRetry:"tap to retry",labelTapToUndo:"tap to undo",labelButtonRemoveItem:"Remove",labelButtonAbortItemLoad:"Abort",labelButtonRetryItemLoad:"Retry",labelButtonAbortItemProcessing:"Cancel",labelButtonUndoItemProcessing:"Undo",labelButtonRetryItemProcessing:"Retry",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"File is too large",labelMaxFileSize:"Maximum file size is {filesize}",labelMaxTotalFileSizeExceeded:"Maximum total size exceeded",labelMaxTotalFileSize:"Maximum total file size is {filesize}",labelFileTypeNotAllowed:"File of invalid type",fileValidateTypeLabelExpectedTypes:"Expects {allButLastType} or {lastType}",imageValidateSizeLabelFormatError:"Image type not supported",imageValidateSizeLabelImageSizeTooSmall:"Image is too small",imageValidateSizeLabelImageSizeTooBig:"Image is too big",imageValidateSizeLabelExpectedMinSize:"Minimum size is {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum size is {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolution is too low",imageValidateSizeLabelImageResolutionTooHigh:"Resolution is too high",imageValidateSizeLabelExpectedMinResolution:"Minimum resolution is {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximum resolution is {maxResolution}"};var _o={labelIdle:'Arrastra y suelta tus archivos o Examina ',labelInvalidField:"El campo contiene archivos inv\xE1lidos",labelFileWaitingForSize:"Esperando tama\xF1o",labelFileSizeNotAvailable:"Tama\xF1o no disponible",labelFileLoading:"Cargando",labelFileLoadError:"Error durante la carga",labelFileProcessing:"Subiendo",labelFileProcessingComplete:"Subida completa",labelFileProcessingAborted:"Subida cancelada",labelFileProcessingError:"Error durante la subida",labelFileProcessingRevertError:"Error durante la reversi\xF3n",labelFileRemoveError:"Error durante la eliminaci\xF3n",labelTapToCancel:"toca para cancelar",labelTapToRetry:"tocar para reintentar",labelTapToUndo:"tocar para deshacer",labelButtonRemoveItem:"Eliminar",labelButtonAbortItemLoad:"Cancelar",labelButtonRetryItemLoad:"Reintentar",labelButtonAbortItemProcessing:"Cancelar",labelButtonUndoItemProcessing:"Deshacer",labelButtonRetryItemProcessing:"Reintentar",labelButtonProcessItem:"Subir",labelMaxFileSizeExceeded:"El archivo es demasiado grande",labelMaxFileSize:"El tama\xF1o m\xE1ximo del archivo es {filesize}",labelMaxTotalFileSizeExceeded:"Tama\xF1o total m\xE1ximo excedido",labelMaxTotalFileSize:"El tama\xF1o total m\xE1ximo del archivo es {filesize}",labelFileTypeNotAllowed:"Archivo de tipo inv\xE1lido",fileValidateTypeLabelExpectedTypes:"Espera {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipo de imagen no soportada",imageValidateSizeLabelImageSizeTooSmall:"La imagen es demasiado peque\xF1a",imageValidateSizeLabelImageSizeTooBig:"La imagen es demasiado grande",imageValidateSizeLabelExpectedMinSize:"El tama\xF1o m\xEDnimo es {minWidth} x {minHeight}",imageValidateSizeLabelExpectedMaxSize:"El tama\xF1o m\xE1ximo es {maxWidth} x {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La resoluci\xF3n es demasiado baja",imageValidateSizeLabelImageResolutionTooHigh:"La resoluci\xF3n es demasiado alta",imageValidateSizeLabelExpectedMinResolution:"La resoluci\xF3n m\xEDnima es {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La resoluci\xF3n m\xE1xima es {maxResolution}"};var Ro={labelIdle:'\u0641\u0627\u06CC\u0644 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0628\u06A9\u0634\u06CC\u062F \u0648 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F\u060C \u06CC\u0627 \u062C\u0633\u062A\u062C\u0648 \u06A9\u0646\u06CC\u062F ',labelInvalidField:"\u0641\u06CC\u0644\u062F \u062F\u0627\u0631\u0627\u06CC \u0641\u0627\u06CC\u0644 \u0647\u0627\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",labelFileWaitingForSize:"Waiting for size",labelFileSizeNotAvailable:"\u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 \u0645\u062C\u0627\u0632 \u0646\u06CC\u0633\u062A",labelFileLoading:"\u062F\u0631\u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileLoadError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u0627\u062C\u0631\u0627",labelFileProcessing:"\u062F\u0631\u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileProcessingComplete:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u06A9\u0627\u0645\u0644 \u0634\u062F",labelFileProcessingAborted:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u0644\u063A\u0648 \u0634\u062F",labelFileProcessingError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileProcessingRevertError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u0630\u0641",labelFileRemoveError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u0630\u0641",labelTapToCancel:"\u0628\u0631\u0627\u06CC \u0644\u063A\u0648 \u0636\u0631\u0628\u0647 \u0628\u0632\u0646\u06CC\u062F",labelTapToRetry:"\u0628\u0631\u0627\u06CC \u062A\u06A9\u0631\u0627\u0631 \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",labelTapToUndo:"\u0628\u0631\u0627\u06CC \u0628\u0631\u06AF\u0634\u062A \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",labelButtonRemoveItem:"\u062D\u0630\u0641",labelButtonAbortItemLoad:"\u0644\u063A\u0648",labelButtonRetryItemLoad:"\u062A\u06A9\u0631\u0627\u0631",labelButtonAbortItemProcessing:"\u0644\u063A\u0648",labelButtonUndoItemProcessing:"\u0628\u0631\u06AF\u0634\u062A",labelButtonRetryItemProcessing:"\u062A\u06A9\u0631\u0627\u0631",labelButtonProcessItem:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelMaxFileSizeExceeded:"\u0641\u0627\u06CC\u0644 \u0628\u0633\u06CC\u0627\u0631 \u062D\u062C\u06CC\u0645 \u0627\u0633\u062A",labelMaxFileSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0645\u062C\u0627\u0632 \u0641\u0627\u06CC\u0644 {filesize} \u0627\u0633\u062A",labelMaxTotalFileSizeExceeded:"\u0627\u0632 \u062D\u062F\u0627\u06A9\u062B\u0631 \u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 \u0628\u06CC\u0634\u062A\u0631 \u0634\u062F",labelMaxTotalFileSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 {filesize} \u0627\u0633\u062A",labelFileTypeNotAllowed:"\u0646\u0648\u0639 \u0641\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",fileValidateTypeLabelExpectedTypes:"\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 {allButLastType} \u06CC\u0627 {lastType}",imageValidateSizeLabelFormatError:"\u0641\u0631\u0645\u062A \u062A\u0635\u0648\u06CC\u0631 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u0646\u0645\u06CC \u0634\u0648\u062F",imageValidateSizeLabelImageSizeTooSmall:"\u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u06A9\u0648\u0686\u06A9 \u0627\u0633\u062A",imageValidateSizeLabelImageSizeTooBig:"\u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u0628\u0632\u0631\u06AF \u0627\u0633\u062A",imageValidateSizeLabelExpectedMinSize:"\u062D\u062F\u0627\u0642\u0644 \u0627\u0646\u062F\u0627\u0632\u0647 {minWidth} \xD7 {minHeight} \u0627\u0633\u062A",imageValidateSizeLabelExpectedMaxSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0627\u0646\u062F\u0627\u0632\u0647 {maxWidth} \xD7 {maxHeight} \u0627\u0633\u062A",imageValidateSizeLabelImageResolutionTooLow:"\u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u06A9\u0645 \u0627\u0633\u062A",imageValidateSizeLabelImageResolutionTooHigh:"\u0648\u0636\u0648\u0639 \u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u0632\u06CC\u0627\u062F \u0627\u0633\u062A",imageValidateSizeLabelExpectedMinResolution:"\u062D\u062F\u0627\u0642\u0644 \u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 {minResolution} \u0627\u0633\u062A",imageValidateSizeLabelExpectedMaxResolution:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 {maxResolution} \u0627\u0633\u062A"};var yo={labelIdle:'Ved\xE4 ja pudota tiedostoja tai Selaa ',labelInvalidField:"Kent\xE4ss\xE4 on virheellisi\xE4 tiedostoja",labelFileWaitingForSize:"Odotetaan kokoa",labelFileSizeNotAvailable:"Kokoa ei saatavilla",labelFileLoading:"Ladataan",labelFileLoadError:"Virhe latauksessa",labelFileProcessing:"L\xE4hetet\xE4\xE4n",labelFileProcessingComplete:"L\xE4hetys valmis",labelFileProcessingAborted:"L\xE4hetys peruttu",labelFileProcessingError:"Virhe l\xE4hetyksess\xE4",labelFileProcessingRevertError:"Virhe palautuksessa",labelFileRemoveError:"Virhe poistamisessa",labelTapToCancel:"peruuta napauttamalla",labelTapToRetry:"yrit\xE4 uudelleen napauttamalla",labelTapToUndo:"kumoa napauttamalla",labelButtonRemoveItem:"Poista",labelButtonAbortItemLoad:"Keskeyt\xE4",labelButtonRetryItemLoad:"Yrit\xE4 uudelleen",labelButtonAbortItemProcessing:"Peruuta",labelButtonUndoItemProcessing:"Kumoa",labelButtonRetryItemProcessing:"Yrit\xE4 uudelleen",labelButtonProcessItem:"L\xE4het\xE4",labelMaxFileSizeExceeded:"Tiedoston koko on liian suuri",labelMaxFileSize:"Tiedoston maksimikoko on {filesize}",labelMaxTotalFileSizeExceeded:"Tiedostojen yhdistetty maksimikoko ylitetty",labelMaxTotalFileSize:"Tiedostojen yhdistetty maksimikoko on {filesize}",labelFileTypeNotAllowed:"Tiedostotyyppi\xE4 ei sallita",fileValidateTypeLabelExpectedTypes:"Sallitaan {allButLastType} tai {lastType}",imageValidateSizeLabelFormatError:"Kuvatyyppi\xE4 ei tueta",imageValidateSizeLabelImageSizeTooSmall:"Kuva on liian pieni",imageValidateSizeLabelImageSizeTooBig:"Kuva on liian suuri",imageValidateSizeLabelExpectedMinSize:"Minimikoko on {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksimikoko on {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resoluutio on liian pieni",imageValidateSizeLabelImageResolutionTooHigh:"Resoluutio on liian suuri",imageValidateSizeLabelExpectedMinResolution:"Minimiresoluutio on {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimiresoluutio on {maxResolution}"};var So={labelIdle:'Faites glisser vos fichiers ou Parcourir ',labelInvalidField:"Le champ contient des fichiers invalides",labelFileWaitingForSize:"En attente de taille",labelFileSizeNotAvailable:"Taille non disponible",labelFileLoading:"Chargement",labelFileLoadError:"Erreur durant le chargement",labelFileProcessing:"Traitement",labelFileProcessingComplete:"Traitement effectu\xE9",labelFileProcessingAborted:"Traitement interrompu",labelFileProcessingError:"Erreur durant le traitement",labelFileProcessingRevertError:"Erreur durant la restauration",labelFileRemoveError:"Erreur durant la suppression",labelTapToCancel:"appuyer pour annuler",labelTapToRetry:"appuyer pour r\xE9essayer",labelTapToUndo:"appuyer pour revenir en arri\xE8re",labelButtonRemoveItem:"Retirer",labelButtonAbortItemLoad:"Annuler",labelButtonRetryItemLoad:"Recommencer",labelButtonAbortItemProcessing:"Annuler",labelButtonUndoItemProcessing:"Revenir en arri\xE8re",labelButtonRetryItemProcessing:"Recommencer",labelButtonProcessItem:"Transf\xE9rer",labelMaxFileSizeExceeded:"Le fichier est trop volumineux",labelMaxFileSize:"La taille maximale de fichier est {filesize}",labelMaxTotalFileSizeExceeded:"Taille totale maximale d\xE9pass\xE9e",labelMaxTotalFileSize:"La taille totale maximale des fichiers est {filesize}",labelFileTypeNotAllowed:"Fichier non valide",fileValidateTypeLabelExpectedTypes:"Attendu {allButLastType} ou {lastType}",imageValidateSizeLabelFormatError:"Type d'image non pris en charge",imageValidateSizeLabelImageSizeTooSmall:"L'image est trop petite",imageValidateSizeLabelImageSizeTooBig:"L'image est trop grande",imageValidateSizeLabelExpectedMinSize:"La taille minimale est {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La taille maximale est {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La r\xE9solution est trop faible",imageValidateSizeLabelImageResolutionTooHigh:"La r\xE9solution est trop \xE9lev\xE9e",imageValidateSizeLabelExpectedMinResolution:"La r\xE9solution minimale est {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La r\xE9solution maximale est {maxResolution}"};var wo={labelIdle:'Mozgasd ide a f\xE1jlt a felt\xF6lt\xE9shez, vagy tall\xF3z\xE1s ',labelInvalidField:"A mez\u0151 \xE9rv\xE9nytelen f\xE1jlokat tartalmaz",labelFileWaitingForSize:"F\xE1ljm\xE9ret kisz\xE1mol\xE1sa",labelFileSizeNotAvailable:"A f\xE1jlm\xE9ret nem el\xE9rhet\u0151",labelFileLoading:"T\xF6lt\xE9s",labelFileLoadError:"Hiba a bet\xF6lt\xE9s sor\xE1n",labelFileProcessing:"Felt\xF6lt\xE9s",labelFileProcessingComplete:"Sikeres felt\xF6lt\xE9s",labelFileProcessingAborted:"A felt\xF6lt\xE9s megszak\xEDtva",labelFileProcessingError:"Hiba t\xF6rt\xE9nt a felt\xF6lt\xE9s sor\xE1n",labelFileProcessingRevertError:"Hiba a vissza\xE1ll\xEDt\xE1s sor\xE1n",labelFileRemoveError:"Hiba t\xF6rt\xE9nt az elt\xE1vol\xEDt\xE1s sor\xE1n",labelTapToCancel:"koppints a t\xF6rl\xE9shez",labelTapToRetry:"koppints az \xFAjrakezd\xE9shez",labelTapToUndo:"koppints a visszavon\xE1shoz",labelButtonRemoveItem:"Elt\xE1vol\xEDt\xE1s",labelButtonAbortItemLoad:"Megszak\xEDt\xE1s",labelButtonRetryItemLoad:"\xDAjrapr\xF3b\xE1lkoz\xE1s",labelButtonAbortItemProcessing:"Megszak\xEDt\xE1s",labelButtonUndoItemProcessing:"Visszavon\xE1s",labelButtonRetryItemProcessing:"\xDAjrapr\xF3b\xE1lkoz\xE1s",labelButtonProcessItem:"Felt\xF6lt\xE9s",labelMaxFileSizeExceeded:"A f\xE1jl t\xFAll\xE9pte a maxim\xE1lis m\xE9retet",labelMaxFileSize:"Maxim\xE1lis f\xE1jlm\xE9ret: {filesize}",labelMaxTotalFileSizeExceeded:"T\xFAll\xE9pte a maxim\xE1lis teljes m\xE9retet",labelMaxTotalFileSize:"A maxim\xE1is teljes f\xE1jlm\xE9ret: {filesize}",labelFileTypeNotAllowed:"\xC9rv\xE9nytelen t\xEDpus\xFA f\xE1jl",fileValidateTypeLabelExpectedTypes:"Enged\xE9lyezett t\xEDpusok {allButLastType} vagy {lastType}",imageValidateSizeLabelFormatError:"A k\xE9pt\xEDpus nem t\xE1mogatott",imageValidateSizeLabelImageSizeTooSmall:"A k\xE9p t\xFAl kicsi",imageValidateSizeLabelImageSizeTooBig:"A k\xE9p t\xFAl nagy",imageValidateSizeLabelExpectedMinSize:"Minimum m\xE9ret: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum m\xE9ret: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"A felbont\xE1s t\xFAl alacsony",imageValidateSizeLabelImageResolutionTooHigh:"A felbont\xE1s t\xFAl magas",imageValidateSizeLabelExpectedMinResolution:"Minim\xE1is felbont\xE1s: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maxim\xE1lis felbont\xE1s: {maxResolution}"};var vo={labelIdle:'Seret & Jatuhkan berkas Anda atau Jelajahi',labelInvalidField:"Isian berisi berkas yang tidak valid",labelFileWaitingForSize:"Menunggu ukuran berkas",labelFileSizeNotAvailable:"Ukuran berkas tidak tersedia",labelFileLoading:"Memuat",labelFileLoadError:"Kesalahan saat memuat",labelFileProcessing:"Mengunggah",labelFileProcessingComplete:"Pengunggahan selesai",labelFileProcessingAborted:"Pengunggahan dibatalkan",labelFileProcessingError:"Kesalahan saat pengunggahan",labelFileProcessingRevertError:"Kesalahan saat pemulihan",labelFileRemoveError:"Kesalahan saat penghapusan",labelTapToCancel:"ketuk untuk membatalkan",labelTapToRetry:"ketuk untuk mencoba lagi",labelTapToUndo:"ketuk untuk mengurungkan",labelButtonRemoveItem:"Hapus",labelButtonAbortItemLoad:"Batalkan",labelButtonRetryItemLoad:"Coba Kembali",labelButtonAbortItemProcessing:"Batalkan",labelButtonUndoItemProcessing:"Urungkan",labelButtonRetryItemProcessing:"Coba Kembali",labelButtonProcessItem:"Unggah",labelMaxFileSizeExceeded:"Berkas terlalu besar",labelMaxFileSize:"Ukuran berkas maksimum adalah {filesize}",labelMaxTotalFileSizeExceeded:"Jumlah berkas maksimum terlampaui",labelMaxTotalFileSize:"Jumlah berkas maksimum adalah {filesize}",labelFileTypeNotAllowed:"Jenis berkas tidak valid",fileValidateTypeLabelExpectedTypes:"Mengharapkan {allButLastType} atau {lastType}",imageValidateSizeLabelFormatError:"Jenis citra tidak didukung",imageValidateSizeLabelImageSizeTooSmall:"Citra terlalu kecil",imageValidateSizeLabelImageSizeTooBig:"Citra terlalu besar",imageValidateSizeLabelExpectedMinSize:"Ukuran minimum adalah {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Ukuran maksimum adalah {minWidth} \xD7 {minHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolusi terlalu rendah",imageValidateSizeLabelImageResolutionTooHigh:"Resolusi terlalu tinggi",imageValidateSizeLabelExpectedMinResolution:"Resolusi minimum adalah {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Resolusi maksimum adalah {maxResolution}"};var Ao={labelIdle:'Trascina e rilascia i tuoi file oppure Carica ',labelInvalidField:"Il campo contiene dei file non validi",labelFileWaitingForSize:"Aspettando le dimensioni",labelFileSizeNotAvailable:"Dimensioni non disponibili",labelFileLoading:"Caricamento",labelFileLoadError:"Errore durante il caricamento",labelFileProcessing:"Caricamento",labelFileProcessingComplete:"Caricamento completato",labelFileProcessingAborted:"Caricamento cancellato",labelFileProcessingError:"Errore durante il caricamento",labelFileProcessingRevertError:"Errore durante il ripristino",labelFileRemoveError:"Errore durante l'eliminazione",labelTapToCancel:"tocca per cancellare",labelTapToRetry:"tocca per riprovare",labelTapToUndo:"tocca per ripristinare",labelButtonRemoveItem:"Elimina",labelButtonAbortItemLoad:"Cancella",labelButtonRetryItemLoad:"Ritenta",labelButtonAbortItemProcessing:"Camcella",labelButtonUndoItemProcessing:"Indietro",labelButtonRetryItemProcessing:"Ritenta",labelButtonProcessItem:"Carica",labelMaxFileSizeExceeded:"Il peso del file \xE8 eccessivo",labelMaxFileSize:"Il peso massimo del file \xE8 {filesize}",labelMaxTotalFileSizeExceeded:"Dimensione totale massima superata",labelMaxTotalFileSize:"La dimensione massima totale del file \xE8 {filesize}",labelFileTypeNotAllowed:"File non supportato",fileValidateTypeLabelExpectedTypes:"Aspetta {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipo di immagine non compatibile",imageValidateSizeLabelImageSizeTooSmall:"L'immagine \xE8 troppo piccola",imageValidateSizeLabelImageSizeTooBig:"L'immagine \xE8 troppo grande",imageValidateSizeLabelExpectedMinSize:"La dimensione minima \xE8 {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La dimensione massima \xE8 {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La risoluzione \xE8 troppo bassa",imageValidateSizeLabelImageResolutionTooHigh:"La risoluzione \xE8 troppo alta",imageValidateSizeLabelExpectedMinResolution:"La risoluzione minima \xE8 {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La risoluzione massima \xE8 {maxResolution}"};var Lo={labelIdle:'Drag & Drop je bestanden of Bladeren ',labelInvalidField:"Veld bevat ongeldige bestanden",labelFileWaitingForSize:"Wachten op grootte",labelFileSizeNotAvailable:"Grootte niet beschikbaar",labelFileLoading:"Laden",labelFileLoadError:"Fout tijdens laden",labelFileProcessing:"Uploaden",labelFileProcessingComplete:"Upload afgerond",labelFileProcessingAborted:"Upload geannuleerd",labelFileProcessingError:"Fout tijdens upload",labelFileProcessingRevertError:"Fout bij herstellen",labelFileRemoveError:"Fout bij verwijderen",labelTapToCancel:"tik om te annuleren",labelTapToRetry:"tik om opnieuw te proberen",labelTapToUndo:"tik om ongedaan te maken",labelButtonRemoveItem:"Verwijderen",labelButtonAbortItemLoad:"Afbreken",labelButtonRetryItemLoad:"Opnieuw proberen",labelButtonAbortItemProcessing:"Annuleren",labelButtonUndoItemProcessing:"Ongedaan maken",labelButtonRetryItemProcessing:"Opnieuw proberen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Bestand is te groot",labelMaxFileSize:"Maximale bestandsgrootte is {filesize}",labelMaxTotalFileSizeExceeded:"Maximale totale grootte overschreden",labelMaxTotalFileSize:"Maximale totale bestandsgrootte is {filesize}",labelFileTypeNotAllowed:"Ongeldig bestandstype",fileValidateTypeLabelExpectedTypes:"Verwacht {allButLastType} of {lastType}",imageValidateSizeLabelFormatError:"Afbeeldingstype niet ondersteund",imageValidateSizeLabelImageSizeTooSmall:"Afbeelding is te klein",imageValidateSizeLabelImageSizeTooBig:"Afbeelding is te groot",imageValidateSizeLabelExpectedMinSize:"Minimale afmeting is {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximale afmeting is {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolutie is te laag",imageValidateSizeLabelImageResolutionTooHigh:"Resolution is too high",imageValidateSizeLabelExpectedMinResolution:"Minimale resolutie is {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximale resolutie is {maxResolution}"};var Mo={labelIdle:'Dra og slipp filene dine, eller Bla gjennom... ',labelInvalidField:"Feltet inneholder ugyldige filer",labelFileWaitingForSize:"Venter p\xE5 st\xF8rrelse",labelFileSizeNotAvailable:"St\xF8rrelse ikke tilgjengelig",labelFileLoading:"Laster",labelFileLoadError:"Feil under lasting",labelFileProcessing:"Laster opp",labelFileProcessingComplete:"Opplasting ferdig",labelFileProcessingAborted:"Opplasting avbrutt",labelFileProcessingError:"Feil under opplasting",labelFileProcessingRevertError:"Feil under reversering",labelFileRemoveError:"Feil under flytting",labelTapToCancel:"klikk for \xE5 avbryte",labelTapToRetry:"klikk for \xE5 pr\xF8ve p\xE5 nytt",labelTapToUndo:"klikk for \xE5 angre",labelButtonRemoveItem:"Fjern",labelButtonAbortItemLoad:"Avbryt",labelButtonRetryItemLoad:"Pr\xF8v p\xE5 nytt",labelButtonAbortItemProcessing:"Avbryt",labelButtonUndoItemProcessing:"Angre",labelButtonRetryItemProcessing:"Pr\xF8v p\xE5 nytt",labelButtonProcessItem:"Last opp",labelMaxFileSizeExceeded:"Filen er for stor",labelMaxFileSize:"Maksimal filst\xF8rrelse er {filesize}",labelMaxTotalFileSizeExceeded:"Maksimal total st\xF8rrelse oversteget",labelMaxTotalFileSize:"Maksimal total st\xF8rrelse er {filesize}",labelFileTypeNotAllowed:"Ugyldig filtype",fileValidateTypeLabelExpectedTypes:"Forventer {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Bildeformat ikke st\xF8ttet",imageValidateSizeLabelImageSizeTooSmall:"Bildet er for lite",imageValidateSizeLabelImageSizeTooBig:"Bildet er for stort",imageValidateSizeLabelExpectedMinSize:"Minimumsst\xF8rrelse er {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksimumsst\xF8rrelse er {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Oppl\xF8sningen er for lav",imageValidateSizeLabelImageResolutionTooHigh:"Oppl\xF8sningen er for h\xF8y",imageValidateSizeLabelExpectedMinResolution:"Minimum oppl\xF8sning er {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimal oppl\xF8sning er {maxResolution}"};var Oo={labelIdle:'Przeci\u0105gnij i upu\u015B\u0107 lub wybierz pliki',labelInvalidField:"Nieprawid\u0142owe pliki",labelFileWaitingForSize:"Pobieranie rozmiaru",labelFileSizeNotAvailable:"Nieznany rozmiar",labelFileLoading:"Wczytywanie",labelFileLoadError:"B\u0142\u0105d wczytywania",labelFileProcessing:"Przesy\u0142anie",labelFileProcessingComplete:"Przes\u0142ano",labelFileProcessingAborted:"Przerwano",labelFileProcessingError:"Przesy\u0142anie nie powiod\u0142o si\u0119",labelFileProcessingRevertError:"Co\u015B posz\u0142o nie tak",labelFileRemoveError:"Nieudane usuni\u0119cie",labelTapToCancel:"Anuluj",labelTapToRetry:"Pon\xF3w",labelTapToUndo:"Cofnij",labelButtonRemoveItem:"Usu\u0144",labelButtonAbortItemLoad:"Przerwij",labelButtonRetryItemLoad:"Pon\xF3w",labelButtonAbortItemProcessing:"Anuluj",labelButtonUndoItemProcessing:"Cofnij",labelButtonRetryItemProcessing:"Pon\xF3w",labelButtonProcessItem:"Prze\u015Blij",labelMaxFileSizeExceeded:"Plik jest zbyt du\u017Cy",labelMaxFileSize:"Dopuszczalna wielko\u015B\u0107 pliku to {filesize}",labelMaxTotalFileSizeExceeded:"Przekroczono \u0142\u0105czny rozmiar plik\xF3w",labelMaxTotalFileSize:"\u0141\u0105czny rozmiar plik\xF3w nie mo\u017Ce przekroczy\u0107 {filesize}",labelFileTypeNotAllowed:"Niedozwolony rodzaj pliku",fileValidateTypeLabelExpectedTypes:"Oczekiwano {allButLastType} lub {lastType}",imageValidateSizeLabelFormatError:"Nieobs\u0142ugiwany format obrazu",imageValidateSizeLabelImageSizeTooSmall:"Obraz jest zbyt ma\u0142y",imageValidateSizeLabelImageSizeTooBig:"Obraz jest zbyt du\u017Cy",imageValidateSizeLabelExpectedMinSize:"Minimalne wymiary obrazu to {minWidth}\xD7{minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksymalna wymiary obrazu to {maxWidth}\xD7{maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rozdzielczo\u015B\u0107 jest zbyt niska",imageValidateSizeLabelImageResolutionTooHigh:"Rozdzielczo\u015B\u0107 jest zbyt wysoka",imageValidateSizeLabelExpectedMinResolution:"Minimalna rozdzielczo\u015B\u0107 to {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksymalna rozdzielczo\u015B\u0107 to {maxResolution}"};var _i={labelIdle:'Arraste e solte os arquivos ou Clique aqui ',labelInvalidField:"Arquivos inv\xE1lidos",labelFileWaitingForSize:"Calculando o tamanho do arquivo",labelFileSizeNotAvailable:"Tamanho do arquivo indispon\xEDvel",labelFileLoading:"Carregando",labelFileLoadError:"Erro durante o carregamento",labelFileProcessing:"Enviando",labelFileProcessingComplete:"Envio finalizado",labelFileProcessingAborted:"Envio cancelado",labelFileProcessingError:"Erro durante o envio",labelFileProcessingRevertError:"Erro ao reverter o envio",labelFileRemoveError:"Erro ao remover o arquivo",labelTapToCancel:"clique para cancelar",labelTapToRetry:"clique para reenviar",labelTapToUndo:"clique para desfazer",labelButtonRemoveItem:"Remover",labelButtonAbortItemLoad:"Abortar",labelButtonRetryItemLoad:"Reenviar",labelButtonAbortItemProcessing:"Cancelar",labelButtonUndoItemProcessing:"Desfazer",labelButtonRetryItemProcessing:"Reenviar",labelButtonProcessItem:"Enviar",labelMaxFileSizeExceeded:"Arquivo \xE9 muito grande",labelMaxFileSize:"O tamanho m\xE1ximo permitido: {filesize}",labelMaxTotalFileSizeExceeded:"Tamanho total dos arquivos excedido",labelMaxTotalFileSize:"Tamanho total permitido: {filesize}",labelFileTypeNotAllowed:"Tipo de arquivo inv\xE1lido",fileValidateTypeLabelExpectedTypes:"Tipos de arquivo suportados s\xE3o {allButLastType} ou {lastType}",imageValidateSizeLabelFormatError:"Tipo de imagem inv\xE1lida",imageValidateSizeLabelImageSizeTooSmall:"Imagem muito pequena",imageValidateSizeLabelImageSizeTooBig:"Imagem muito grande",imageValidateSizeLabelExpectedMinSize:"Tamanho m\xEDnimo permitida: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Tamanho m\xE1ximo permitido: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolu\xE7\xE3o muito baixa",imageValidateSizeLabelImageResolutionTooHigh:"Resolu\xE7\xE3o muito alta",imageValidateSizeLabelExpectedMinResolution:"Resolu\xE7\xE3o m\xEDnima permitida: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Resolu\xE7\xE3o m\xE1xima permitida: {maxResolution}"};var xo={labelIdle:'Trage \u0219i plaseaz\u0103 fi\u0219iere sau Caut\u0103-le ',labelInvalidField:"C\xE2mpul con\u021Bine fi\u0219iere care nu sunt valide",labelFileWaitingForSize:"\xCEn a\u0219teptarea dimensiunii",labelFileSizeNotAvailable:"Dimensiunea nu este diponibil\u0103",labelFileLoading:"Se \xEEncarc\u0103",labelFileLoadError:"Eroare la \xEEnc\u0103rcare",labelFileProcessing:"Se \xEEncarc\u0103",labelFileProcessingComplete:"\xCEnc\u0103rcare finalizat\u0103",labelFileProcessingAborted:"\xCEnc\u0103rcare anulat\u0103",labelFileProcessingError:"Eroare la \xEEnc\u0103rcare",labelFileProcessingRevertError:"Eroare la anulare",labelFileRemoveError:"Eroare la \u015Ftergere",labelTapToCancel:"apas\u0103 pentru a anula",labelTapToRetry:"apas\u0103 pentru a re\xEEncerca",labelTapToUndo:"apas\u0103 pentru a anula",labelButtonRemoveItem:"\u015Eterge",labelButtonAbortItemLoad:"Anuleaz\u0103",labelButtonRetryItemLoad:"Re\xEEncearc\u0103",labelButtonAbortItemProcessing:"Anuleaz\u0103",labelButtonUndoItemProcessing:"Anuleaz\u0103",labelButtonRetryItemProcessing:"Re\xEEncearc\u0103",labelButtonProcessItem:"\xCEncarc\u0103",labelMaxFileSizeExceeded:"Fi\u0219ierul este prea mare",labelMaxFileSize:"Dimensiunea maxim\u0103 a unui fi\u0219ier este de {filesize}",labelMaxTotalFileSizeExceeded:"Dimensiunea total\u0103 maxim\u0103 a fost dep\u0103\u0219it\u0103",labelMaxTotalFileSize:"Dimensiunea total\u0103 maxim\u0103 a fi\u0219ierelor este de {filesize}",labelFileTypeNotAllowed:"Tipul fi\u0219ierului nu este valid",fileValidateTypeLabelExpectedTypes:"Se a\u0219teapt\u0103 {allButLastType} sau {lastType}",imageValidateSizeLabelFormatError:"Formatul imaginii nu este acceptat",imageValidateSizeLabelImageSizeTooSmall:"Imaginea este prea mic\u0103",imageValidateSizeLabelImageSizeTooBig:"Imaginea este prea mare",imageValidateSizeLabelExpectedMinSize:"M\u0103rimea minim\u0103 este de {maxWidth} x {maxHeight}",imageValidateSizeLabelExpectedMaxSize:"M\u0103rimea maxim\u0103 este de {maxWidth} x {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rezolu\u021Bia este prea mic\u0103",imageValidateSizeLabelImageResolutionTooHigh:"Rezolu\u021Bia este prea mare",imageValidateSizeLabelExpectedMinResolution:"Rezolu\u021Bia minim\u0103 este de {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Rezolu\u021Bia maxim\u0103 este de {maxResolution}"};var Po={labelIdle:'\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0444\u0430\u0439\u043B\u044B \u0438\u043B\u0438 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ',labelInvalidField:"\u041F\u043E\u043B\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0444\u0430\u0439\u043B\u044B",labelFileWaitingForSize:"\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0437\u043C\u0435\u0440",labelFileSizeNotAvailable:"\u0420\u0430\u0437\u043C\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F",labelFileLoading:"\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435",labelFileLoadError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u0438",labelFileProcessing:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",labelFileProcessingComplete:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430",labelFileProcessingAborted:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043E\u0442\u043C\u0435\u043D\u0435\u043D\u0430",labelFileProcessingError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435",labelFileProcessingRevertError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0442\u0435",labelFileRemoveError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0438",labelTapToCancel:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B",labelTapToRetry:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelTapToUndo:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",labelButtonRemoveItem:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",labelButtonAbortItemLoad:"\u041F\u0440\u0435\u043A\u0440\u0430\u0449\u0435\u043D\u043E",labelButtonRetryItemLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelButtonAbortItemProcessing:"\u041E\u0442\u043C\u0435\u043D\u0430",labelButtonUndoItemProcessing:"\u041E\u0442\u043C\u0435\u043D\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",labelButtonRetryItemProcessing:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelButtonProcessItem:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",labelMaxFileSizeExceeded:"\u0424\u0430\u0439\u043B \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0439",labelMaxFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430: {filesize}",labelMaxTotalFileSizeExceeded:"\u041F\u0440\u0435\u0432\u044B\u0448\u0435\u043D \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440",labelMaxTotalFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430: {filesize}",labelFileTypeNotAllowed:"\u0424\u0430\u0439\u043B \u043D\u0435\u0432\u0435\u0440\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430",fileValidateTypeLabelExpectedTypes:"\u041E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F {allButLastType} \u0438\u043B\u0438 {lastType}",imageValidateSizeLabelFormatError:"\u0422\u0438\u043F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F",imageValidateSizeLabelImageSizeTooSmall:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435",imageValidateSizeLabelImageSizeTooBig:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435",imageValidateSizeLabelExpectedMinSize:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043D\u0438\u0437\u043A\u043E\u0435",imageValidateSizeLabelImageResolutionTooHigh:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0432\u044B\u0441\u043E\u043A\u043E\u0435",imageValidateSizeLabelExpectedMinResolution:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435: {maxResolution}"};var Do={labelIdle:'Drag och sl\xE4pp dina filer eller Bl\xE4ddra ',labelInvalidField:"F\xE4ltet inneh\xE5ller felaktiga filer",labelFileWaitingForSize:"V\xE4ntar p\xE5 storlek",labelFileSizeNotAvailable:"Storleken finns inte tillg\xE4nglig",labelFileLoading:"Laddar",labelFileLoadError:"Fel under laddning",labelFileProcessing:"Laddar upp",labelFileProcessingComplete:"Uppladdning klar",labelFileProcessingAborted:"Uppladdning avbruten",labelFileProcessingError:"Fel under uppladdning",labelFileProcessingRevertError:"Fel under \xE5terst\xE4llning",labelFileRemoveError:"Fel under borttagning",labelTapToCancel:"tryck f\xF6r att avbryta",labelTapToRetry:"tryck f\xF6r att f\xF6rs\xF6ka igen",labelTapToUndo:"tryck f\xF6r att \xE5ngra",labelButtonRemoveItem:"Tabort",labelButtonAbortItemLoad:"Avbryt",labelButtonRetryItemLoad:"F\xF6rs\xF6k igen",labelButtonAbortItemProcessing:"Avbryt",labelButtonUndoItemProcessing:"\xC5ngra",labelButtonRetryItemProcessing:"F\xF6rs\xF6k igen",labelButtonProcessItem:"Ladda upp",labelMaxFileSizeExceeded:"Filen \xE4r f\xF6r stor",labelMaxFileSize:"St\xF6rsta till\xE5tna filstorlek \xE4r {filesize}",labelMaxTotalFileSizeExceeded:"Maximal uppladdningsstorlek uppn\xE5d",labelMaxTotalFileSize:"Maximal uppladdningsstorlek \xE4r {filesize}",labelFileTypeNotAllowed:"Felaktig filtyp",fileValidateTypeLabelExpectedTypes:"Godk\xE4nda filtyper {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Bildtypen saknar st\xF6d",imageValidateSizeLabelImageSizeTooSmall:"Bilden \xE4r f\xF6r liten",imageValidateSizeLabelImageSizeTooBig:"Bilden \xE4r f\xF6r stor",imageValidateSizeLabelExpectedMinSize:"Minimal storlek \xE4r {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximal storlek \xE4r {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Uppl\xF6sningen \xE4r f\xF6r l\xE5g",imageValidateSizeLabelImageResolutionTooHigh:"Uppl\xF6sningen \xE4r f\xF6r h\xF6g",imageValidateSizeLabelExpectedMinResolution:"Minsta till\xE5tna uppl\xF6sning \xE4r {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"H\xF6gsta till\xE5tna uppl\xF6sning \xE4r {maxResolution}"};var Fo={labelIdle:'Dosyan\u0131z\u0131 S\xFCr\xFCkleyin & B\u0131rak\u0131n ya da Se\xE7in ',labelInvalidField:"Alan ge\xE7ersiz dosyalar i\xE7eriyor",labelFileWaitingForSize:"Boyut hesaplan\u0131yor",labelFileSizeNotAvailable:"Boyut mevcut de\u011Fil",labelFileLoading:"Y\xFCkleniyor",labelFileLoadError:"Y\xFCkleme s\u0131ras\u0131nda hata olu\u015Ftu",labelFileProcessing:"Y\xFCkleniyor",labelFileProcessingComplete:"Y\xFCkleme tamamland\u0131",labelFileProcessingAborted:"Y\xFCkleme iptal edildi",labelFileProcessingError:"Y\xFCklerken hata olu\u015Ftu",labelFileProcessingRevertError:"Geri \xE7ekerken hata olu\u015Ftu",labelFileRemoveError:"Kald\u0131r\u0131rken hata olu\u015Ftu",labelTapToCancel:"\u0130ptal etmek i\xE7in t\u0131klay\u0131n",labelTapToRetry:"Tekrar denemek i\xE7in t\u0131klay\u0131n",labelTapToUndo:"Geri almak i\xE7in t\u0131klay\u0131n",labelButtonRemoveItem:"Kald\u0131r",labelButtonAbortItemLoad:"\u0130ptal Et",labelButtonRetryItemLoad:"Tekrar dene",labelButtonAbortItemProcessing:"\u0130ptal et",labelButtonUndoItemProcessing:"Geri Al",labelButtonRetryItemProcessing:"Tekrar dene",labelButtonProcessItem:"Y\xFCkle",labelMaxFileSizeExceeded:"Dosya \xE7ok b\xFCy\xFCk",labelMaxFileSize:"En fazla dosya boyutu: {filesize}",labelMaxTotalFileSizeExceeded:"Maximum boyut a\u015F\u0131ld\u0131",labelMaxTotalFileSize:"Maximum dosya boyutu :{filesize}",labelFileTypeNotAllowed:"Ge\xE7ersiz dosya tipi",fileValidateTypeLabelExpectedTypes:"\u015Eu {allButLastType} ya da \u015Fu dosya olmas\u0131 gerekir: {lastType}",imageValidateSizeLabelFormatError:"Resim tipi desteklenmiyor",imageValidateSizeLabelImageSizeTooSmall:"Resim \xE7ok k\xFC\xE7\xFCk",imageValidateSizeLabelImageSizeTooBig:"Resim \xE7ok b\xFCy\xFCk",imageValidateSizeLabelExpectedMinSize:"Minimum boyut {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum boyut {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\xC7\xF6z\xFCn\xFCrl\xFCk \xE7ok d\xFC\u015F\xFCk",imageValidateSizeLabelImageResolutionTooHigh:"\xC7\xF6z\xFCn\xFCrl\xFCk \xE7ok y\xFCksek",imageValidateSizeLabelExpectedMinResolution:"Minimum \xE7\xF6z\xFCn\xFCrl\xFCk {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximum \xE7\xF6z\xFCn\xFCrl\xFCk {maxResolution}"};var Co={labelIdle:'\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0444\u0430\u0439\u043B\u0438 \u0430\u0431\u043E \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044C ',labelInvalidField:"\u041F\u043E\u043B\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u0456 \u0444\u0430\u0439\u043B\u0438",labelFileWaitingForSize:"\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0440\u043E\u0437\u043C\u0456\u0440",labelFileSizeNotAvailable:"\u0420\u043E\u0437\u043C\u0456\u0440 \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0438\u0439",labelFileLoading:"\u041E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u044F",labelFileLoadError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u043E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u0456",labelFileProcessing:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",labelFileProcessingComplete:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",labelFileProcessingAborted:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0441\u043A\u0430\u0441\u043E\u0432\u0430\u043D\u043E",labelFileProcessingError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u0456",labelFileProcessingRevertError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0432\u0456\u0434\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u0456",labelFileRemoveError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043D\u0456",labelTapToCancel:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelTapToRetry:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelTapToUndo:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0432\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0434\u0456\u044E",labelButtonRemoveItem:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438",labelButtonAbortItemLoad:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelButtonRetryItemLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelButtonAbortItemProcessing:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelButtonUndoItemProcessing:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0434\u0456\u044E",labelButtonRetryItemProcessing:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelButtonProcessItem:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",labelMaxFileSizeExceeded:"\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439",labelMaxFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440 \u0444\u0430\u0439\u043B\u0443: {filesize}",labelMaxTotalFileSizeExceeded:"\u041F\u0435\u0440\u0435\u0432\u0438\u0449\u0435\u043D\u043E \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440",labelMaxTotalFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {filesize}",labelFileTypeNotAllowed:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0444\u0430\u0439\u043B\u0443 \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F",fileValidateTypeLabelExpectedTypes:"\u041E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F {allButLastType} \u0430\u0431\u043E {lastType}",imageValidateSizeLabelFormatError:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F",imageValidateSizeLabelImageSizeTooSmall:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0435",imageValidateSizeLabelImageSizeTooBig:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435",imageValidateSizeLabelExpectedMinSize:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0420\u043E\u0437\u043C\u0456\u0440\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0456",imageValidateSizeLabelImageResolutionTooHigh:"\u0420\u043E\u0437\u043C\u0456\u0440\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0456",imageValidateSizeLabelExpectedMinResolution:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0456 \u0440\u043E\u0437\u043C\u0456\u0440\u0438: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0456 \u0440\u043E\u0437\u043C\u0456\u0440\u0438: {maxResolution}"};var zo={labelIdle:'K\xE9o th\u1EA3 t\u1EC7p c\u1EE7a b\u1EA1n ho\u1EB7c T\xECm ki\u1EBFm ',labelInvalidField:"Tr\u01B0\u1EDDng ch\u1EE9a c\xE1c t\u1EC7p kh\xF4ng h\u1EE3p l\u1EC7",labelFileWaitingForSize:"\u0110ang ch\u1EDD k\xEDch th\u01B0\u1EDBc",labelFileSizeNotAvailable:"K\xEDch th\u01B0\u1EDBc kh\xF4ng c\xF3 s\u1EB5n",labelFileLoading:"\u0110ang t\u1EA3i",labelFileLoadError:"L\u1ED7i khi t\u1EA3i",labelFileProcessing:"\u0110ang t\u1EA3i l\xEAn",labelFileProcessingComplete:"T\u1EA3i l\xEAn th\xE0nh c\xF4ng",labelFileProcessingAborted:"\u0110\xE3 hu\u1EF7 t\u1EA3i l\xEAn",labelFileProcessingError:"L\u1ED7i khi t\u1EA3i l\xEAn",labelFileProcessingRevertError:"L\u1ED7i khi ho\xE0n nguy\xEAn",labelFileRemoveError:"L\u1ED7i khi x\xF3a",labelTapToCancel:"nh\u1EA5n \u0111\u1EC3 h\u1EE7y",labelTapToRetry:"nh\u1EA5n \u0111\u1EC3 th\u1EED l\u1EA1i",labelTapToUndo:"nh\u1EA5n \u0111\u1EC3 ho\xE0n t\xE1c",labelButtonRemoveItem:"Xo\xE1",labelButtonAbortItemLoad:"Hu\u1EF7 b\u1ECF",labelButtonRetryItemLoad:"Th\u1EED l\u1EA1i",labelButtonAbortItemProcessing:"H\u1EE7y b\u1ECF",labelButtonUndoItemProcessing:"Ho\xE0n t\xE1c",labelButtonRetryItemProcessing:"Th\u1EED l\u1EA1i",labelButtonProcessItem:"T\u1EA3i l\xEAn",labelMaxFileSizeExceeded:"T\u1EADp tin qu\xE1 l\u1EDBn",labelMaxFileSize:"K\xEDch th\u01B0\u1EDBc t\u1EC7p t\u1ED1i \u0111a l\xE0 {filesize}",labelMaxTotalFileSizeExceeded:"\u0110\xE3 v\u01B0\u1EE3t qu\xE1 t\u1ED5ng k\xEDch th\u01B0\u1EDBc t\u1ED1i \u0111a",labelMaxTotalFileSize:"T\u1ED5ng k\xEDch th\u01B0\u1EDBc t\u1EC7p t\u1ED1i \u0111a l\xE0 {filesize}",labelFileTypeNotAllowed:"T\u1EC7p thu\u1ED9c lo\u1EA1i kh\xF4ng h\u1EE3p l\u1EC7",fileValidateTypeLabelExpectedTypes:"Ki\u1EC3u t\u1EC7p h\u1EE3p l\u1EC7 l\xE0 {allButLastType} ho\u1EB7c {lastType}",imageValidateSizeLabelFormatError:"Lo\u1EA1i h\xECnh \u1EA3nh kh\xF4ng \u0111\u01B0\u1EE3c h\u1ED7 tr\u1EE3",imageValidateSizeLabelImageSizeTooSmall:"H\xECnh \u1EA3nh qu\xE1 nh\u1ECF",imageValidateSizeLabelImageSizeTooBig:"H\xECnh \u1EA3nh qu\xE1 l\u1EDBn",imageValidateSizeLabelExpectedMinSize:"K\xEDch th\u01B0\u1EDBc t\u1ED1i thi\u1EC3u l\xE0 {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"K\xEDch th\u01B0\u1EDBc t\u1ED1i \u0111a l\xE0 {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0110\u1ED9 ph\xE2n gi\u1EA3i qu\xE1 th\u1EA5p",imageValidateSizeLabelImageResolutionTooHigh:"\u0110\u1ED9 ph\xE2n gi\u1EA3i qu\xE1 cao",imageValidateSizeLabelExpectedMinResolution:"\u0110\u1ED9 ph\xE2n gi\u1EA3i t\u1ED1i thi\u1EC3u l\xE0 {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u0110\u1ED9 ph\xE2n gi\u1EA3i t\u1ED1i \u0111a l\xE0 {maxResolution}"};var No={labelIdle:'\u62D6\u653E\u6587\u4EF6\uFF0C\u6216\u8005 \u6D4F\u89C8 ',labelInvalidField:"\u5B57\u6BB5\u5305\u542B\u65E0\u6548\u6587\u4EF6",labelFileWaitingForSize:"\u8BA1\u7B97\u6587\u4EF6\u5927\u5C0F",labelFileSizeNotAvailable:"\u6587\u4EF6\u5927\u5C0F\u4E0D\u53EF\u7528",labelFileLoading:"\u52A0\u8F7D",labelFileLoadError:"\u52A0\u8F7D\u9519\u8BEF",labelFileProcessing:"\u4E0A\u4F20",labelFileProcessingComplete:"\u5DF2\u4E0A\u4F20",labelFileProcessingAborted:"\u4E0A\u4F20\u5DF2\u53D6\u6D88",labelFileProcessingError:"\u4E0A\u4F20\u51FA\u9519",labelFileProcessingRevertError:"\u8FD8\u539F\u51FA\u9519",labelFileRemoveError:"\u5220\u9664\u51FA\u9519",labelTapToCancel:"\u70B9\u51FB\u53D6\u6D88",labelTapToRetry:"\u70B9\u51FB\u91CD\u8BD5",labelTapToUndo:"\u70B9\u51FB\u64A4\u6D88",labelButtonRemoveItem:"\u5220\u9664",labelButtonAbortItemLoad:"\u4E2D\u6B62",labelButtonRetryItemLoad:"\u91CD\u8BD5",labelButtonAbortItemProcessing:"\u53D6\u6D88",labelButtonUndoItemProcessing:"\u64A4\u6D88",labelButtonRetryItemProcessing:"\u91CD\u8BD5",labelButtonProcessItem:"\u4E0A\u4F20",labelMaxFileSizeExceeded:"\u6587\u4EF6\u592A\u5927",labelMaxFileSize:"\u6700\u5927\u503C: {filesize}",labelMaxTotalFileSizeExceeded:"\u8D85\u8FC7\u6700\u5927\u6587\u4EF6\u5927\u5C0F",labelMaxTotalFileSize:"\u6700\u5927\u6587\u4EF6\u5927\u5C0F\uFF1A{filesize}",labelFileTypeNotAllowed:"\u6587\u4EF6\u7C7B\u578B\u65E0\u6548",fileValidateTypeLabelExpectedTypes:"\u5E94\u4E3A {allButLastType} \u6216 {lastType}",imageValidateSizeLabelFormatError:"\u4E0D\u652F\u6301\u56FE\u50CF\u7C7B\u578B",imageValidateSizeLabelImageSizeTooSmall:"\u56FE\u50CF\u592A\u5C0F",imageValidateSizeLabelImageSizeTooBig:"\u56FE\u50CF\u592A\u5927",imageValidateSizeLabelExpectedMinSize:"\u6700\u5C0F\u503C: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u6700\u5927\u503C: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u5206\u8FA8\u7387\u592A\u4F4E",imageValidateSizeLabelImageResolutionTooHigh:"\u5206\u8FA8\u7387\u592A\u9AD8",imageValidateSizeLabelExpectedMinResolution:"\u6700\u5C0F\u5206\u8FA8\u7387\uFF1A{minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u6700\u5927\u5206\u8FA8\u7387\uFF1A{maxResolution}"};var Bo={labelIdle:'\u62D6\u653E\u6A94\u6848\uFF0C\u6216\u8005 \u700F\u89BD ',labelInvalidField:"\u4E0D\u652F\u63F4\u6B64\u6A94\u6848",labelFileWaitingForSize:"\u6B63\u5728\u8A08\u7B97\u6A94\u6848\u5927\u5C0F",labelFileSizeNotAvailable:"\u6A94\u6848\u5927\u5C0F\u4E0D\u7B26",labelFileLoading:"\u8B80\u53D6\u4E2D",labelFileLoadError:"\u8B80\u53D6\u932F\u8AA4",labelFileProcessing:"\u4E0A\u50B3",labelFileProcessingComplete:"\u5DF2\u4E0A\u50B3",labelFileProcessingAborted:"\u4E0A\u50B3\u5DF2\u53D6\u6D88",labelFileProcessingError:"\u4E0A\u50B3\u767C\u751F\u932F\u8AA4",labelFileProcessingRevertError:"\u9084\u539F\u932F\u8AA4",labelFileRemoveError:"\u522A\u9664\u932F\u8AA4",labelTapToCancel:"\u9EDE\u64CA\u53D6\u6D88",labelTapToRetry:"\u9EDE\u64CA\u91CD\u8A66",labelTapToUndo:"\u9EDE\u64CA\u9084\u539F",labelButtonRemoveItem:"\u522A\u9664",labelButtonAbortItemLoad:"\u505C\u6B62",labelButtonRetryItemLoad:"\u91CD\u8A66",labelButtonAbortItemProcessing:"\u53D6\u6D88",labelButtonUndoItemProcessing:"\u53D6\u6D88",labelButtonRetryItemProcessing:"\u91CD\u8A66",labelButtonProcessItem:"\u4E0A\u50B3",labelMaxFileSizeExceeded:"\u6A94\u6848\u904E\u5927",labelMaxFileSize:"\u6700\u5927\u503C\uFF1A{filesize}",labelMaxTotalFileSizeExceeded:"\u8D85\u904E\u6700\u5927\u53EF\u4E0A\u50B3\u5927\u5C0F",labelMaxTotalFileSize:"\u6700\u5927\u53EF\u4E0A\u50B3\u5927\u5C0F\uFF1A{filesize}",labelFileTypeNotAllowed:"\u4E0D\u652F\u63F4\u6B64\u985E\u578B\u6A94\u6848",fileValidateTypeLabelExpectedTypes:"\u61C9\u70BA {allButLastType} \u6216 {lastType}",imageValidateSizeLabelFormatError:"\u4E0D\u652F\u6301\u6B64\u985E\u5716\u7247\u985E\u578B",imageValidateSizeLabelImageSizeTooSmall:"\u5716\u7247\u904E\u5C0F",imageValidateSizeLabelImageSizeTooBig:"\u5716\u7247\u904E\u5927",imageValidateSizeLabelExpectedMinSize:"\u6700\u5C0F\u5C3A\u5BF8\uFF1A{minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u6700\u5927\u5C3A\u5BF8\uFF1A{maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u89E3\u6790\u5EA6\u904E\u4F4E",imageValidateSizeLabelImageResolutionTooHigh:"\u89E3\u6790\u5EA6\u904E\u9AD8",imageValidateSizeLabelExpectedMinResolution:"\u6700\u4F4E\u89E3\u6790\u5EA6\uFF1A{minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u6700\u9AD8\u89E3\u6790\u5EA6\uFF1A{maxResolution}"};_e(xr);_e(Dr);_e(zr);_e(Br);_e(kr);_e(Jr);_e(to);_e(po);_e(Sa);window.FilePond=ea;function Jm({acceptedFileTypes:e,imageEditorEmptyFillColor:t,imageEditorMode:i,imageEditorViewportHeight:a,imageEditorViewportWidth:n,deleteUploadedFileUsing:r,isDeletable:o,isDisabled:l,getUploadedFilesUsing:s,imageCropAspectRatio:u,imagePreviewHeight:c,imageResizeMode:d,imageResizeTargetHeight:h,imageResizeTargetWidth:m,imageResizeUpscale:p,isAvatar:f,hasImageEditor:g,hasCircleCropper:b,canEditSvgs:E,isSvgEditingConfirmed:I,confirmSvgEditingMessage:_,disabledSvgEditingMessage:y,isDownloadable:T,isMultiple:v,isOpenable:R,isPreviewable:S,isReorderable:P,itemPanelAspectRatio:x,loadingIndicatorPosition:O,locale:z,maxFiles:A,maxSize:F,minSize:w,panelAspectRatio:L,panelLayout:C,placeholder:D,removeUploadedFileButtonPosition:V,removeUploadedFileUsing:B,reorderUploadedFilesUsing:j,shouldAppendFiles:q,shouldOrientImageFromExif:X,shouldTransformImage:ue,state:U,uploadButtonPosition:W,uploadingMessage:$,uploadProgressIndicatorPosition:le,uploadUsing:J}){return{fileKeyIndex:{},pond:null,shouldUpdateState:!0,state:U,lastState:null,uploadedFileIndex:{},isEditorOpen:!1,editingFile:{},currentRatio:"",editor:{},init:async function(){Ot(Vo[z]??Vo.en),this.pond=dt(this.$refs.input,{acceptedFileTypes:e,allowImageExifOrientation:X,allowPaste:!1,allowRemove:o,allowReorder:P,allowImagePreview:S,allowVideoPreview:S,allowAudioPreview:S,allowImageTransform:ue,credits:!1,files:await this.getFiles(),imageCropAspectRatio:u,imagePreviewHeight:c,imageResizeTargetHeight:h,imageResizeTargetWidth:m,imageResizeMode:d,imageResizeUpscale:p,itemInsertLocation:q?"after":"before",...D&&{labelIdle:D},maxFiles:A,maxFileSize:F,minFileSize:w,styleButtonProcessItemPosition:W,styleButtonRemoveItemPosition:V,styleItemPanelAspectRatio:x,styleLoadIndicatorPosition:O,stylePanelAspectRatio:L,stylePanelLayout:C,styleProgressIndicatorPosition:le,server:{load:async(N,H)=>{let ee=await(await fetch(N,{cache:"no-store"})).blob();H(ee)},process:(N,H,Q,ee,wt,Ve)=>{this.shouldUpdateState=!1;let Yt=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,$t=>($t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>$t/4).toString(16));J(Yt,H,$t=>{this.shouldUpdateState=!0,ee($t)},wt,Ve)},remove:async(N,H)=>{let Q=this.uploadedFileIndex[N]??null;Q&&(await r(Q),H())},revert:async(N,H)=>{await B(N),H()}},allowImageEdit:g,imageEditEditor:{open:N=>this.loadEditor(N),onconfirm:()=>{},oncancel:()=>this.closeEditor(),onclose:()=>this.closeEditor()}}),this.$watch("state",async()=>{if(this.pond&&this.shouldUpdateState&&this.state!==void 0){if(this.state!==null&&Object.values(this.state).filter(N=>N.startsWith("livewire-file:")).length){this.lastState=null;return}JSON.stringify(this.state)!==this.lastState&&(this.lastState=JSON.stringify(this.state),this.pond.files=await this.getFiles())}}),this.pond.on("reorderfiles",async N=>{let H=N.map(Q=>Q.source instanceof File?Q.serverId:this.uploadedFileIndex[Q.source]??null).filter(Q=>Q);await j(q?H:H.reverse())}),this.pond.on("initfile",async N=>{T&&(f||this.insertDownloadLink(N))}),this.pond.on("initfile",async N=>{R&&(f||this.insertOpenLink(N))}),this.pond.on("addfilestart",async N=>{N.status===pt.PROCESSING_QUEUED&&this.dispatchFormEvent("form-processing-started",{message:$})});let G=async()=>{this.pond.getFiles().filter(N=>N.status===pt.PROCESSING||N.status===pt.PROCESSING_QUEUED).length||this.dispatchFormEvent("form-processing-finished")};this.pond.on("processfile",G),this.pond.on("processfileabort",G),this.pond.on("processfilerevert",G)},destroy:function(){this.destroyEditor(),ut(this.$refs.input),this.pond=null},dispatchFormEvent:function(G,N={}){this.$el.closest("form")?.dispatchEvent(new CustomEvent(G,{composed:!0,cancelable:!0,detail:N}))},getUploadedFiles:async function(){let G=await s();this.fileKeyIndex=G??{},this.uploadedFileIndex=Object.entries(this.fileKeyIndex).filter(([N,H])=>H?.url).reduce((N,[H,Q])=>(N[Q.url]=H,N),{})},getFiles:async function(){await this.getUploadedFiles();let G=[];for(let N of Object.values(this.fileKeyIndex))N&&G.push({source:N.url,options:{type:"local",...!N.type||S&&(/^audio/.test(N.type)||/^image/.test(N.type)||/^video/.test(N.type))?{}:{file:{name:N.name,size:N.size,type:N.type}}}});return q?G:G.reverse()},insertDownloadLink:function(G){if(G.origin!==Pt.LOCAL)return;let N=this.getDownloadLink(G);N&&document.getElementById(`filepond--item-${G.id}`).querySelector(".filepond--file-info-main").prepend(N)},insertOpenLink:function(G){if(G.origin!==Pt.LOCAL)return;let N=this.getOpenLink(G);N&&document.getElementById(`filepond--item-${G.id}`).querySelector(".filepond--file-info-main").prepend(N)},getDownloadLink:function(G){let N=G.source;if(!N)return;let H=document.createElement("a");return H.className="filepond--download-icon",H.href=N,H.download=G.file.name,H},getOpenLink:function(G){let N=G.source;if(!N)return;let H=document.createElement("a");return H.className="filepond--open-icon",H.href=N,H.target="_blank",H},initEditor:function(){l||g&&(this.editor=new Ta(this.$refs.editor,{aspectRatio:n/a,autoCropArea:1,center:!0,crop:G=>{this.$refs.xPositionInput.value=Math.round(G.detail.x),this.$refs.yPositionInput.value=Math.round(G.detail.y),this.$refs.heightInput.value=Math.round(G.detail.height),this.$refs.widthInput.value=Math.round(G.detail.width),this.$refs.rotationInput.value=G.detail.rotate},cropBoxResizable:!0,guides:!0,highlight:!0,responsive:!0,toggleDragModeOnDblclick:!0,viewMode:i,wheelZoomRatio:.02}))},closeEditor:function(){this.editingFile={},this.isEditorOpen=!1,this.destroyEditor()},fixImageDimensions:function(G,N){if(G.type!=="image/svg+xml")return N(G);let H=new FileReader;H.onload=Q=>{let ee=new DOMParser().parseFromString(Q.target.result,"image/svg+xml")?.querySelector("svg");if(!ee)return N(G);let wt=["viewBox","ViewBox","viewbox"].find(Yt=>ee.hasAttribute(Yt));if(!wt)return N(G);let Ve=ee.getAttribute(wt).split(" ");return!Ve||Ve.length!==4?N(G):(ee.setAttribute("width",parseFloat(Ve[2])+"pt"),ee.setAttribute("height",parseFloat(Ve[3])+"pt"),N(new File([new Blob([new XMLSerializer().serializeToString(ee)],{type:"image/svg+xml"})],G.name,{type:"image/svg+xml",_relativePath:""})))},H.readAsText(G)},loadEditor:function(G){if(l||!g||!G)return;let N=G.type==="image/svg+xml";if(!E&&N){alert(y);return}I&&N&&!confirm(_)||this.fixImageDimensions(G,H=>{this.editingFile=H,this.initEditor();let Q=new FileReader;Q.onload=ee=>{this.isEditorOpen=!0,setTimeout(()=>this.editor.replace(ee.target.result),200)},Q.readAsDataURL(G)})},getRoundedCanvas:function(G){let N=G.width,H=G.height,Q=document.createElement("canvas");Q.width=N,Q.height=H;let ee=Q.getContext("2d");return ee.imageSmoothingEnabled=!0,ee.drawImage(G,0,0,N,H),ee.globalCompositeOperation="destination-in",ee.beginPath(),ee.ellipse(N/2,H/2,N/2,H/2,0,0,2*Math.PI),ee.fill(),Q},saveEditor:function(){if(l||!g)return;let G=this.editor.getCroppedCanvas({fillColor:t??"transparent",height:h,imageSmoothingEnabled:!0,imageSmoothingQuality:"high",width:m});b&&(G=this.getRoundedCanvas(G)),G.toBlob(N=>{v&&this.pond.removeFile(this.pond.getFiles().find(H=>H.filename===this.editingFile.name)?.id,{revert:!0}),this.$nextTick(()=>{this.shouldUpdateState=!1;let H=this.editingFile.name.slice(0,this.editingFile.name.lastIndexOf(".")),Q=this.editingFile.name.split(".").pop();Q==="svg"&&(Q="png");let ee=/-v(\d+)/;ee.test(H)?H=H.replace(ee,(wt,Ve)=>`-v${Number(Ve)+1}`):H+="-v1",this.pond.addFile(new File([N],`${H}.${Q}`,{type:this.editingFile.type==="image/svg+xml"||b?"image/png":this.editingFile.type,lastModified:new Date().getTime()})).then(()=>{this.closeEditor()}).catch(()=>{this.closeEditor()})})},b?"image/png":this.editingFile.type)},destroyEditor:function(){this.editor&&typeof this.editor.destroy=="function"&&this.editor.destroy(),this.editor=null}}}var Vo={ar:fo,ca:go,cs:Eo,da:To,de:Io,en:bo,es:_o,fa:Ro,fi:yo,fr:So,hu:wo,id:vo,it:Ao,nl:Lo,no:Mo,pl:Oo,pt_BR:_i,pt_PT:_i,ro:xo,ru:Po,sv:Do,tr:Fo,uk:Co,vi:zo,zh_CN:No,zh_TW:Bo};export{Jm as default}; /*! Bundled license information: filepond/dist/filepond.esm.js: (*! - * FilePond 4.30.6 + * FilePond 4.31.1 * Licensed under MIT, https://opensource.org/licenses/MIT/ * Please visit https://pqina.nl/filepond/ for details. *) diff --git a/public/js/filament/notifications/notifications.js b/public/js/filament/notifications/notifications.js index 5effd39fa..c41b9136f 100644 --- a/public/js/filament/notifications/notifications.js +++ b/public/js/filament/notifications/notifications.js @@ -1 +1 @@ -(()=>{var O=Object.create;var $=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty;var d=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports);var j=(i,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Y(t))!W.call(i,n)&&n!==e&&$(i,n,{get:()=>t[n],enumerable:!(s=V(t,n))||s.enumerable});return i};var J=(i,t,e)=>(e=i!=null?O(H(i)):{},j(t||!i||!i.__esModule?$(e,"default",{value:i,enumerable:!0}):e,i));var S=d((ut,_)=>{var v,g=typeof global<"u"&&(global.crypto||global.msCrypto);g&&g.getRandomValues&&(y=new Uint8Array(16),v=function(){return g.getRandomValues(y),y});var y;v||(T=new Array(16),v=function(){for(var i=0,t;i<16;i++)i&3||(t=Math.random()*4294967296),T[i]=t>>>((i&3)<<3)&255;return T});var T;_.exports=v});var C=d((ct,U)=>{var P=[];for(f=0;f<256;++f)P[f]=(f+256).toString(16).substr(1);var f;function K(i,t){var e=t||0,s=P;return s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]}U.exports=K});var R=d((lt,F)=>{var Q=S(),X=C(),a=Q(),Z=[a[0]|1,a[1],a[2],a[3],a[4],a[5]],b=(a[6]<<8|a[7])&16383,D=0,A=0;function tt(i,t,e){var s=t&&e||0,n=t||[];i=i||{};var r=i.clockseq!==void 0?i.clockseq:b,o=i.msecs!==void 0?i.msecs:new Date().getTime(),h=i.nsecs!==void 0?i.nsecs:A+1,l=o-D+(h-A)/1e4;if(l<0&&i.clockseq===void 0&&(r=r+1&16383),(l<0||o>D)&&i.nsecs===void 0&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");D=o,A=h,b=r,o+=122192928e5;var c=((o&268435455)*1e4+h)%4294967296;n[s++]=c>>>24&255,n[s++]=c>>>16&255,n[s++]=c>>>8&255,n[s++]=c&255;var u=o/4294967296*1e4&268435455;n[s++]=u>>>8&255,n[s++]=u&255,n[s++]=u>>>24&15|16,n[s++]=u>>>16&255,n[s++]=r>>>8|128,n[s++]=r&255;for(var N=i.node||Z,m=0;m<6;++m)n[s+m]=N[m];return t||X(n)}F.exports=tt});var I=d((dt,G)=>{var it=S(),et=C();function st(i,t,e){var s=t&&e||0;typeof i=="string"&&(t=i=="binary"?new Array(16):null,i=null),i=i||{};var n=i.random||(i.rng||it)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t)for(var r=0;r<16;++r)t[s+r]=n[r];return t||et(n)}G.exports=st});var B=d((ft,z)=>{var nt=R(),M=I(),E=M;E.v1=nt;E.v4=M;z.exports=E});function k(i,t=()=>{}){let e=!1;return function(){e?t.apply(this,arguments):(e=!0,i.apply(this,arguments))}}var q=i=>{i.data("notificationComponent",({notification:t})=>({isShown:!1,computedStyle:null,transitionDuration:null,transitionEasing:null,init:function(){this.computedStyle=window.getComputedStyle(this.$el),this.transitionDuration=parseFloat(this.computedStyle.transitionDuration)*1e3,this.transitionEasing=this.computedStyle.transitionTimingFunction,this.configureTransitions(),this.configureAnimations(),t.duration&&t.duration!=="persistent"&&setTimeout(()=>this.close(),t.duration),this.isShown=!0},configureTransitions:function(){let e=this.computedStyle.display,s=()=>{i.mutateDom(()=>{this.$el.style.setProperty("display",e),this.$el.style.setProperty("visibility","visible")}),this.$el._x_isShown=!0},n=()=>{i.mutateDom(()=>{this.$el._x_isShown?this.$el.style.setProperty("visibility","hidden"):this.$el.style.setProperty("display","none")})},r=k(o=>o?s():n(),o=>{this.$el._x_toggleAndCascadeWithTransitions(this.$el,o,s,n)});i.effect(()=>r(this.isShown))},configureAnimations:function(){let e;Livewire.hook("commit",({component:s,commit:n,succeed:r,fail:o,respond:h})=>{if(!s.snapshot.data.isFilamentNotificationsComponent)return;let l=()=>this.$el.getBoundingClientRect().top,c=l();h(()=>{e=()=>{this.isShown&&this.$el.animate([{transform:`translateY(${c-l()}px)`},{transform:"translateY(0px)"}],{duration:this.transitionDuration,easing:this.transitionEasing})},this.$el.getAnimations().forEach(u=>u.finish())}),r(({snapshot:u,effect:N})=>{e()})})},close:function(){this.isShown=!1,setTimeout(()=>window.dispatchEvent(new CustomEvent("notificationClosed",{detail:{id:t.id}})),this.transitionDuration)},markAsRead:function(){window.dispatchEvent(new CustomEvent("markedNotificationAsRead",{detail:{id:t.id}}))},markAsUnread:function(){window.dispatchEvent(new CustomEvent("markedNotificationAsUnread",{detail:{id:t.id}}))}}))};var L=J(B(),1),p=class{constructor(){return this.id((0,L.v4)()),this}id(t){return this.id=t,this}title(t){return this.title=t,this}body(t){return this.body=t,this}actions(t){return this.actions=t,this}status(t){return this.status=t,this}color(t){return this.color=t,this}icon(t){return this.icon=t,this}iconColor(t){return this.iconColor=t,this}duration(t){return this.duration=t,this}seconds(t){return this.duration(t*1e3),this}persistent(){return this.duration("persistent"),this}danger(){return this.status("danger"),this}info(){return this.status("info"),this}success(){return this.status("success"),this}warning(){return this.status("warning"),this}view(t){return this.view=t,this}viewData(t){return this.viewData=t,this}send(){return window.dispatchEvent(new CustomEvent("notificationSent",{detail:{notification:this}})),this}},w=class{constructor(t){return this.name(t),this}name(t){return this.name=t,this}color(t){return this.color=t,this}dispatch(t,e){return this.event(t),this.eventData(e),this}dispatchSelf(t,e){return this.dispatch(t,e),this.dispatchDirection="self",this}dispatchTo(t,e,s){return this.dispatch(e,s),this.dispatchDirection="to",this.dispatchToComponent=t,this}emit(t,e){return this.dispatch(t,e),this}emitSelf(t,e){return this.dispatchSelf(t,e),this}emitTo(t,e,s){return this.dispatchTo(t,e,s),this}dispatchDirection(t){return this.dispatchDirection=t,this}dispatchToComponent(t){return this.dispatchToComponent=t,this}event(t){return this.event=t,this}eventData(t){return this.eventData=t,this}extraAttributes(t){return this.extraAttributes=t,this}icon(t){return this.icon=t,this}iconPosition(t){return this.iconPosition=t,this}outlined(t=!0){return this.isOutlined=t,this}disabled(t=!0){return this.isDisabled=t,this}label(t){return this.label=t,this}close(t=!0){return this.shouldClose=t,this}openUrlInNewTab(t=!0){return this.shouldOpenUrlInNewTab=t,this}size(t){return this.size=t,this}url(t){return this.url=t,this}view(t){return this.view=t,this}button(){return this.view("filament-notifications::actions.button-action"),this}grouped(){return this.view("filament-notifications::actions.grouped-action"),this}link(){return this.view("filament-notifications::actions.link-action"),this}},x=class{constructor(t){return this.actions(t),this}actions(t){return this.actions=t.map(e=>e.grouped()),this}color(t){return this.color=t,this}icon(t){return this.icon=t,this}iconPosition(t){return this.iconPosition=t,this}label(t){return this.label=t,this}tooltip(t){return this.tooltip=t,this}};window.FilamentNotificationAction=w;window.FilamentNotificationActionGroup=x;window.FilamentNotification=p;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(q)});})(); +(()=>{var O=Object.create;var $=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty;var d=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports);var j=(i,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Y(t))!W.call(i,n)&&n!==e&&$(i,n,{get:()=>t[n],enumerable:!(s=V(t,n))||s.enumerable});return i};var J=(i,t,e)=>(e=i!=null?O(H(i)):{},j(t||!i||!i.__esModule?$(e,"default",{value:i,enumerable:!0}):e,i));var S=d((ut,_)=>{var v,g=typeof global<"u"&&(global.crypto||global.msCrypto);g&&g.getRandomValues&&(y=new Uint8Array(16),v=function(){return g.getRandomValues(y),y});var y;v||(T=new Array(16),v=function(){for(var i=0,t;i<16;i++)i&3||(t=Math.random()*4294967296),T[i]=t>>>((i&3)<<3)&255;return T});var T;_.exports=v});var C=d((ct,U)=>{var P=[];for(f=0;f<256;++f)P[f]=(f+256).toString(16).substr(1);var f;function K(i,t){var e=t||0,s=P;return s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]}U.exports=K});var R=d((lt,F)=>{var Q=S(),X=C(),a=Q(),Z=[a[0]|1,a[1],a[2],a[3],a[4],a[5]],b=(a[6]<<8|a[7])&16383,D=0,A=0;function tt(i,t,e){var s=t&&e||0,n=t||[];i=i||{};var r=i.clockseq!==void 0?i.clockseq:b,o=i.msecs!==void 0?i.msecs:new Date().getTime(),h=i.nsecs!==void 0?i.nsecs:A+1,l=o-D+(h-A)/1e4;if(l<0&&i.clockseq===void 0&&(r=r+1&16383),(l<0||o>D)&&i.nsecs===void 0&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");D=o,A=h,b=r,o+=122192928e5;var c=((o&268435455)*1e4+h)%4294967296;n[s++]=c>>>24&255,n[s++]=c>>>16&255,n[s++]=c>>>8&255,n[s++]=c&255;var u=o/4294967296*1e4&268435455;n[s++]=u>>>8&255,n[s++]=u&255,n[s++]=u>>>24&15|16,n[s++]=u>>>16&255,n[s++]=r>>>8|128,n[s++]=r&255;for(var N=i.node||Z,m=0;m<6;++m)n[s+m]=N[m];return t||X(n)}F.exports=tt});var I=d((dt,G)=>{var it=S(),et=C();function st(i,t,e){var s=t&&e||0;typeof i=="string"&&(t=i=="binary"?new Array(16):null,i=null),i=i||{};var n=i.random||(i.rng||it)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t)for(var r=0;r<16;++r)t[s+r]=n[r];return t||et(n)}G.exports=st});var B=d((ft,z)=>{var nt=R(),M=I(),E=M;E.v1=nt;E.v4=M;z.exports=E});function k(i,t=()=>{}){let e=!1;return function(){e?t.apply(this,arguments):(e=!0,i.apply(this,arguments))}}var q=i=>{i.data("notificationComponent",({notification:t})=>({isShown:!1,computedStyle:null,transitionDuration:null,transitionEasing:null,init:function(){this.computedStyle=window.getComputedStyle(this.$el),this.transitionDuration=parseFloat(this.computedStyle.transitionDuration)*1e3,this.transitionEasing=this.computedStyle.transitionTimingFunction,this.configureTransitions(),this.configureAnimations(),t.duration&&t.duration!=="persistent"&&setTimeout(()=>this.close(),t.duration),this.isShown=!0},configureTransitions:function(){let e=this.computedStyle.display,s=()=>{i.mutateDom(()=>{this.$el.style.setProperty("display",e),this.$el.style.setProperty("visibility","visible")}),this.$el._x_isShown=!0},n=()=>{i.mutateDom(()=>{this.$el._x_isShown?this.$el.style.setProperty("visibility","hidden"):this.$el.style.setProperty("display","none")})},r=k(o=>o?s():n(),o=>{this.$el._x_toggleAndCascadeWithTransitions(this.$el,o,s,n)});i.effect(()=>r(this.isShown))},configureAnimations:function(){let e;Livewire.hook("commit",({component:s,commit:n,succeed:r,fail:o,respond:h})=>{if(!s.snapshot.data.isFilamentNotificationsComponent)return;let l=()=>this.$el.getBoundingClientRect().top,c=l();h(()=>{e=()=>{this.isShown&&this.$el.animate([{transform:`translateY(${c-l()}px)`},{transform:"translateY(0px)"}],{duration:this.transitionDuration,easing:this.transitionEasing})},this.$el.getAnimations().forEach(u=>u.finish())}),r(({snapshot:u,effect:N})=>{e()})})},close:function(){this.isShown=!1,setTimeout(()=>window.dispatchEvent(new CustomEvent("notificationClosed",{detail:{id:t.id}})),this.transitionDuration)},markAsRead:function(){window.dispatchEvent(new CustomEvent("markedNotificationAsRead",{detail:{id:t.id}}))},markAsUnread:function(){window.dispatchEvent(new CustomEvent("markedNotificationAsUnread",{detail:{id:t.id}}))}}))};var L=J(B(),1),p=class{constructor(){return this.id((0,L.v4)()),this}id(t){return this.id=t,this}title(t){return this.title=t,this}body(t){return this.body=t,this}actions(t){return this.actions=t,this}status(t){return this.status=t,this}color(t){return this.color=t,this}icon(t){return this.icon=t,this}iconColor(t){return this.iconColor=t,this}duration(t){return this.duration=t,this}seconds(t){return this.duration(t*1e3),this}persistent(){return this.duration("persistent"),this}danger(){return this.status("danger"),this}info(){return this.status("info"),this}success(){return this.status("success"),this}warning(){return this.status("warning"),this}view(t){return this.view=t,this}viewData(t){return this.viewData=t,this}send(){return window.dispatchEvent(new CustomEvent("notificationSent",{detail:{notification:this}})),this}},w=class{constructor(t){return this.name(t),this}name(t){return this.name=t,this}color(t){return this.color=t,this}dispatch(t,e){return this.event(t),this.eventData(e),this}dispatchSelf(t,e){return this.dispatch(t,e),this.dispatchDirection="self",this}dispatchTo(t,e,s){return this.dispatch(e,s),this.dispatchDirection="to",this.dispatchToComponent=t,this}emit(t,e){return this.dispatch(t,e),this}emitSelf(t,e){return this.dispatchSelf(t,e),this}emitTo(t,e,s){return this.dispatchTo(t,e,s),this}dispatchDirection(t){return this.dispatchDirection=t,this}dispatchToComponent(t){return this.dispatchToComponent=t,this}event(t){return this.event=t,this}eventData(t){return this.eventData=t,this}extraAttributes(t){return this.extraAttributes=t,this}icon(t){return this.icon=t,this}iconPosition(t){return this.iconPosition=t,this}outlined(t=!0){return this.isOutlined=t,this}disabled(t=!0){return this.isDisabled=t,this}label(t){return this.label=t,this}close(t=!0){return this.shouldClose=t,this}openUrlInNewTab(t=!0){return this.shouldOpenUrlInNewTab=t,this}size(t){return this.size=t,this}url(t){return this.url=t,this}view(t){return this.view=t,this}button(){return this.view("filament-actions::button-action"),this}grouped(){return this.view("filament-actions::grouped-action"),this}link(){return this.view("filament-actions::link-action"),this}},x=class{constructor(t){return this.actions(t),this}actions(t){return this.actions=t.map(e=>e.grouped()),this}color(t){return this.color=t,this}icon(t){return this.icon=t,this}iconPosition(t){return this.iconPosition=t,this}label(t){return this.label=t,this}tooltip(t){return this.tooltip=t,this}};window.FilamentNotificationAction=w;window.FilamentNotificationActionGroup=x;window.FilamentNotification=p;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(q)});})(); diff --git a/readme.md b/readme.md index fc00c7e81..a8fb57a14 100644 --- a/readme.md +++ b/readme.md @@ -8,40 +8,58 @@ Ideal for both individual gamers and hosting companies, it simplifies server adm Fly High, Game On: Pelican's pledge for unrivaled game servers. -## Documentation +## Links -* [Panel Documentation](https://pelican.dev/panel/1.0/getting_started.html) -* [Wings Documentation](https://pelican.dev/wings/1.0/installing.html) -* [Community Guides](https://pelican.dev/community/about.html) -* [Official Discord](https://pelican.dev/discord) +* [Official Discord](https://discord.gg/pelican-panel) +* [Wings](https://github.com/pelican-dev/wings) -### Supported Games +### Supported Games and Servers -Pelican supports a wide variety of games by utilizing Docker containers to isolate each instance. This gives -you the power to run game servers without bloating machines with a host of additional dependencies. +Pelican supports a wide variety of games by utilizing Docker containers to isolate each instance. +This gives you the power to run game servers without bloating machines with a host of additional dependencies. -Some of our core supported games include: +Some of our popular eggs include but are not limited to: -* Minecraft — including Paper, Sponge, Bungeecord, Waterfall, and more -* Rust -* Terraria -* Teamspeak -* Mumble -* Team Fortress 2 -* Counter Strike: Global Offensive -* Garry's Mod -* ARK: Survival Evolved - -In addition to our standard nest of supported games, our community is constantly pushing the limits of this software -and there are plenty more games available provided by the community. Some of these games include: - -* Factorio -* San Andreas: MP -* Pocketmine MP -* Squad -* Xonotic -* Starmade -* Discord ATLBot, and most other Node.js/Python discord bots -* [and many more...](https://github.com/parkervcp/eggs) +* [Minecraft](https://github.com/pelican-eggs/minecraft) + * Paper + * Sponge + * Bungeecord + * Waterfall +* [SteamCMD](https://github.com/pelican-eggs/steamcmd) + * 7 Days to Die + * ARK: Survival + * ARMA + * Counter Strike + * DayZ + * Enshrouded + * Left 4 Dead + * Palworld + * Project Zomboid + * Sons of the Forest +* [Other Games](https://github.com/pelican-eggs/games) + * Among Us + * Factorio + * GTA + * Rimworld + * Terraria +* [Discord Bots](https://github.com/pelican-eggs/chatbots) + * Redbot + * JMusicBot + * SinusBot + * Dynamica +* [Software](https://github.com/pelican-eggs/software) +* [Programming Languages](https://github.com/pelican-eggs/generic) + * C# + * Java + * Lua + * Node.js + * Python +* [Database](https://github.com/pelican-eggs/database) + * Redis + * MariaDB + * PostgreSQL +* [Voice Servers](https://github.com/pelican-eggs/voice) +* [Storage](https://github.com/pelican-eggs/storage) +* [Monitoring](https://github.com/pelican-eggs/monitoring) Copyright Pelican® 2024 diff --git a/resources/scripts/components/elements/PageContentBlock.tsx b/resources/scripts/components/elements/PageContentBlock.tsx index ffea8819c..1f62eedb5 100644 --- a/resources/scripts/components/elements/PageContentBlock.tsx +++ b/resources/scripts/components/elements/PageContentBlock.tsx @@ -28,7 +28,7 @@ const PageContentBlock: React.FC = ({ title, showFlashKey

diff --git a/resources/views/admin/index.blade.php b/resources/views/admin/index.blade.php index 91ede7fce..052373b8c 100644 --- a/resources/views/admin/index.blade.php +++ b/resources/views/admin/index.blade.php @@ -44,7 +44,7 @@

 
diff --git a/resources/views/filament/pages/dashboard.blade.php b/resources/views/filament/pages/dashboard.blade.php index b6d8586fd..46d601dad 100644 --- a/resources/views/filament/pages/dashboard.blade.php +++ b/resources/views/filament/pages/dashboard.blade.php @@ -1,12 +1,10 @@ - - Panel's Resources: + + Overview: Nodes {{ $nodesCount }} @@ -14,8 +12,6 @@ Servers {{ $serversCount }} @@ -23,8 +19,6 @@ Eggs {{ $eggsCount }} @@ -32,8 +26,6 @@ Users {{ $usersCount }} @@ -50,58 +42,39 @@

You can expand the following sections:

@if ($inDevelopment) - + Information for Developers

Thank you for trying out the development version!

-

-
- If you run into any issues, please report them on GitHub. -
-
-

+


-

- - Report Issue on GitHub - -

+

If you run into any issues, please report them on GitHub.

@endif {{-- No Nodes Created --}} @if ($nodesCount <= 0) - - Create First New Node + + No Nodes Detected -

It looks like you don't have any Nodes set up yet, but don't worry because you can follow along below:

- -

-
- If you run into any issues, please report them on GitHub. -
-
-

- -

- - Create Node in Pelican - -

+

It looks like you don't have any Nodes set up yet, but don't worry because you click the action button to create your first one!

@endif @@ -109,7 +82,14 @@ {{-- No Nodes Active --}} - + Support Pelican

Thank you for using Pelican, this could only be achieved through the support of you, our contributors, and the rest of our supporters!

@@ -118,47 +98,22 @@

We appreciate any and all support from anybody.

-


- - - Donate Directly - -
- + Need Help?

Check out the documentation first! If you still need assistance then, fly onto our Discord server!

-


- - - Read Documentation - - - - Get Help in Discord - -
diff --git a/tests/Integration/Api/Client/Server/SettingsControllerTest.php b/tests/Integration/Api/Client/Server/SettingsControllerTest.php index b40a484c4..dab6264fa 100644 --- a/tests/Integration/Api/Client/Server/SettingsControllerTest.php +++ b/tests/Integration/Api/Client/Server/SettingsControllerTest.php @@ -2,6 +2,7 @@ namespace App\Tests\Integration\Api\Client\Server; +use App\Enums\ServerState; use Illuminate\Http\Response; use App\Models\Server; use App\Models\Permission; @@ -93,7 +94,7 @@ class SettingsControllerTest extends ClientApiIntegrationTestCase ->assertStatus(Response::HTTP_ACCEPTED); $server = $server->refresh(); - $this->assertSame(Server::STATUS_INSTALLING, $server->status); + $this->assertSame(ServerState::Installing, $server->status); } /** diff --git a/tests/Integration/Api/Remote/SftpAuthenticationControllerTest.php b/tests/Integration/Api/Remote/SftpAuthenticationControllerTest.php index f460ecc50..b2d5d4919 100644 --- a/tests/Integration/Api/Remote/SftpAuthenticationControllerTest.php +++ b/tests/Integration/Api/Remote/SftpAuthenticationControllerTest.php @@ -2,6 +2,7 @@ namespace App\Tests\Integration\Api\Remote; +use App\Enums\ServerState; use App\Models\Node; use App\Models\User; use App\Models\Server; @@ -207,9 +208,9 @@ class SftpAuthenticationControllerTest extends IntegrationTestCase public static function serverStateDataProvider(): array { return [ - 'installing' => [Server::STATUS_INSTALLING], - 'suspended' => [Server::STATUS_SUSPENDED], - 'restoring a backup' => [Server::STATUS_RESTORING_BACKUP], + 'installing' => [ServerState::Installing->value], + 'suspended' => [ServerState::Suspended->value], + 'restoring a backup' => [ServerState::RestoringBackup->value], ]; } diff --git a/tests/Integration/Jobs/Schedule/RunTaskJobTest.php b/tests/Integration/Jobs/Schedule/RunTaskJobTest.php index de082823c..c6ececf5a 100644 --- a/tests/Integration/Jobs/Schedule/RunTaskJobTest.php +++ b/tests/Integration/Jobs/Schedule/RunTaskJobTest.php @@ -2,6 +2,7 @@ namespace App\Tests\Integration\Jobs\Schedule; +use App\Enums\ServerState; use Carbon\Carbon; use Carbon\CarbonImmutable; use GuzzleHttp\Psr7\Request; @@ -151,7 +152,7 @@ class RunTaskJobTest extends IntegrationTestCase public function testTaskIsNotRunIfServerIsSuspended(): void { $server = $this->createServerModel([ - 'status' => Server::STATUS_SUSPENDED, + 'status' => ServerState::Suspended, ]); $schedule = Schedule::factory()->for($server)->create([ diff --git a/tests/Integration/Services/Servers/SuspensionServiceTest.php b/tests/Integration/Services/Servers/SuspensionServiceTest.php index 423e2534f..1af1d6c45 100644 --- a/tests/Integration/Services/Servers/SuspensionServiceTest.php +++ b/tests/Integration/Services/Servers/SuspensionServiceTest.php @@ -2,8 +2,8 @@ namespace App\Tests\Integration\Services\Servers; +use App\Enums\ServerState; use Mockery\MockInterface; -use App\Models\Server; use App\Services\Servers\SuspensionService; use App\Tests\Integration\IntegrationTestCase; use App\Repositories\Daemon\DaemonServerRepository; @@ -47,7 +47,7 @@ class SuspensionServiceTest extends IntegrationTestCase $server->refresh(); $this->assertFalse($server->isSuspended()); - $server->update(['status' => Server::STATUS_SUSPENDED]); + $server->update(['status' => ServerState::Suspended]); $this->getService()->toggle($server); $server->refresh();