From 44df07a5f54cf9f99abdc31300e434f873ac179e Mon Sep 17 00:00:00 2001 From: James Cole Date: Wed, 17 Jan 2024 20:23:02 +0100 Subject: [PATCH] Update, rebuild, and add a new API endpoint. --- .ci/php-cs-fixer/composer.lock | 12 +- .../Model/Transaction/UpdateController.php | 93 +++++ .../Model/Transaction/UpdateRequest.php | 366 ++++++++++++++++++ .../Transaction/IndexController.php | 71 ++-- app/Providers/AppServiceProvider.php | 9 +- .../TransactionGroupRepository.php | 2 +- app/Support/Models/BillDateCalculator.php | 32 +- app/Support/Navigation.php | 7 + app/TransactionRules/Actions/SetNotes.php | 2 +- config/app.php | 240 ++++++++---- config/auth.php | 5 +- config/breadcrumbs.php | 6 +- config/services.php | 3 +- package-lock.json | 16 +- package.json | 1 - public/build/assets/create-46b63de1.js | 1 - public/build/assets/create-dd6750e8.js | 1 + ...da92.js => create-empty-split-b2c15454.js} | 2 +- ...oard-2ad8d866.js => dashboard-60d58953.js} | 2 +- public/build/assets/edit-74c97acb.js | 1 + public/build/assets/edit-b45ed381.js | 1 - ...y-43e05102.js => format-money-a71f277a.js} | 2 +- .../{get-a29f6df7.js => get-971543fd.js} | 2 +- .../{get-94678769.js => get-c4c00bed.js} | 2 +- public/build/assets/index-8df22335.js | 1 - public/build/assets/index-cf70f728.js | 1 + ...js => parse-downloaded-splits-19845c1d.js} | 2 +- public/build/assets/show-19f421da.js | 1 + public/build/assets/show-61e79d17.js | 1 - public/build/assets/show-8b1429e5.css | 1 + ...plice-errors-into-transactions-995deb6d.js | 1 + ...plice-errors-into-transactions-9c9b99c0.js | 1 - ...{vendor-fca45885.js => vendor-0ba1deae.js} | 2 +- public/build/manifest.json | 136 ++++--- .../libraries/dark-editable/Modes/BaseMode.js | 42 ++ .../dark-editable/Modes/InlineMode.js | 40 ++ .../dark-editable/Modes/PopupMode.js | 53 +++ .../libraries/dark-editable/Types/BaseType.js | 255 ++++++++++++ .../dark-editable/Types/DateTimeType.js | 16 + .../libraries/dark-editable/Types/DateType.js | 25 ++ .../dark-editable/Types/InputType.js | 19 + .../dark-editable/Types/SelectType.js | 36 ++ .../dark-editable/Types/TextAreaType.js | 9 + .../libraries/dark-editable/dark-editable.css | 87 +++++ .../libraries/dark-editable/dark-editable.js | 181 +++++++++ .../assets/v2/pages/transactions/create.js | 4 +- .../assets/v2/pages/transactions/edit.js | 5 +- .../transactions/shared/manage-locations.js | 28 +- .../transactions/shared/parse-from-entries.js | 12 +- .../assets/v2/pages/transactions/show.js | 12 + .../views/v2/transactions/show.blade.php | 23 +- .../Support/Models/BillDateCalculatorTest.php | 6 + 52 files changed, 1638 insertions(+), 241 deletions(-) create mode 100644 app/Api/V2/Controllers/Model/Transaction/UpdateController.php create mode 100644 app/Api/V2/Request/Model/Transaction/UpdateRequest.php delete mode 100644 public/build/assets/create-46b63de1.js create mode 100644 public/build/assets/create-dd6750e8.js rename public/build/assets/{create-empty-split-fb5bda92.js => create-empty-split-b2c15454.js} (93%) rename public/build/assets/{dashboard-2ad8d866.js => dashboard-60d58953.js} (98%) create mode 100644 public/build/assets/edit-74c97acb.js delete mode 100644 public/build/assets/edit-b45ed381.js rename public/build/assets/{format-money-43e05102.js => format-money-a71f277a.js} (99%) rename public/build/assets/{get-a29f6df7.js => get-971543fd.js} (66%) rename public/build/assets/{get-94678769.js => get-c4c00bed.js} (81%) delete mode 100644 public/build/assets/index-8df22335.js create mode 100644 public/build/assets/index-cf70f728.js rename public/build/assets/{parse-downloaded-splits-4afea167.js => parse-downloaded-splits-19845c1d.js} (90%) create mode 100644 public/build/assets/show-19f421da.js delete mode 100644 public/build/assets/show-61e79d17.js create mode 100644 public/build/assets/show-8b1429e5.css create mode 100644 public/build/assets/splice-errors-into-transactions-995deb6d.js delete mode 100644 public/build/assets/splice-errors-into-transactions-9c9b99c0.js rename public/build/assets/{vendor-fca45885.js => vendor-0ba1deae.js} (99%) create mode 100755 resources/assets/v2/libraries/dark-editable/Modes/BaseMode.js create mode 100755 resources/assets/v2/libraries/dark-editable/Modes/InlineMode.js create mode 100755 resources/assets/v2/libraries/dark-editable/Modes/PopupMode.js create mode 100755 resources/assets/v2/libraries/dark-editable/Types/BaseType.js create mode 100755 resources/assets/v2/libraries/dark-editable/Types/DateTimeType.js create mode 100755 resources/assets/v2/libraries/dark-editable/Types/DateType.js create mode 100755 resources/assets/v2/libraries/dark-editable/Types/InputType.js create mode 100755 resources/assets/v2/libraries/dark-editable/Types/SelectType.js create mode 100755 resources/assets/v2/libraries/dark-editable/Types/TextAreaType.js create mode 100755 resources/assets/v2/libraries/dark-editable/dark-editable.css create mode 100644 resources/assets/v2/libraries/dark-editable/dark-editable.js diff --git a/.ci/php-cs-fixer/composer.lock b/.ci/php-cs-fixer/composer.lock index 10dbc4c803..d8a944d9a1 100644 --- a/.ci/php-cs-fixer/composer.lock +++ b/.ci/php-cs-fixer/composer.lock @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.46.0", + "version": "v3.47.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "be6831c9af1740470d2a773119b9273f8ac1c3d2" + "reference": "173c60d1eff911c9c54322704623a45561d3241d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/be6831c9af1740470d2a773119b9273f8ac1c3d2", - "reference": "be6831c9af1740470d2a773119b9273f8ac1c3d2", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/173c60d1eff911c9c54322704623a45561d3241d", + "reference": "173c60d1eff911c9c54322704623a45561d3241d", "shasum": "" }, "require": { @@ -305,7 +305,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.46.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.47.1" }, "funding": [ { @@ -313,7 +313,7 @@ "type": "github" } ], - "time": "2024-01-03T21:38:46+00:00" + "time": "2024-01-16T18:54:21+00:00" }, { "name": "psr/container", diff --git a/app/Api/V2/Controllers/Model/Transaction/UpdateController.php b/app/Api/V2/Controllers/Model/Transaction/UpdateController.php new file mode 100644 index 0000000000..61129391cf --- /dev/null +++ b/app/Api/V2/Controllers/Model/Transaction/UpdateController.php @@ -0,0 +1,93 @@ +middleware( + function ($request, $next) { + $this->groupRepository = app(TransactionGroupRepositoryInterface::class); + + return $next($request); + } + ); + } + + /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/updateTransaction + * + * Update a transaction. + * + * @throws FireflyException + */ + public function update(UpdateRequest $request, TransactionGroup $transactionGroup): JsonResponse + { + app('log')->debug('Now in update routine for transaction group [v2]!'); + $data = $request->getAll(); + $transactionGroup = $this->groupRepository->update($transactionGroup, $data); + $applyRules = $data['apply_rules'] ?? true; + $fireWebhooks = $data['fire_webhooks'] ?? true; + + event(new UpdatedTransactionGroup($transactionGroup, $applyRules, $fireWebhooks)); + app('preferences')->mark(); + + /** @var User $admin */ + $admin = auth()->user(); + + // use new group collector: + /** @var GroupCollectorInterface $collector */ + $collector = app(GroupCollectorInterface::class); + $collector->setUser($admin)->setTransactionGroup($transactionGroup); + + $selectedGroup = $collector->getGroups()->first(); + if (null === $selectedGroup) { + throw new FireflyException('200032: Cannot find transaction. Possibly, a rule deleted this transaction after its creation.'); + } + + $transformer = new TransactionGroupTransformer(); + $transformer->setParameters($this->parameters); + + return response()->api($this->jsonApiObject('transactions', $selectedGroup, $transformer))->header('Content-Type', self::CONTENT_TYPE); + } +} diff --git a/app/Api/V2/Request/Model/Transaction/UpdateRequest.php b/app/Api/V2/Request/Model/Transaction/UpdateRequest.php new file mode 100644 index 0000000000..40a0b979cf --- /dev/null +++ b/app/Api/V2/Request/Model/Transaction/UpdateRequest.php @@ -0,0 +1,366 @@ +debug(sprintf('Now in %s', __METHOD__)); + $this->integerFields = ['order', 'currency_id', 'foreign_currency_id', 'transaction_journal_id', 'source_id', 'destination_id', 'budget_id', 'category_id', 'bill_id', 'recurrence_id']; + $this->dateFields = ['date', 'interest_date', 'book_date', 'process_date', 'due_date', 'payment_date', 'invoice_date']; + $this->textareaFields = ['notes']; + // not really floats, for validation. + $this->floatFields = ['amount', 'foreign_amount']; + $this->stringFields = ['type', 'currency_code', 'foreign_currency_code', 'description', 'source_name', 'source_iban', 'source_number', 'source_bic', 'destination_name', 'destination_iban', 'destination_number', 'destination_bic', 'budget_name', 'category_name', 'bill_name', 'internal_reference', 'external_id', 'bunq_payment_id', 'sepa_cc', 'sepa_ct_op', 'sepa_ct_id', 'sepa_db', 'sepa_country', 'sepa_ep', 'sepa_ci', 'sepa_batch_id', 'external_url']; + $this->booleanFields = ['reconciled']; + $this->arrayFields = ['tags']; + $data = []; + if ($this->has('transactions')) { + $data['transactions'] = $this->getTransactionData(); + } + if ($this->has('apply_rules')) { + $data['apply_rules'] = $this->boolean('apply_rules', true); + } + if ($this->has('fire_webhooks')) { + $data['fire_webhooks'] = $this->boolean('fire_webhooks', true); + } + if ($this->has('group_title')) { + $data['group_title'] = $this->convertString('group_title'); + } + + return $data; + } + + /** + * The rules that the incoming request must be matched against. + */ + public function rules(): array + { + app('log')->debug(sprintf('Now in %s', __METHOD__)); + $validProtocols = config('firefly.valid_url_protocols'); + + return [ + // basic fields for group: + 'group_title' => 'min:1|max:1000|nullable', + 'apply_rules' => [new IsBoolean()], + + // transaction rules (in array for splits): + 'transactions.*.type' => 'in:withdrawal,deposit,transfer,opening-balance,reconciliation', + 'transactions.*.date' => [new IsDateOrTime()], + 'transactions.*.order' => 'numeric|min:0', + + // group id: + 'transactions.*.transaction_journal_id' => ['nullable', 'numeric', new BelongsUser()], + + // currency info + 'transactions.*.currency_id' => 'numeric|exists:transaction_currencies,id|nullable', + 'transactions.*.currency_code' => 'min:3|max:51|exists:transaction_currencies,code|nullable', + 'transactions.*.foreign_currency_id' => 'nullable|numeric|exists:transaction_currencies,id', + 'transactions.*.foreign_currency_code' => 'nullable|min:3|max:51|exists:transaction_currencies,code', + + // amount + 'transactions.*.amount' => ['nullable', new IsValidPositiveAmount()], + 'transactions.*.foreign_amount' => ['nullable', new IsValidZeroOrMoreAmount()], + + // description + 'transactions.*.description' => 'nullable|min:1|max:1000', + + // source of transaction + 'transactions.*.source_id' => ['numeric', 'nullable', new BelongsUser()], + 'transactions.*.source_name' => 'min:1|max:255|nullable', + + // destination of transaction + 'transactions.*.destination_id' => ['numeric', 'nullable', new BelongsUser()], + 'transactions.*.destination_name' => 'min:1|max:255|nullable', + + // budget, category, bill and piggy + 'transactions.*.budget_id' => ['mustExist:budgets,id', new BelongsUser(), 'nullable'], + 'transactions.*.budget_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()], + 'transactions.*.category_id' => ['mustExist:categories,id', new BelongsUser(), 'nullable'], + 'transactions.*.category_name' => 'min:1|max:255|nullable', + 'transactions.*.bill_id' => ['numeric', 'nullable', 'mustExist:bills,id', new BelongsUser()], + 'transactions.*.bill_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()], + + // other interesting fields + 'transactions.*.reconciled' => [new IsBoolean()], + 'transactions.*.notes' => 'min:1|max:32768|nullable', + 'transactions.*.tags' => 'min:0|max:255|nullable', + 'transactions.*.tags.*' => 'min:0|max:255', + + // meta info fields + 'transactions.*.internal_reference' => 'min:1|max:255|nullable', + 'transactions.*.external_id' => 'min:1|max:255|nullable', + 'transactions.*.recurrence_id' => 'min:1|max:255|nullable', + 'transactions.*.bunq_payment_id' => 'min:1|max:255|nullable', + 'transactions.*.external_url' => sprintf('min:1|max:255|nullable|url:%s', $validProtocols), + + // SEPA fields: + 'transactions.*.sepa_cc' => 'min:1|max:255|nullable', + 'transactions.*.sepa_ct_op' => 'min:1|max:255|nullable', + 'transactions.*.sepa_ct_id' => 'min:1|max:255|nullable', + 'transactions.*.sepa_db' => 'min:1|max:255|nullable', + 'transactions.*.sepa_country' => 'min:1|max:255|nullable', + 'transactions.*.sepa_ep' => 'min:1|max:255|nullable', + 'transactions.*.sepa_ci' => 'min:1|max:255|nullable', + 'transactions.*.sepa_batch_id' => 'min:1|max:255|nullable', + + // dates + 'transactions.*.interest_date' => 'date|nullable', + 'transactions.*.book_date' => 'date|nullable', + 'transactions.*.process_date' => 'date|nullable', + 'transactions.*.due_date' => 'date|nullable', + 'transactions.*.payment_date' => 'date|nullable', + 'transactions.*.invoice_date' => 'date|nullable', + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator): void + { + app('log')->debug('Now in withValidator'); + + /** @var TransactionGroup $transactionGroup */ + $transactionGroup = $this->route()->parameter('userGroupTransaction'); + $validator->after( + function (Validator $validator) use ($transactionGroup): void { + // if more than one, verify that there are journal ID's present. + $this->validateJournalIds($validator, $transactionGroup); + + // all transaction types must be equal: + $this->validateTransactionTypesForUpdate($validator); + + // user wants to update a reconciled transaction. + // source, destination, amount + foreign_amount cannot be changed + // and must be omitted from the request. + $this->preventUpdateReconciled($validator, $transactionGroup); + + // validate source/destination is equal, depending on the transaction journal type. + $this->validateEqualAccountsForUpdate($validator, $transactionGroup); + + // see method: + // $this->preventNoAccountInfo($validator, ); + + // validate that the currency fits the source and/or destination account. + // validate all account info + $this->validateAccountInformationUpdate($validator, $transactionGroup); + } + ); + if($validator->fails()) { + Log::channel('audit')->error(sprintf('Validation errors in %s', __CLASS__), $validator->errors()->toArray()); + } + } + + /** + * Get transaction data. + * + * @throws FireflyException + */ + private function getTransactionData(): array + { + app('log')->debug(sprintf('Now in %s', __METHOD__)); + $return = []; + + /** @var null|array $transactions */ + $transactions = $this->get('transactions'); + + if (!is_countable($transactions)) { + return $return; + } + + /** @var null|array $transaction */ + foreach ($transactions as $transaction) { + if (!is_array($transaction)) { + throw new FireflyException('Invalid data submitted: transaction is not array.'); + } + // default response is to update nothing in the transaction: + $current = []; + $current = $this->getIntegerData($current, $transaction); + $current = $this->getStringData($current, $transaction); + $current = $this->getNlStringData($current, $transaction); + $current = $this->getDateData($current, $transaction); + $current = $this->getBooleanData($current, $transaction); + $current = $this->getArrayData($current, $transaction); + $current = $this->getFloatData($current, $transaction); + $return[] = $current; + } + + return $return; + } + + /** + * For each field, add it to the array if a reference is present in the request: + * + * @param array $current + * @param array $transaction + */ + private function getIntegerData(array $current, array $transaction): array + { + foreach ($this->integerFields as $fieldName) { + if (array_key_exists($fieldName, $transaction)) { + $current[$fieldName] = $this->integerFromValue((string) $transaction[$fieldName]); + } + } + + return $current; + } + + /** + * @param array $current + * @param array $transaction + */ + private function getStringData(array $current, array $transaction): array + { + foreach ($this->stringFields as $fieldName) { + if (array_key_exists($fieldName, $transaction)) { + $current[$fieldName] = $this->clearString((string) $transaction[$fieldName]); + } + } + + return $current; + } + + /** + * @param array $current + * @param array $transaction + */ + private function getNlStringData(array $current, array $transaction): array + { + foreach ($this->textareaFields as $fieldName) { + if (array_key_exists($fieldName, $transaction)) { + $current[$fieldName] = $this->clearStringKeepNewlines((string) $transaction[$fieldName]); // keep newlines + } + } + + return $current; + } + + /** + * @param array $current + * @param array $transaction + */ + private function getDateData(array $current, array $transaction): array + { + foreach ($this->dateFields as $fieldName) { + app('log')->debug(sprintf('Now at date field %s', $fieldName)); + if (array_key_exists($fieldName, $transaction)) { + app('log')->debug(sprintf('New value: "%s"', (string) $transaction[$fieldName])); + $current[$fieldName] = $this->dateFromValue((string) $transaction[$fieldName]); + } + } + + return $current; + } + + /** + * @param array $current + * @param array $transaction + */ + private function getBooleanData(array $current, array $transaction): array + { + foreach ($this->booleanFields as $fieldName) { + if (array_key_exists($fieldName, $transaction)) { + $current[$fieldName] = $this->convertBoolean((string) $transaction[$fieldName]); + } + } + + return $current; + } + + /** + * @param array $current + * @param array $transaction + */ + private function getArrayData(array $current, array $transaction): array + { + foreach ($this->arrayFields as $fieldName) { + if (array_key_exists($fieldName, $transaction)) { + $current[$fieldName] = $this->arrayFromValue($transaction[$fieldName]); + } + } + + return $current; + } + + /** + * @param array $current + * @param array $transaction + */ + private function getFloatData(array $current, array $transaction): array + { + foreach ($this->floatFields as $fieldName) { + if (array_key_exists($fieldName, $transaction)) { + $value = $transaction[$fieldName]; + if (is_float($value)) { + $current[$fieldName] = sprintf('%.12f', $value); + } + if (!is_float($value)) { + $current[$fieldName] = (string) $value; + } + } + } + + return $current; + } +} diff --git a/app/Http/Controllers/Transaction/IndexController.php b/app/Http/Controllers/Transaction/IndexController.php index bbc6f95e63..8013113c6d 100644 --- a/app/Http/Controllers/Transaction/IndexController.php +++ b/app/Http/Controllers/Transaction/IndexController.php @@ -76,12 +76,12 @@ class IndexController extends Controller } // add a split for the (future) v2 release. - $periods = []; - $groups = []; - $subTitle = 'TODO page subtitle in v2'; + $periods = []; + $groups = []; + $subTitle = 'TODO page subtitle in v2'; - $subTitleIcon = config('firefly.transactionIconsByType.' . $objectType); - $types = config('firefly.transactionTypesByType.' . $objectType); + $subTitleIcon = config('firefly.transactionIconsByType.'.$objectType); + $types = config('firefly.transactionTypesByType.'.$objectType); $page = (int)$request->get('page'); $pageSize = (int)app('preferences')->get('listPageSize', 50)->data; @@ -97,31 +97,31 @@ class IndexController extends Controller } [$start, $end] = $end < $start ? [$end, $start] : [$start, $end]; - $startStr = $start->isoFormat($this->monthAndDayFormat); - $endStr = $end->isoFormat($this->monthAndDayFormat); - $subTitle = (string)trans(sprintf('firefly.title_%s_between', $objectType), ['start' => $startStr, 'end' => $endStr]); - $path = route('transactions.index', [$objectType, $start->format('Y-m-d'), $end->format('Y-m-d')]); - $firstJournal = $this->repository->firstNull(); - $startPeriod = null === $firstJournal ? new Carbon() : $firstJournal->date; - $endPeriod = clone $end; - $periods = $this->getTransactionPeriodOverview($objectType, $startPeriod, $endPeriod); + $startStr = $start->isoFormat($this->monthAndDayFormat); + $endStr = $end->isoFormat($this->monthAndDayFormat); + $subTitle = (string)trans(sprintf('firefly.title_%s_between', $objectType), ['start' => $startStr, 'end' => $endStr]); + $path = route('transactions.index', [$objectType, $start->format('Y-m-d'), $end->format('Y-m-d')]); + $firstJournal = $this->repository->firstNull(); + $startPeriod = null === $firstJournal ? new Carbon() : $firstJournal->date; + $endPeriod = clone $end; + $periods = $this->getTransactionPeriodOverview($objectType, $startPeriod, $endPeriod); /** @var GroupCollectorInterface $collector */ - $collector = app(GroupCollectorInterface::class); + $collector = app(GroupCollectorInterface::class); $collector->setRange($start, $end) - ->setTypes($types) - ->setLimit($pageSize) - ->setPage($page) - ->withBudgetInformation() - ->withCategoryInformation() - ->withAccountInformation() - ->withAttachmentInformation(); - $groups = $collector->getPaginatedGroups(); + ->setTypes($types) + ->setLimit($pageSize) + ->setPage($page) + ->withBudgetInformation() + ->withCategoryInformation() + ->withAccountInformation() + ->withAttachmentInformation() + ; + $groups = $collector->getPaginatedGroups(); $groups->setPath($path); } - return view('transactions.index', compact('subTitle', 'objectType', 'subTitleIcon', 'groups', 'periods', 'start', 'end')); } @@ -132,8 +132,8 @@ class IndexController extends Controller */ public function indexAll(Request $request, string $objectType) { - $subTitleIcon = config('firefly.transactionIconsByType.' . $objectType); - $types = config('firefly.transactionTypesByType.' . $objectType); + $subTitleIcon = config('firefly.transactionIconsByType.'.$objectType); + $types = config('firefly.transactionTypesByType.'.$objectType); $page = (int)$request->get('page'); $pageSize = (int)app('preferences')->get('listPageSize', 50)->data; $path = route('transactions.index.all', [$objectType]); @@ -141,20 +141,21 @@ class IndexController extends Controller $start = null === $first ? new Carbon() : $first->date; $last = $this->repository->getLast(); $end = null !== $last ? $last->date : today(config('app.timezone')); - $subTitle = (string)trans('firefly.all_' . $objectType); + $subTitle = (string)trans('firefly.all_'.$objectType); /** @var GroupCollectorInterface $collector */ - $collector = app(GroupCollectorInterface::class); + $collector = app(GroupCollectorInterface::class); $collector->setRange($start, $end) - ->setTypes($types) - ->setLimit($pageSize) - ->setPage($page) - ->withAccountInformation() - ->withBudgetInformation() - ->withCategoryInformation() - ->withAttachmentInformation(); - $groups = $collector->getPaginatedGroups(); + ->setTypes($types) + ->setLimit($pageSize) + ->setPage($page) + ->withAccountInformation() + ->withBudgetInformation() + ->withCategoryInformation() + ->withAttachmentInformation() + ; + $groups = $collector->getPaginatedGroups(); $groups->setPath($path); return view('transactions.index', compact('subTitle', 'objectType', 'subTitleIcon', 'groups', 'start', 'end')); diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index e7ebfab689..b5a1183717 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -23,12 +23,12 @@ declare(strict_types=1); namespace FireflyIII\Providers; +use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; use Laravel\Passport\Passport; use Laravel\Sanctum\Sanctum; -use Illuminate\Support\Facades\Blade; /** * Class AppServiceProvider @@ -52,12 +52,13 @@ class AppServiceProvider extends ServiceProvider return response() ->json($value) - ->withHeaders($headers); + ->withHeaders($headers) + ; }); // blade extension Blade::directive('activeXRoutePartial', function (string $route) { - $name = \Route::getCurrentRoute()->getName() ?? ''; + $name = \Route::getCurrentRoute()->getName() ?? ''; if (str_contains($name, $route)) { return 'menu-open'; } @@ -65,7 +66,7 @@ class AppServiceProvider extends ServiceProvider return ''; }); Blade::if('partialroute', function (string $route) { - $name = \Route::getCurrentRoute()->getName() ?? ''; + $name = \Route::getCurrentRoute()->getName() ?? ''; if (str_contains($name, $route)) { return true; } diff --git a/app/Repositories/TransactionGroup/TransactionGroupRepository.php b/app/Repositories/TransactionGroup/TransactionGroupRepository.php index 486fbf67b1..3f056789aa 100644 --- a/app/Repositories/TransactionGroup/TransactionGroupRepository.php +++ b/app/Repositories/TransactionGroup/TransactionGroupRepository.php @@ -123,7 +123,7 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface public function setUser(null|Authenticatable|User $user): void { - if ($user instanceof user) { + if ($user instanceof User) { $this->user = $user; } } diff --git a/app/Support/Models/BillDateCalculator.php b/app/Support/Models/BillDateCalculator.php index 5a525b355f..e5c2ef8f80 100644 --- a/app/Support/Models/BillDateCalculator.php +++ b/app/Support/Models/BillDateCalculator.php @@ -29,6 +29,10 @@ use Illuminate\Support\Facades\Log; class BillDateCalculator { + // #8401 we start keeping track of the diff in periods, because if it can't jump over a period (happens often in February) + // we can force the process along. + private int $diffInMonths = 0; + /** * Returns the dates a bill needs to be paid. * @@ -43,12 +47,16 @@ class BillDateCalculator Log::debug(sprintf('Dates must be between %s and %s.', $earliest->format('Y-m-d'), $latest->format('Y-m-d'))); Log::debug(sprintf('Bill started on %s, period is "%s", skip is %d, last paid = "%s".', $billStart->format('Y-m-d'), $period, $skip, $lastPaid?->format('Y-m-d'))); + $daysUntilEOM = app('navigation')->daysUntilEndOfMonth($billStart); + Log::debug(sprintf('For bill start, days until end of month is %d', $daysUntilEOM)); + $set = new Collection(); $currentStart = clone $earliest; // 2023-06-23 subDay to fix 7655 $currentStart->subDay(); $loop = 0; + Log::debug('Start of loop'); while ($currentStart <= $latest) { Log::debug(sprintf('Current start is %s', $currentStart->format('Y-m-d'))); @@ -79,8 +87,23 @@ class BillDateCalculator $set->push(clone $nextExpectedMatch); } + // #8401 + // a little check for when the day of the bill (ie 30th of the month) is not possible in + // the next expected month because that month has only 28 days (i.e. february). + // this applies to leap years as well. + if ($daysUntilEOM < 4) { + $nextUntilEOM = app('navigation')->daysUntilEndOfMonth($nextExpectedMatch); + $diffEOM = $daysUntilEOM - $nextUntilEOM; + if ($diffEOM > 0) { + Log::debug(sprintf('Bill start is %d days from the end of the month. nextExceptedMatch is %d days from the end of the month.', $daysUntilEOM, $nextUntilEOM)); + $nextExpectedMatch->subDays(1); + Log::debug(sprintf('Subtract %d days from next expected match, which is now %s', $diffEOM, $nextExpectedMatch->format('Y-m-d'))); + } + } + // 2023-10 // for the next loop, go to end of period, THEN add day. + Log::debug('Add one day to nextExpectedMatch/currentStart.'); $nextExpectedMatch->addDay(); $currentStart = clone $nextExpectedMatch; @@ -117,8 +140,13 @@ class BillDateCalculator return $billStartDate; } - $steps = app('navigation')->diffInPeriods($period, $skip, $earliest, $billStartDate); - $result = clone $billStartDate; + $steps = app('navigation')->diffInPeriods($period, $skip, $earliest, $billStartDate); + if ($steps === $this->diffInMonths) { + Log::debug(sprintf('Steps is %d, which is the same as diffInMonths (%d), so we add another 1.', $steps, $this->diffInMonths)); + ++$steps; + } + $this->diffInMonths = $steps; + $result = clone $billStartDate; if ($steps > 0) { --$steps; Log::debug(sprintf('Steps is %d, because addPeriod already adds 1.', $steps)); diff --git a/app/Support/Navigation.php b/app/Support/Navigation.php index ae9c6e3c83..4d92ba510d 100644 --- a/app/Support/Navigation.php +++ b/app/Support/Navigation.php @@ -302,6 +302,13 @@ class Navigation return $currentEnd; } + public function daysUntilEndOfMonth(Carbon $date): int + { + $endOfMonth = $date->copy()->endOfMonth(); + + return $date->diffInDays($endOfMonth); + } + public function diffInPeriods(string $period, int $skip, Carbon $beginning, Carbon $end): int { Log::debug(sprintf( diff --git a/app/TransactionRules/Actions/SetNotes.php b/app/TransactionRules/Actions/SetNotes.php index c1ea311cb3..260ccfe4d4 100644 --- a/app/TransactionRules/Actions/SetNotes.php +++ b/app/TransactionRules/Actions/SetNotes.php @@ -33,7 +33,7 @@ use FireflyIII\Models\TransactionJournal; */ class SetNotes implements ActionInterface { - private RuleACtion $action; + private RuleAction $action; /** * TriggerInterface constructor. diff --git a/config/app.php b/config/app.php index 8f179f6221..0b14d37b1b 100644 --- a/config/app.php +++ b/config/app.php @@ -21,6 +21,25 @@ declare(strict_types=1); +use FireflyIII\Providers\AccountServiceProvider; +use FireflyIII\Providers\AdminServiceProvider; +use FireflyIII\Providers\AppServiceProvider; +use FireflyIII\Providers\AttachmentServiceProvider; +use FireflyIII\Providers\BillServiceProvider; +use FireflyIII\Providers\BudgetServiceProvider; +use FireflyIII\Providers\CategoryServiceProvider; +use FireflyIII\Providers\CurrencyServiceProvider; +use FireflyIII\Providers\EventServiceProvider; +use FireflyIII\Providers\FireflyServiceProvider; +use FireflyIII\Providers\JournalServiceProvider; +use FireflyIII\Providers\PiggyBankServiceProvider; +use FireflyIII\Providers\RecurringServiceProvider; +use FireflyIII\Providers\RouteServiceProvider; +use FireflyIII\Providers\RuleGroupServiceProvider; +use FireflyIII\Providers\RuleServiceProvider; +use FireflyIII\Providers\SearchServiceProvider; +use FireflyIII\Providers\SessionServiceProvider; +use FireflyIII\Providers\TagServiceProvider; use FireflyIII\Support\Facades\AccountForm; use FireflyIII\Support\Facades\Amount; use FireflyIII\Support\Facades\CurrencyForm; @@ -31,6 +50,67 @@ use FireflyIII\Support\Facades\PiggyBankForm; use FireflyIII\Support\Facades\Preferences; use FireflyIII\Support\Facades\RuleForm; use FireflyIII\Support\Facades\Steam; +use Illuminate\Auth\AuthServiceProvider; +use Illuminate\Auth\Passwords\PasswordResetServiceProvider; +use Illuminate\Broadcasting\BroadcastServiceProvider; +use Illuminate\Bus\BusServiceProvider; +use Illuminate\Cache\CacheServiceProvider; +use Illuminate\Cookie\CookieServiceProvider; +use Illuminate\Database\DatabaseServiceProvider; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Encryption\EncryptionServiceProvider; +use Illuminate\Filesystem\FilesystemServiceProvider; +use Illuminate\Foundation\Providers\ConsoleSupportServiceProvider; +use Illuminate\Foundation\Providers\FoundationServiceProvider; +use Illuminate\Hashing\HashServiceProvider; +use Illuminate\Mail\MailServiceProvider; +use Illuminate\Notifications\NotificationServiceProvider; +use Illuminate\Pagination\PaginationServiceProvider; +use Illuminate\Pipeline\PipelineServiceProvider; +use Illuminate\Queue\QueueServiceProvider; +use Illuminate\Redis\RedisServiceProvider; +use Illuminate\Support\Arr; +use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Blade; +use Illuminate\Support\Facades\Broadcast; +use Illuminate\Support\Facades\Bus; +use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\Config; +use Illuminate\Support\Facades\Cookie; +use Illuminate\Support\Facades\Crypt; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Event; +use Illuminate\Support\Facades\File; +use Illuminate\Support\Facades\Gate; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Lang; +use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\Notification; +use Illuminate\Support\Facades\Password; +use Illuminate\Support\Facades\Queue; +use Illuminate\Support\Facades\Redirect; +use Illuminate\Support\Facades\Redis; +use Illuminate\Support\Facades\Request; +use Illuminate\Support\Facades\Response; +use Illuminate\Support\Facades\Route; +use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Facades\Session; +use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\URL; +use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Facades\View; +use Illuminate\Support\Str; +use Illuminate\Translation\TranslationServiceProvider; +use Illuminate\Validation\ValidationServiceProvider; +use Illuminate\View\ViewServiceProvider; +use PragmaRX\Google2FALaravel\Facade; +use Spatie\Html\Facades\Html; +use TwigBridge\Facade\Twig; +use TwigBridge\ServiceProvider; return [ 'name' => envNonEmpty('APP_NAME', 'Firefly III'), @@ -44,94 +124,94 @@ return [ 'cipher' => 'AES-256-CBC', 'providers' => [ // Laravel Framework Service Providers... - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - FireflyIII\Providers\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, + AuthServiceProvider::class, + BroadcastServiceProvider::class, + BusServiceProvider::class, + CacheServiceProvider::class, + ConsoleSupportServiceProvider::class, + CookieServiceProvider::class, + DatabaseServiceProvider::class, + EncryptionServiceProvider::class, + FilesystemServiceProvider::class, + FoundationServiceProvider::class, + HashServiceProvider::class, + MailServiceProvider::class, + NotificationServiceProvider::class, + PaginationServiceProvider::class, + PipelineServiceProvider::class, + QueueServiceProvider::class, + RedisServiceProvider::class, + PasswordResetServiceProvider::class, + SessionServiceProvider::class, + TranslationServiceProvider::class, + ValidationServiceProvider::class, + ViewServiceProvider::class, // Package Service Providers... // Application Service Providers... - FireflyIII\Providers\AppServiceProvider::class, + AppServiceProvider::class, FireflyIII\Providers\AuthServiceProvider::class, // FireflyIII\Providers\BroadcastServiceProvider::class, - FireflyIII\Providers\EventServiceProvider::class, - FireflyIII\Providers\RouteServiceProvider::class, + EventServiceProvider::class, + RouteServiceProvider::class, // own stuff: PragmaRX\Google2FALaravel\ServiceProvider::class, - TwigBridge\ServiceProvider::class, + ServiceProvider::class, // More service providers. - FireflyIII\Providers\AccountServiceProvider::class, - FireflyIII\Providers\AttachmentServiceProvider::class, - FireflyIII\Providers\BillServiceProvider::class, - FireflyIII\Providers\BudgetServiceProvider::class, - FireflyIII\Providers\CategoryServiceProvider::class, - FireflyIII\Providers\CurrencyServiceProvider::class, - FireflyIII\Providers\FireflyServiceProvider::class, - FireflyIII\Providers\JournalServiceProvider::class, - FireflyIII\Providers\PiggyBankServiceProvider::class, - FireflyIII\Providers\RuleServiceProvider::class, - FireflyIII\Providers\RuleGroupServiceProvider::class, - FireflyIII\Providers\SearchServiceProvider::class, - FireflyIII\Providers\TagServiceProvider::class, - FireflyIII\Providers\AdminServiceProvider::class, - FireflyIII\Providers\RecurringServiceProvider::class, + AccountServiceProvider::class, + AttachmentServiceProvider::class, + BillServiceProvider::class, + BudgetServiceProvider::class, + CategoryServiceProvider::class, + CurrencyServiceProvider::class, + FireflyServiceProvider::class, + JournalServiceProvider::class, + PiggyBankServiceProvider::class, + RuleServiceProvider::class, + RuleGroupServiceProvider::class, + SearchServiceProvider::class, + TagServiceProvider::class, + AdminServiceProvider::class, + RecurringServiceProvider::class, ], 'aliases' => [ - 'App' => Illuminate\Support\Facades\App::class, - 'Artisan' => Illuminate\Support\Facades\Artisan::class, - 'Auth' => Illuminate\Support\Facades\Auth::class, - 'Blade' => Illuminate\Support\Facades\Blade::class, - 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, - 'Bus' => Illuminate\Support\Facades\Bus::class, - 'Cache' => Illuminate\Support\Facades\Cache::class, - 'Config' => Illuminate\Support\Facades\Config::class, - 'Cookie' => Illuminate\Support\Facades\Cookie::class, - 'Crypt' => Illuminate\Support\Facades\Crypt::class, - 'DB' => Illuminate\Support\Facades\DB::class, - 'Eloquent' => Illuminate\Database\Eloquent\Model::class, - 'Event' => Illuminate\Support\Facades\Event::class, - 'File' => Illuminate\Support\Facades\File::class, - 'Gate' => Illuminate\Support\Facades\Gate::class, - 'Hash' => Illuminate\Support\Facades\Hash::class, - 'Lang' => Illuminate\Support\Facades\Lang::class, - 'Log' => Illuminate\Support\Facades\Log::class, - 'Mail' => Illuminate\Support\Facades\Mail::class, - 'Notification' => Illuminate\Support\Facades\Notification::class, - 'Password' => Illuminate\Support\Facades\Password::class, - 'Queue' => Illuminate\Support\Facades\Queue::class, - 'Redirect' => Illuminate\Support\Facades\Redirect::class, - 'Redis' => Illuminate\Support\Facades\Redis::class, - 'Request' => Illuminate\Support\Facades\Request::class, - 'Response' => Illuminate\Support\Facades\Response::class, - 'Route' => Illuminate\Support\Facades\Route::class, - 'Schema' => Illuminate\Support\Facades\Schema::class, - 'Session' => Illuminate\Support\Facades\Session::class, - 'Storage' => Illuminate\Support\Facades\Storage::class, - 'URL' => Illuminate\Support\Facades\URL::class, - 'Validator' => Illuminate\Support\Facades\Validator::class, - 'View' => Illuminate\Support\Facades\View::class, - 'Html' => Spatie\Html\Facades\Html::class, + 'App' => App::class, + 'Artisan' => Artisan::class, + 'Auth' => Auth::class, + 'Blade' => Blade::class, + 'Broadcast' => Broadcast::class, + 'Bus' => Bus::class, + 'Cache' => Cache::class, + 'Config' => Config::class, + 'Cookie' => Cookie::class, + 'Crypt' => Crypt::class, + 'DB' => DB::class, + 'Eloquent' => Model::class, + 'Event' => Event::class, + 'File' => File::class, + 'Gate' => Gate::class, + 'Hash' => Hash::class, + 'Lang' => Lang::class, + 'Log' => Log::class, + 'Mail' => Mail::class, + 'Notification' => Notification::class, + 'Password' => Password::class, + 'Queue' => Queue::class, + 'Redirect' => Redirect::class, + 'Redis' => Redis::class, + 'Request' => Request::class, + 'Response' => Response::class, + 'Route' => Route::class, + 'Schema' => Schema::class, + 'Session' => Session::class, + 'Storage' => Storage::class, + 'URL' => URL::class, + 'Validator' => Validator::class, + 'View' => View::class, + 'Html' => Html::class, 'Preferences' => Preferences::class, 'FireflyConfig' => FireflyConfig::class, 'Navigation' => Navigation::class, @@ -142,12 +222,12 @@ return [ 'AccountForm' => AccountForm::class, 'PiggyBankForm' => PiggyBankForm::class, 'RuleForm' => RuleForm::class, - 'Google2FA' => PragmaRX\Google2FALaravel\Facade::class, - 'Twig' => TwigBridge\Facade\Twig::class, + 'Google2FA' => Facade::class, + 'Twig' => Twig::class, - 'Arr' => Illuminate\Support\Arr::class, - 'Http' => Illuminate\Support\Facades\Http::class, - 'Str' => Illuminate\Support\Str::class, + 'Arr' => Arr::class, + 'Http' => Http::class, + 'Str' => Str::class, ], 'asset_url' => env('ASSET_URL', null), diff --git a/config/auth.php b/config/auth.php index 535b97ab5e..523a326e2f 100644 --- a/config/auth.php +++ b/config/auth.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); +use FireflyIII\User; if ('ldap' === strtolower((string)env('AUTHENTICATION_GUARD'))) { exit('LDAP is no longer supported by Firefly III v5.7+. Sorry about that. You will have to switch to "remote_user_guard", and use tools like Authelia or Keycloak to use LDAP together with Firefly III.'); @@ -96,11 +97,11 @@ return [ 'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => FireflyIII\User::class, + 'model' => User::class, ], 'remote_user_provider' => [ 'driver' => 'remote_user_provider', - 'model' => FireflyIII\User::class, + 'model' => User::class, ], ], diff --git a/config/breadcrumbs.php b/config/breadcrumbs.php index 097cdd92e8..d725919eb6 100644 --- a/config/breadcrumbs.php +++ b/config/breadcrumbs.php @@ -21,6 +21,8 @@ */ declare(strict_types=1); +use Diglactic\Breadcrumbs\Generator; +use Diglactic\Breadcrumbs\Manager; return [ /* @@ -90,8 +92,8 @@ return [ */ // Manager - 'manager-class' => Diglactic\Breadcrumbs\Manager::class, + 'manager-class' => Manager::class, // Generator - 'generator-class' => Diglactic\Breadcrumbs\Generator::class, + 'generator-class' => Generator::class, ]; diff --git a/config/services.php b/config/services.php index 24825d4f2c..382f69a808 100644 --- a/config/services.php +++ b/config/services.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); +use FireflyIII\User; return [ /* @@ -51,7 +52,7 @@ return [ ], 'stripe' => [ - 'model' => FireflyIII\User::class, + 'model' => User::class, 'key' => env('STRIPE_KEY'), 'secret' => env('STRIPE_SECRET'), ], diff --git a/package-lock.json b/package-lock.json index fce4f93737..21c1e30098 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,6 @@ "chart.js": "^4.4.0", "chartjs-adapter-date-fns": "^3.0.0", "chartjs-chart-sankey": "^0.12.0", - "dark-editable": "github:DarKsandr/dark-editable", "date-fns": "^3.2.0", "i18next": "^23.7.16", "i18next-chained-backend": "^4.6.2", @@ -32,9 +31,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.7.tgz", - "integrity": "sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", + "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -592,9 +591,6 @@ "node-fetch": "^2.6.12" } }, - "node_modules/dark-editable": { - "resolved": "git+ssh://git@github.com/DarKsandr/dark-editable.git#8601f10ef5a49ff9ad6f1c0921d523f17f174036" - }, "node_modules/date-fns": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.2.0.tgz", @@ -663,9 +659,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true, "funding": [ { diff --git a/package.json b/package.json index 3a34da0d44..4dda2965cd 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "chart.js": "^4.4.0", "chartjs-adapter-date-fns": "^3.0.0", "chartjs-chart-sankey": "^0.12.0", - "dark-editable": "github:DarKsandr/dark-editable", "date-fns": "^3.2.0", "i18next": "^23.7.16", "i18next-chained-backend": "^4.6.2", diff --git a/public/build/assets/create-46b63de1.js b/public/build/assets/create-46b63de1.js deleted file mode 100644 index 3a3ab19aec..0000000000 --- a/public/build/assets/create-46b63de1.js +++ /dev/null @@ -1 +0,0 @@ -import{a as m,d as y,f as d}from"./format-money-43e05102.js";import{d as w,c as b}from"./create-empty-split-fb5bda92.js";import{l as v,a as C,b as T,c as E,p as P,d as _,s as L,e as c,f as S,g as D,h as A,i as x,j as k,k as h,m as p}from"./splice-errors-into-transactions-9c9b99c0.js";import{l,i as r,m as B}from"./vendor-fca45885.js";import"./get-94678769.js";class M{post(t){let s="/api/v2/transactions";return m.post(s,t)}}let n=[],u=[];document.addEventListener("location-remove",e=>{u[e.detail.index].remove()});function O(e){let t=0;if(document.querySelector("#form")._x_dataStack[0].$data.entries[t].hasLocation===!1){u[t]=new l.marker(e.latlng,{draggable:!0}),u[t].on("dragend",U),u[t].addTo(n[t]);const i=new CustomEvent("location-set",{detail:{latitude:e.latlng.lat,longitude:e.latlng.lng,index:t,zoomLevel:n[t].getZoom()}});document.dispatchEvent(i)}}function F(e){let t=0;const s=new CustomEvent("location-zoom",{detail:{index:t,zoomLevel:n[t].getZoom()}});document.dispatchEvent(s)}function U(e){let t=e.target,s=t.getLatLng();t.setLatLng(new l.LatLng(s.lat,s.lng),{draggable:"true"});const i=new CustomEvent("location-move",{detail:{latitude:s.lat,longitude:s.lng,index:0}});document.dispatchEvent(i)}function z(e){if(e>0){console.warn("Corwardly refuse to add a map on split #"+(e+1));return}if(typeof n[e]>"u"){let t=document.getElementById("location_map");n[e]=l.map(t).setView([t.dataset.latitude,t.dataset.longitude],t.dataset.zoomLevel),l.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png",{maxZoom:19,attribution:'© OpenStreetMap'}).addTo(n[e]),n[e].on("click",O),n[e].on("zoomend",F)}}const a=k();let I=function(){return{entries:[],formStates:{loadingCurrencies:!0,loadingBudgets:!0,loadingPiggyBanks:!0,loadingSubscriptions:!0,isSubmitting:!1,returnHereButton:!1,saveAsNewButton:!1,resetButton:!0,rulesButton:!0,webhooksButton:!0},formBehaviour:{formType:"create",foreignCurrencyEnabled:!0},formData:{defaultCurrency:null,enabledCurrencies:[],nativeCurrencies:[],foreignCurrencies:[],budgets:[],piggyBanks:[],subscriptions:[]},groupProperties:{transactionType:"unknown",title:null,id:null,totalAmount:0},notifications:{error:{show:!1,text:"",url:""},success:{show:!1,text:"",url:""},wait:{show:!1,text:""}},filters:{source:[],destination:[]},changedDateTime(e){console.warn("changedDateTime, event is not used")},changedDescription(e){console.warn("changedDescription, event is not used")},changedDestinationAccount(e){this.detectTransactionType()},changedSourceAccount(e){this.detectTransactionType()},detectTransactionType(){const e=this.entries[0].source_account.type??"unknown",t=this.entries[0].destination_account.type??"unknown";if(e==="unknown"&&t==="unknown"){this.groupProperties.transactionType="unknown",console.warn("Cannot infer transaction type from two unknown accounts.");return}if(e===t&&["Asset account","Loan","Debt","Mortgage"].includes(e)){this.groupProperties.transactionType="transfer",console.log('Transaction type is detected to be "'+this.groupProperties.transactionType+'".'),console.log("filter down currencies for transfer."),this.filterNativeCurrencies(this.entries[0].source_account.currency_code),this.filterForeignCurrencies(this.entries[0].destination_account.currency_code);return}if(e==="Asset account"&&["Expense account","Debt","Loan","Mortgage"].includes(t)){this.groupProperties.transactionType="withdrawal",console.log('[a] Transaction type is detected to be "'+this.groupProperties.transactionType+'".'),this.filterNativeCurrencies(this.entries[0].source_account.currency_code);return}if(e==="Asset account"&&t==="unknown"){this.groupProperties.transactionType="withdrawal",console.log('[b] Transaction type is detected to be "'+this.groupProperties.transactionType+'".'),console.log(this.entries[0].source_account),this.filterNativeCurrencies(this.entries[0].source_account.currency_code);return}if(["Debt","Loan","Mortgage"].includes(e)&&t==="Expense account"){this.groupProperties.transactionType="withdrawal",console.log('[c] Transaction type is detected to be "'+this.groupProperties.transactionType+'".'),this.filterNativeCurrencies(this.entries[0].source_account.currency_code);return}if(e==="Revenue account"&&["Asset account","Debt","Loan","Mortgage"].includes(t)){this.groupProperties.transactionType="deposit",console.log('Transaction type is detected to be "'+this.groupProperties.transactionType+'".');return}if(["Debt","Loan","Mortgage"].includes(e)&&t==="Asset account"){this.groupProperties.transactionType="deposit",console.log('Transaction type is detected to be "'+this.groupProperties.transactionType+'".');return}console.warn('Unknown account combination between "'+e+'" and "'+t+'".')},formattedTotalAmount(){return this.entries.length===0?d(this.groupProperties.totalAmount,"EUR"):d(this.groupProperties.totalAmount,this.entries[0].currency_code??"EUR")},filterForeignCurrencies(e){let t=[],s;for(let i in this.formData.enabledCurrencies)if(this.formData.enabledCurrencies.hasOwnProperty(i)){let o=this.formData.enabledCurrencies[i];o.code===e&&(s=o)}t.push(s),this.formData.foreignCurrencies=t,t.length===1&&t[0].code===this.entries[0].source_account.currency_code&&(console.log("Foreign currency is same as source currency. Disable foreign amount."),this.formBehaviour.foreignCurrencyEnabled=!1),t.length===1&&t[0].code!==this.entries[0].source_account.currency_code&&(console.log("Foreign currency is NOT same as source currency. Enable foreign amount."),this.formBehaviour.foreignCurrencyEnabled=!0);for(let i in this.entries)this.entries.hasOwnProperty(i)&&(this.entries[i].foreign_currency_code=e)},filterNativeCurrencies(e){let t=[],s;for(let i in this.formData.enabledCurrencies)if(this.formData.enabledCurrencies.hasOwnProperty(i)){let o=this.formData.enabledCurrencies[i];o.code===e&&(s=o)}t.push(s),this.formData.nativeCurrencies=t;for(let i in this.entries)this.entries.hasOwnProperty(i)&&(this.entries[i].currency_code=e)},changedAmount(e){const t=parseInt(e.target.dataset.index);this.entries[t].amount=parseFloat(e.target.value),this.groupProperties.totalAmount=0;for(let s in this.entries)this.entries.hasOwnProperty(s)&&(this.groupProperties.totalAmount=this.groupProperties.totalAmount+parseFloat(this.entries[s].amount))},addedSplit(){},processUpload(e){this.showMessageOrRedirectUser()},processUploadError(e){this.notifications.success.show=!1,this.notifications.wait.show=!1,this.notifications.error.show=!0,this.formStates.isSubmitting=!1,this.notifications.error.text=r.t("firefly.errors_upload"),console.error(e)},init(){this.addSplit(),v().then(e=>{this.formStates.loadingCurrencies=!1,this.formData.defaultCurrency=e.defaultCurrency,this.formData.enabledCurrencies=e.enabledCurrencies,this.formData.nativeCurrencies=e.nativeCurrencies,this.formData.foreignCurrencies=e.foreignCurrencies}),C().then(e=>{this.formData.budgets=e,this.formStates.loadingBudgets=!1}),T().then(e=>{this.formData.piggyBanks=e,this.formStates.loadingPiggyBanks=!1}),E().then(e=>{this.formData.subscriptions=e,this.formStates.loadingSubscriptions=!1}),document.addEventListener("upload-success",e=>{this.processUpload(e),document.querySelectorAll("input[type=file]").value=""}),document.addEventListener("upload-error",e=>{this.processUploadError(e)}),document.addEventListener("location-move",e=>{this.entries[e.detail.index].latitude=e.detail.latitude,this.entries[e.detail.index].longitude=e.detail.longitude}),document.addEventListener("location-set",e=>{this.entries[e.detail.index].hasLocation=!0,this.entries[e.detail.index].latitude=e.detail.latitude,this.entries[e.detail.index].longitude=e.detail.longitude,this.entries[e.detail.index].zoomLevel=e.detail.zoomLevel}),document.addEventListener("location-zoom",e=>{this.entries[e.detail.index].hasLocation=!0,this.entries[e.detail.index].zoomLevel=e.detail.zoomLevel}),this.filters.source=["Asset account","Loan","Debt","Mortgage","Revenue account"],this.filters.destination=["Expense account","Loan","Debt","Mortgage","Asset account"]},submitTransaction(){this.notifications.error.show=!1,this.notifications.success.show=!1,this.notifications.wait.show=!1;for(let i in this.entries)this.entries.hasOwnProperty(i)&&(this.entries[i].errors=w());this.formStates.isSubmitting=!0,this.detectTransactionType();let e=P(this.entries,this.groupProperties.transactionType),t={group_title:this.groupProperties.title,fire_webhooks:this.formStates.webhooksButton,apply_rules:this.formStates.rulesButton,transactions:e};this.groupProperties.title===null&&e.length>1&&(t.group_title=e[0].description);let s=new M;console.log(t),s.post(t).then(i=>{const o=i.data.data;if(this.groupProperties.id=parseInt(o.id),this.groupProperties.title=o.attributes.group_title??o.attributes.transactions[0].description,_(this.groupProperties.id,o.attributes.transactions)>0){this.notifications.wait.show=!0,this.notifications.wait.text=r.t("firefly.wait_attachments");return}this.showMessageOrRedirectUser()}).catch(i=>{this.submitting=!1,console.log(i),typeof i.response<"u"&&this.parseErrors(i.response.data)})},showMessageOrRedirectUser(){if(this.notifications.error.show=!1,this.notifications.success.show=!1,this.notifications.wait.show=!1,this.formStates.returnHereButton){this.notifications.success.show=!0,this.notifications.success.url="transactions/show/"+this.groupProperties.id,this.notifications.success.text=r.t("firefly.stored_journal_js",{description:this.groupProperties.title}),this.formStates.resetButton&&(this.entries=[],this.addSplit(),this.groupProperties.totalAmount=0);return}window.location="transactions/show/"+this.groupProperties.id+"?transaction_group_id="+this.groupProperties.id+"&message=created"},parseErrors(e){this.notifications.error.show=!0,this.notifications.success.show=!1,this.notifications.wait.show=!1,this.formStates.isSubmitting=!1,this.notifications.error.text=r.t("firefly.errors_submission",{errorMessage:e.message}),e.hasOwnProperty("errors")&&(this.entries=L(e.errors,this.entries))},addSplit(){this.entries.push(b()),setTimeout(()=>{B.init("select.ac-tags",{allowClear:!0,server:a.tag,liveServer:!0,clearEnd:!0,allowNew:!0,notFoundMessage:r.t("firefly.nothing_found"),noCache:!0,fetchOptions:{headers:{"X-CSRF-TOKEN":document.head.querySelector('meta[name="csrf-token"]').content}}});const e=this.entries.length-1;z(e);const t=function(s,i,o){return s.name_with_balance+'
'+r.t("firefly.account_type_"+s.type)+""};c({selector:"input.ac-source",serverUrl:a.account,onChange:S,onSelectItem:D,hiddenValue:this.items[e].source_account.alpine_name}),c({selector:"input.ac-dest",serverUrl:a.account,filters:this.filters.destination,onRenderItem:t,onChange:A,onSelectItem:x}),c({selector:"input.ac-category",serverUrl:a.category,valueField:"id",labelField:"name",onChange:h,onSelectItem:h}),c({selector:"input.ac-description",serverUrl:a.description,valueField:"id",labelField:"description",onChange:p,onSelectItem:p})},150)},removeSplit(e){this.entries.splice(e,1),document.querySelector("#split-0-tab").click()},clearLocation(e){e.preventDefault();const t=e.currentTarget,s=parseInt(t.attributes["data-index"].value);this.entries[s].hasLocation=!1,this.entries[s].latitude=null,this.entries[s].longitude=null,this.entries[s].zoomLevel=null;const i=new CustomEvent("location-remove",{detail:{index:s}});return document.dispatchEvent(i),!1}}},f={transactions:I,dates:y};function g(){Object.keys(f).forEach(e=>{console.log(`Loading page component "${e}"`);let t=f[e]();Alpine.data(e,()=>t)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),g()});window.bootstrapped&&(console.log("Loaded through window variable."),g()); diff --git a/public/build/assets/create-dd6750e8.js b/public/build/assets/create-dd6750e8.js new file mode 100644 index 0000000000..9a18424d8b --- /dev/null +++ b/public/build/assets/create-dd6750e8.js @@ -0,0 +1 @@ +import{a as m,d as y,f as d}from"./format-money-a71f277a.js";import{d as w,c as b}from"./create-empty-split-b2c15454.js";import{l as v,a as C,b as T,c as E,p as P,d as _,s as L,e as c,f as S,g as D,h as A,i as x,j as k,k as h,m as p}from"./splice-errors-into-transactions-995deb6d.js";import{l,i as r,m as B}from"./vendor-0ba1deae.js";import"./get-c4c00bed.js";class M{post(t){let s="/api/v2/transactions";return m.post(s,t)}}let n=[],u=[];document.addEventListener("location-remove",e=>{u[e.detail.index].remove()});function O(e){let t=0;if(document.querySelector("#form")._x_dataStack[0].$data.entries[t].hasLocation===!1){u[t]=new l.marker(e.latlng,{draggable:!0}),u[t].on("dragend",U),u[t].addTo(n[t]);const i=new CustomEvent("location-set",{detail:{latitude:e.latlng.lat,longitude:e.latlng.lng,index:t,zoomLevel:n[t].getZoom()}});document.dispatchEvent(i)}}function F(e){let t=0;const s=new CustomEvent("location-zoom",{detail:{index:t,zoomLevel:n[t].getZoom()}});document.dispatchEvent(s)}function U(e){let t=e.target,s=t.getLatLng();t.setLatLng(new l.LatLng(s.lat,s.lng),{draggable:"true"});const i=new CustomEvent("location-move",{detail:{latitude:s.lat,longitude:s.lng,index:0}});document.dispatchEvent(i)}function z(e){if(e>0){console.warn("Corwardly refuse to add a map on split #"+(e+1));return}if(typeof n[e]>"u"){let t=document.getElementById("location_map");t&&(n[e]=l.map(t).setView([t.dataset.latitude,t.dataset.longitude],t.dataset.zoomLevel),l.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png",{maxZoom:19,attribution:'© OpenStreetMap'}).addTo(n[e]),n[e].on("click",O),n[e].on("zoomend",F))}}const a=k();let I=function(){return{entries:[],formStates:{loadingCurrencies:!0,loadingBudgets:!0,loadingPiggyBanks:!0,loadingSubscriptions:!0,isSubmitting:!1,returnHereButton:!1,saveAsNewButton:!1,resetButton:!0,rulesButton:!0,webhooksButton:!0},formBehaviour:{formType:"create",foreignCurrencyEnabled:!0},formData:{defaultCurrency:null,enabledCurrencies:[],nativeCurrencies:[],foreignCurrencies:[],budgets:[],piggyBanks:[],subscriptions:[]},groupProperties:{transactionType:"unknown",title:null,id:null,totalAmount:0},notifications:{error:{show:!1,text:"",url:""},success:{show:!1,text:"",url:""},wait:{show:!1,text:""}},filters:{source:[],destination:[]},changedDateTime(e){console.warn("changedDateTime, event is not used")},changedDescription(e){console.warn("changedDescription, event is not used")},changedDestinationAccount(e){this.detectTransactionType()},changedSourceAccount(e){this.detectTransactionType()},detectTransactionType(){const e=this.entries[0].source_account.type??"unknown",t=this.entries[0].destination_account.type??"unknown";if(e==="unknown"&&t==="unknown"){this.groupProperties.transactionType="unknown",console.warn("Cannot infer transaction type from two unknown accounts.");return}if(e===t&&["Asset account","Loan","Debt","Mortgage"].includes(e)){this.groupProperties.transactionType="transfer",console.log('Transaction type is detected to be "'+this.groupProperties.transactionType+'".'),console.log("filter down currencies for transfer."),this.filterNativeCurrencies(this.entries[0].source_account.currency_code),this.filterForeignCurrencies(this.entries[0].destination_account.currency_code);return}if(e==="Asset account"&&["Expense account","Debt","Loan","Mortgage"].includes(t)){this.groupProperties.transactionType="withdrawal",console.log('[a] Transaction type is detected to be "'+this.groupProperties.transactionType+'".'),this.filterNativeCurrencies(this.entries[0].source_account.currency_code);return}if(e==="Asset account"&&t==="unknown"){this.groupProperties.transactionType="withdrawal",console.log('[b] Transaction type is detected to be "'+this.groupProperties.transactionType+'".'),console.log(this.entries[0].source_account),this.filterNativeCurrencies(this.entries[0].source_account.currency_code);return}if(["Debt","Loan","Mortgage"].includes(e)&&t==="Expense account"){this.groupProperties.transactionType="withdrawal",console.log('[c] Transaction type is detected to be "'+this.groupProperties.transactionType+'".'),this.filterNativeCurrencies(this.entries[0].source_account.currency_code);return}if(e==="Revenue account"&&["Asset account","Debt","Loan","Mortgage"].includes(t)){this.groupProperties.transactionType="deposit",console.log('Transaction type is detected to be "'+this.groupProperties.transactionType+'".');return}if(["Debt","Loan","Mortgage"].includes(e)&&t==="Asset account"){this.groupProperties.transactionType="deposit",console.log('Transaction type is detected to be "'+this.groupProperties.transactionType+'".');return}console.warn('Unknown account combination between "'+e+'" and "'+t+'".')},formattedTotalAmount(){return this.entries.length===0?d(this.groupProperties.totalAmount,"EUR"):d(this.groupProperties.totalAmount,this.entries[0].currency_code??"EUR")},filterForeignCurrencies(e){let t=[],s;for(let i in this.formData.enabledCurrencies)if(this.formData.enabledCurrencies.hasOwnProperty(i)){let o=this.formData.enabledCurrencies[i];o.code===e&&(s=o)}t.push(s),this.formData.foreignCurrencies=t,t.length===1&&t[0].code===this.entries[0].source_account.currency_code&&(console.log("Foreign currency is same as source currency. Disable foreign amount."),this.formBehaviour.foreignCurrencyEnabled=!1),t.length===1&&t[0].code!==this.entries[0].source_account.currency_code&&(console.log("Foreign currency is NOT same as source currency. Enable foreign amount."),this.formBehaviour.foreignCurrencyEnabled=!0);for(let i in this.entries)this.entries.hasOwnProperty(i)&&(this.entries[i].foreign_currency_code=e)},filterNativeCurrencies(e){let t=[],s;for(let i in this.formData.enabledCurrencies)if(this.formData.enabledCurrencies.hasOwnProperty(i)){let o=this.formData.enabledCurrencies[i];o.code===e&&(s=o)}t.push(s),this.formData.nativeCurrencies=t;for(let i in this.entries)this.entries.hasOwnProperty(i)&&(this.entries[i].currency_code=e)},changedAmount(e){const t=parseInt(e.target.dataset.index);this.entries[t].amount=parseFloat(e.target.value),this.groupProperties.totalAmount=0;for(let s in this.entries)this.entries.hasOwnProperty(s)&&(this.groupProperties.totalAmount=this.groupProperties.totalAmount+parseFloat(this.entries[s].amount))},addedSplit(){},processUpload(e){this.showMessageOrRedirectUser()},processUploadError(e){this.notifications.success.show=!1,this.notifications.wait.show=!1,this.notifications.error.show=!0,this.formStates.isSubmitting=!1,this.notifications.error.text=r.t("firefly.errors_upload"),console.error(e)},init(){this.addSplit(),v().then(e=>{this.formStates.loadingCurrencies=!1,this.formData.defaultCurrency=e.defaultCurrency,this.formData.enabledCurrencies=e.enabledCurrencies,this.formData.nativeCurrencies=e.nativeCurrencies,this.formData.foreignCurrencies=e.foreignCurrencies}),C().then(e=>{this.formData.budgets=e,this.formStates.loadingBudgets=!1}),T().then(e=>{this.formData.piggyBanks=e,this.formStates.loadingPiggyBanks=!1}),E().then(e=>{this.formData.subscriptions=e,this.formStates.loadingSubscriptions=!1}),document.addEventListener("upload-success",e=>{this.processUpload(e),document.querySelectorAll("input[type=file]").value=""}),document.addEventListener("upload-error",e=>{this.processUploadError(e)}),document.addEventListener("location-move",e=>{this.entries[e.detail.index].latitude=e.detail.latitude,this.entries[e.detail.index].longitude=e.detail.longitude}),document.addEventListener("location-set",e=>{this.entries[e.detail.index].hasLocation=!0,this.entries[e.detail.index].latitude=e.detail.latitude,this.entries[e.detail.index].longitude=e.detail.longitude,this.entries[e.detail.index].zoomLevel=e.detail.zoomLevel}),document.addEventListener("location-zoom",e=>{this.entries[e.detail.index].hasLocation=!0,this.entries[e.detail.index].zoomLevel=e.detail.zoomLevel}),this.filters.source=["Asset account","Loan","Debt","Mortgage","Revenue account"],this.filters.destination=["Expense account","Loan","Debt","Mortgage","Asset account"]},submitTransaction(){this.notifications.error.show=!1,this.notifications.success.show=!1,this.notifications.wait.show=!1;for(let i in this.entries)this.entries.hasOwnProperty(i)&&(this.entries[i].errors=w());this.formStates.isSubmitting=!0,this.detectTransactionType();let e=P(this.entries,null,this.groupProperties.transactionType),t={group_title:this.groupProperties.title,fire_webhooks:this.formStates.webhooksButton,apply_rules:this.formStates.rulesButton,transactions:e};this.groupProperties.title===null&&e.length>1&&(t.group_title=e[0].description);let s=new M;console.log(t),s.post(t).then(i=>{const o=i.data.data;if(this.groupProperties.id=parseInt(o.id),this.groupProperties.title=o.attributes.group_title??o.attributes.transactions[0].description,_(this.groupProperties.id,o.attributes.transactions)>0){this.notifications.wait.show=!0,this.notifications.wait.text=r.t("firefly.wait_attachments");return}this.showMessageOrRedirectUser()}).catch(i=>{this.submitting=!1,console.log(i),typeof i.response<"u"&&this.parseErrors(i.response.data)})},showMessageOrRedirectUser(){if(this.notifications.error.show=!1,this.notifications.success.show=!1,this.notifications.wait.show=!1,this.formStates.returnHereButton){this.notifications.success.show=!0,this.notifications.success.url="transactions/show/"+this.groupProperties.id,this.notifications.success.text=r.t("firefly.stored_journal_js",{description:this.groupProperties.title}),this.formStates.resetButton&&(this.entries=[],this.addSplit(),this.groupProperties.totalAmount=0);return}window.location="transactions/show/"+this.groupProperties.id+"?transaction_group_id="+this.groupProperties.id+"&message=created"},parseErrors(e){this.notifications.error.show=!0,this.notifications.success.show=!1,this.notifications.wait.show=!1,this.formStates.isSubmitting=!1,this.notifications.error.text=r.t("firefly.errors_submission",{errorMessage:e.message}),e.hasOwnProperty("errors")&&(this.entries=L(e.errors,this.entries))},addSplit(){this.entries.push(b()),setTimeout(()=>{B.init("select.ac-tags",{allowClear:!0,server:a.tag,liveServer:!0,clearEnd:!0,allowNew:!0,notFoundMessage:r.t("firefly.nothing_found"),noCache:!0,fetchOptions:{headers:{"X-CSRF-TOKEN":document.head.querySelector('meta[name="csrf-token"]').content}}});const e=this.entries.length-1;z(e);const t=function(s,i,o){return s.name_with_balance+'
'+r.t("firefly.account_type_"+s.type)+""};c({selector:"input.ac-source",serverUrl:a.account,onChange:S,onSelectItem:D,hiddenValue:this.entries[e].source_account.alpine_name}),c({selector:"input.ac-dest",serverUrl:a.account,filters:this.filters.destination,onRenderItem:t,onChange:A,onSelectItem:x}),c({selector:"input.ac-category",serverUrl:a.category,valueField:"id",labelField:"name",onChange:h,onSelectItem:h}),c({selector:"input.ac-description",serverUrl:a.description,valueField:"id",labelField:"description",onChange:p,onSelectItem:p})},150)},removeSplit(e){this.entries.splice(e,1),document.querySelector("#split-0-tab").click()},clearLocation(e){e.preventDefault();const t=e.currentTarget,s=parseInt(t.attributes["data-index"].value);this.entries[s].hasLocation=!1,this.entries[s].latitude=null,this.entries[s].longitude=null,this.entries[s].zoomLevel=null;const i=new CustomEvent("location-remove",{detail:{index:s}});return document.dispatchEvent(i),!1}}},f={transactions:I,dates:y};function g(){Object.keys(f).forEach(e=>{console.log(`Loading page component "${e}"`);let t=f[e]();Alpine.data(e,()=>t)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),g()});window.bootstrapped&&(console.log("Loaded through window variable."),g()); diff --git a/public/build/assets/create-empty-split-fb5bda92.js b/public/build/assets/create-empty-split-b2c15454.js similarity index 93% rename from public/build/assets/create-empty-split-fb5bda92.js rename to public/build/assets/create-empty-split-b2c15454.js index ca74a5e066..4d1f3999b2 100644 --- a/public/build/assets/create-empty-split-fb5bda92.js +++ b/public/build/assets/create-empty-split-b2c15454.js @@ -1 +1 @@ -import{f as n}from"./vendor-fca45885.js";function e(){return{id:"",name:"",alpine_name:""}}function o(){return{description:[],amount:[],currency_code:[],foreign_amount:[],foreign_currency_code:[],source_account:[],destination_account:[],budget_id:[],category_name:[],piggy_bank_id:[],bill_id:[],tags:[],notes:[],internal_reference:[],external_url:[],latitude:[],longitude:[],zoom_level:[],date:[],interest_date:[],book_date:[],process_date:[],due_date:[],payment_date:[],invoice_date:[]}}function d(){let t=n(new Date,"yyyy-MM-dd HH:mm");return{description:"",amount:"",currency_code:"EUR",foreign_amount:"",foreign_currency_code:"",source_account:e(),destination_account:e(),budget_id:null,category_name:"",piggy_bank_id:null,bill_id:null,tags:[],notes:"",internal_reference:"",external_url:"",hasLocation:!1,latitude:null,longitude:null,zoomLevel:null,date:t,interest_date:"",book_date:"",process_date:"",due_date:"",payment_date:"",invoice_date:"",errors:o()}}export{d as c,o as d}; +import{f as n}from"./vendor-0ba1deae.js";function e(){return{id:"",name:"",alpine_name:""}}function o(){return{description:[],amount:[],currency_code:[],foreign_amount:[],foreign_currency_code:[],source_account:[],destination_account:[],budget_id:[],category_name:[],piggy_bank_id:[],bill_id:[],tags:[],notes:[],internal_reference:[],external_url:[],latitude:[],longitude:[],zoom_level:[],date:[],interest_date:[],book_date:[],process_date:[],due_date:[],payment_date:[],invoice_date:[]}}function d(){let t=n(new Date,"yyyy-MM-dd HH:mm");return{description:"",amount:"",currency_code:"EUR",foreign_amount:"",foreign_currency_code:"",source_account:e(),destination_account:e(),budget_id:null,category_name:"",piggy_bank_id:null,bill_id:null,tags:[],notes:"",internal_reference:"",external_url:"",hasLocation:!1,latitude:null,longitude:null,zoomLevel:null,date:t,interest_date:"",book_date:"",process_date:"",due_date:"",payment_date:"",invoice_date:"",errors:o()}}export{d as c,o as d}; diff --git a/public/build/assets/dashboard-2ad8d866.js b/public/build/assets/dashboard-60d58953.js similarity index 98% rename from public/build/assets/dashboard-2ad8d866.js rename to public/build/assets/dashboard-60d58953.js index e342b91eac..866382c097 100644 --- a/public/build/assets/dashboard-2ad8d866.js +++ b/public/build/assets/dashboard-60d58953.js @@ -1 +1 @@ -import{a as O,f,g as v,P as bt,d as wt}from"./format-money-43e05102.js";import{f as g,C as m,a as S,i as p,S as vt,F as mt,L as Ct,b as kt,A as Pt,B as Dt,T as xt,P as Ot,c as Mt,d as Ft,p as St,e as At,g as Bt,h as jt,j as Wt,k as It}from"./vendor-fca45885.js";import{G as $t}from"./get-a29f6df7.js";import{G as Vt,a as Kt}from"./get-94678769.js";class Lt{get(e,n,a){return O.get("/api/v2/summary/basic",{params:{start:e,end:n,code:a}})}}function P(t,e,n){const a=g(e,"y-MM-dd")+"_"+g(n,"y-MM-dd")+"_"+t;return console.log("getCacheKey: "+a),String(a)}let U=!1;const Et=()=>({balanceBox:{amounts:[],subtitles:[]},billBox:{paid:[],unpaid:[]},leftBox:{left:[],perDay:[]},netBox:{net:[]},autoConversion:!1,loading:!1,boxData:null,boxOptions:null,getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-boxes-data",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){this.boxData=r,this.generateOptions(this.boxData);return}new Lt().get(g(t,"yyyy-MM-dd"),g(e,"yyyy-MM-dd"),null).then(i=>{this.boxData=i.data,window.store.set(n,i.data),this.generateOptions(this.boxData)})},generateOptions(t){this.balanceBox={amounts:[],subtitles:[]},this.billBox={paid:[],unpaid:[]},this.leftBox={left:[],perDay:[]},this.netBox={net:[]};let e={};for(const n in t)if(t.hasOwnProperty(n)){const a=t[n];if(!a.hasOwnProperty("key"))continue;let r=a.key;if(this.autoConversion){if(r.startsWith("balance-in-native")){this.balanceBox.amounts.push(f(a.value,a.currency_code)),e.hasOwnProperty(a.currency_code)||(e[a.currency_code]="");continue}if(r.startsWith("spent-in-native")){e.hasOwnProperty(a.currency_code)||(e[a.currency_code]=""),e[a.currency_code]=e[a.currency_code]+f(a.value,a.currency_code);continue}if(r.startsWith("earned-in-native")){e.hasOwnProperty(a.currency_code)||(e[a.currency_code]=""),e[a.currency_code]=f(a.value,a.currency_code)+" + "+e[a.currency_code];continue}if(r.startsWith("bills-unpaid-in-native")){this.billBox.unpaid.push(f(a.value,a.currency_code));continue}if(r.startsWith("bills-paid-in-native")){this.billBox.paid.push(f(a.value,a.currency_code));continue}if(r.startsWith("left-to-spend-in-native")){this.leftBox.left.push(f(a.value,a.currency_code));continue}if(r.startsWith("left-per-day-to-spend-in-native")){this.leftBox.perDay.push(f(a.value,a.currency_code));continue}if(r.startsWith("net-worth-in-native")){this.netBox.net.push(f(a.value,a.currency_code));continue}}if(!this.autoConversion&&!r.endsWith("native")){if(r.startsWith("balance-in-")){this.balanceBox.amounts.push(f(a.value,a.currency_code));continue}if(r.startsWith("spent-in-")){e.hasOwnProperty(a.currency_code)||(e[a.currency_code]=""),e[a.currency_code]=e[a.currency_code]+f(a.value,a.currency_code);continue}if(r.startsWith("earned-in-")){e.hasOwnProperty(a.currency_code)||(e[a.currency_code]=""),e[a.currency_code]=f(a.value,a.currency_code)+" + "+e[a.currency_code];continue}if(r.startsWith("bills-unpaid-in-")){this.billBox.unpaid.push(f(a.value,a.currency_code));continue}if(r.startsWith("bills-paid-in-")){this.billBox.paid.push(f(a.value,a.currency_code));continue}if(r.startsWith("left-to-spend-in-")){this.leftBox.left.push(f(a.value,a.currency_code));continue}if(r.startsWith("left-per-day-to-spend-in-")){this.leftBox.perDay.push(f(a.value,a.currency_code));continue}r.startsWith("net-worth-in-")&&this.netBox.net.push(f(a.value,a.currency_code))}}for(let n in e)e.hasOwnProperty(n)&&this.balanceBox.subtitles.push(e[n]);this.loading=!1},loadBoxes(){if(this.loading!==!0){if(this.loading=!0,this.boxData===null){this.getFreshData();return}this.generateOptions(this.boxData),this.loading=!1}},init(){Promise.all([v("viewRange"),v("autoConversion",!1)]).then(t=>{U=!0,this.autoConversion=t[1],this.loadBoxes()}),window.store.observe("end",()=>{U&&(this.boxData=null,this.loadBoxes())}),window.store.observe("autoConversion",t=>{U&&(this.autoConversion=t,this.loadBoxes())})}});class Gt{put(e,n){let a="/api/v1/preferences/"+e;return O.put(a,{data:n})}}function Tt(t,e=null){window.store.set(t,e),new Gt().put(t,e).then(a=>{}).catch(()=>{new bt().post(t,e).then(r=>{})})}let Rt=class{dashboard(e,n){let a=g(e,"y-MM-dd"),r=g(n,"y-MM-dd");return O.get("/api/v2/chart/account/dashboard",{params:{start:a,end:r}})}expense(e,n){let a=g(e,"y-MM-dd"),r=g(n,"y-MM-dd");return O.get("/api/v2/chart/account/expense-dashboard",{params:{start:a,end:r}})}};class st{get(e,n){let a={date:g(n,"y-MM-dd").slice(0,10)};return n?O.get("/api/v2/accounts/"+e,{params:a}):O.get("/api/v2/accounts/"+e)}transactions(e,n){const a={page:n.page??1};return n.hasOwnProperty("start")&&(a.start=g(n.start,"y-MM-dd")),n.hasOwnProperty("end")&&(a.end=g(n.end,"y-MM-dd")),O.get("/api/v2/accounts/"+e+"/transactions",{params:a})}}function N(t){return t==="sankey"?{type:"sankey",data:{datasets:[]},options:{animations:!1}}:t==="pie"?{type:"pie",data:{datasets:[]}}:t==="column"?{type:"bar",data:{labels:[],datasets:[]},options:{plugins:{tooltip:{callbacks:{label:function(e){let n=e.dataset.currency_code;return f(e.raw,n)}}}},maintainAspectRatio:!1,scales:{}}}:t==="line"?{options:{plugins:{tooltip:{callbacks:{label:function(e){let n=e.dataset.currency_code;return f(e.raw,n)}}}},maintainAspectRatio:!1,scales:{x:{type:"time",time:{tooltipFormat:"PP"}}}},type:"line",data:{labels:[],datasets:[]}}:{}}let q=new m("#36a2eb"),I=new m("#ff6384"),G=new m("#4bc0c0"),ft=new m("#ff9f40"),qt=new m("#9966ff"),Nt=new m("#ffcd56"),Yt=new m("#c9cbcf"),lt=0;window.theme==="dark"&&(I.darken(.3).desaturate(.3),G.darken(.3).desaturate(.3),q.darken(.3).desaturate(.3),ft.darken(.3).desaturate(.3));let z=[I,ft,q,G,qt,Nt,Yt,G];function j(t,e){let n={borderColor:I.rgbString(),backgroundColor:I.rgbString()},a;switch(t){default:let o=Math.floor(lt/2)%z.length;a=new m(z[o].rgbString()),a.lighten(.38),n={borderColor:z[o].hexString(),backgroundColor:a.hexString()};break;case"spent":a=new m(q.rgbString()),a.lighten(.38),n={borderColor:q.rgbString(),backgroundColor:a.rgbString()};break;case"left":a=new m(G.rgbString()),a.lighten(.38),n={borderColor:G.rgbString(),backgroundColor:a.rgbString()};break;case"overspent":a=new m(I.rgbString()),a.lighten(.22),n={borderColor:I.rgbString(),backgroundColor:a.rgbString()};break}return lt++,e==="border"?n.borderColor:e==="background"?n.backgroundColor:"#FF0000"}let A=[],$=null,H=null,J=!1;const Ut=()=>({loading:!1,loadingAccounts:!1,accountList:[],autoConversion:!1,chartOptions:null,switchAutoConversion(){this.autoConversion=!this.autoConversion,Tt("autoConversion",this.autoConversion)},getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-accounts-chart",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){console.log(r),this.drawChart(this.generateOptions(r)),this.loading=!1;return}new Rt().dashboard(t,e,null).then(i=>{this.chartData=i.data,window.store.set(n,i.data),console.log(i.data),this.drawChart(this.generateOptions(this.chartData)),this.loading=!1})},generateOptions(t){A=[];let e=N("line");for(let n=0;n0){this.loadingAccounts=!1;return}const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-accounts-data",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){this.accountList=r,this.loadingAccounts=!1;return}const o=10;let i=0,l=0,u=[];Promise.all([v("frontpageAccounts")]).then(d=>{i=d[0].length;for(let h in d[0]){let c=d[0];if(c.hasOwnProperty(h)){let _=c[h];new st().get(_,new Date(window.store.get("end"))).then(w=>{let C=w.data.data;const yt={page:1,start:new Date(window.store.get("start")),end:new Date(window.store.get("end"))};new st().transactions(C.id,yt).then(at=>{let nt=[];for(let B=0;B=o);B++){let M=at.data.data[B],rt={title:M.attributes.group_title===null?"":M.attributes.group_title,id:M.id,transactions:[]};for(let Y=0;YB.order-M.order),this.accountList=u,this.loadingAccounts=!1,window.store.set(n,u))})})}}})},init(){Promise.all([v("viewRange","1M"),v("autoConversion",!1),v("language","en_US")]).then(t=>{this.autoConversion=t[1],J=!0,this.loadChart(),this.loadAccounts()}),window.store.observe("end",()=>{J&&(H=null,this.accountList=[],this.loadChart(),this.loadAccounts())}),window.store.observe("autoConversion",()=>{J&&(this.loadChart(),this.loadAccounts())})}});let zt=class{dashboard(e,n){let a=g(e,"y-MM-dd"),r=g(n,"y-MM-dd");return O.get("/api/v2/chart/budget/dashboard",{params:{start:a,end:r}})}},V=[],T=null,F=null,Z=!1;const Ht=()=>({loading:!1,autoConversion:!1,loadChart(){if(this.loading!==!0){if(this.loading=!0,F!==null){this.drawChart(this.generateOptions(F)),this.loading=!1;return}this.getFreshData()}},drawChart(t){if(T!==null){T.data.datasets=t.data.datasets,T.update();return}T=new S(document.querySelector("#budget-chart"),t)},getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-budgets-chart",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){F=r,this.drawChart(this.generateOptions(F)),this.loading=!1;return}new zt().dashboard(t,e,null).then(i=>{F=i.data,this.drawChart(this.generateOptions(F)),window.store.set(n,F),this.loading=!1})},generateOptions(t){V=[];let e=N("column");e.options.locale=window.store.get("locale").replace("_","-"),e.options.plugins={tooltip:{callbacks:{title:function(n){return n.label},label:function(n){let a=n.dataset.label||"";return a&&(a+=": "),a+" "+f(n.parsed.y,V[n.parsed.x]??"EUR")}}}},e.data={labels:[],datasets:[{label:p.t("firefly.spent"),data:[],borderWidth:1,stack:1,backgroundColor:j("spent","background"),borderColor:j("spent","border")},{label:p.t("firefly.left"),data:[],borderWidth:1,stack:1,backgroundColor:j("left","background"),borderColor:j("left","border")},{label:p.t("firefly.overspent"),data:[],borderWidth:1,stack:1,backgroundColor:j("overspent","background"),borderColor:j("overspent","border")}]};for(const n in t)if(t.hasOwnProperty(n)){let a=t[n],r=a.label+" ("+a.currency_code+")";e.data.labels.push(r),this.autoConversion&&(V.push(a.native_currency_code),e.data.datasets[0].data.push(parseFloat(a.native_entries.spent)*-1),e.data.datasets[1].data.push(parseFloat(a.native_entries.left)),e.data.datasets[2].data.push(parseFloat(a.native_entries.overspent))),this.autoConversion||(V.push(a.currency_code),e.data.datasets[0].data.push(parseFloat(a.entries.spent)*-1),e.data.datasets[1].data.push(parseFloat(a.entries.left)),e.data.datasets[2].data.push(parseFloat(a.entries.overspent)))}return e.options.scales={y:{ticks:{callback:function(n){return f(n,V[0]??"EUR")}}}},e},init(){Promise.all([v("autoConversion",!1)]).then(t=>{this.autoConversion=t[0],Z=!0,this.loading===!1&&this.loadChart()}),window.store.observe("end",()=>{Z&&this.loading===!1&&(F=null,this.loadChart())}),window.store.observe("autoConversion",t=>{Z&&(this.autoConversion=t,this.loading===!1&&this.loadChart())})}});class Jt{dashboard(e,n){let a=g(e,"y-MM-dd"),r=g(n,"y-MM-dd");return O.get("/api/v2/chart/category/dashboard",{params:{start:a,end:r}})}}let ut=[],K=null,W=null,Q=!1;const Zt=()=>({loading:!1,autoConversion:!1,generateOptions(t){ut=[];let e=N("column"),n={};for(const r in t)if(t.hasOwnProperty(r)){let o=t[r],i=o.currency_code;this.autoConversion&&(i=o.native_currency_code),n.hasOwnProperty(i)||(n[i]={name:i,yAxisID:"",data:{}},ut.push(i))}for(const r in t)if(t.hasOwnProperty(r)){let o=t[r],i=o.currency_code;this.autoConversion&&(i=o.native_currency_code);for(const l in n)if(n.hasOwnProperty(l)){let u=0;i===l&&(u=parseFloat(o.amount),""+o.currency_code,this.autoConversion&&(u=parseFloat(o.native_amount),""+o.native_currency_code)),n[l].data.hasOwnProperty(o.label)&&(n[l].data[o.label]=n[l].data[o.label]+u),n[l].data.hasOwnProperty(o.label)||(n[l].data[o.label]=u)}e.data.labels.includes(o.label)||e.data.labels.push(o.label)}let a=0;for(const r in n){let o="y"+r,i={label:r,currency_code:r,yAxisID:o,data:[]};for(const l in n[r].data)i.data.push(n[r].data[l]);e.data.datasets.push(i),e.options.scales.hasOwnProperty(o)||(e.options.scales[o]={beginAtZero:!0,type:"linear",position:a===1?"right":"left",ticks:{callback:function(l,u,d){return f(l,r)}}},a++)}return e},drawChart(t){if(K!==null){K.options=t.options,K.data=t.data,K.update();return}K=new S(document.querySelector("#category-chart"),t)},getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-categories-chart",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){W=r,this.drawChart(this.generateOptions(W)),this.loading=!1;return}new Jt().dashboard(t,e,null).then(i=>{W=i.data,this.drawChart(this.generateOptions(i.data)),window.store.set(n,W),this.loading=!1})},loadChart(){if(this.loading!==!0){if(this.loading=!0,W!==null){this.drawChart(this.generateOptions(W)),this.loading=!1;return}this.getFreshData()}},init(){Promise.all([v("autoConversion",!1)]).then(t=>{this.autoConversion=t[0],Q=!0,this.loadChart()}),window.store.observe("end",()=>{Q&&(this.chartData=null,this.loadChart())}),window.store.observe("autoConversion",t=>{Q&&(this.autoConversion=t,this.loadChart())})}});S.register({SankeyController:vt,Flow:mt});const ct="dashboard-sankey-data";let X=!1,R=null,D=[],y=!1,s={category:null,unknown_category:null,in:null,out:null,unknown_source:null,unknown_dest:null,unknown_account:null,expense_account:null,revenue_account:null,budget:null,unknown_budget:null,all_money:null};const dt=function(t){return t.includes(s.revenue_account)?"forestgreen":t.includes("("+s.in+",")?"green":t.includes(s.budget)||t.includes(s.unknown_budget)?"Orchid":t.includes("("+s.out+",")?"MediumOrchid":t.includes(s.all_money)?"blue":"red"};function L(t,e,n,a){if(t==="category"&&e!==null&&n==="in")return s.category+' "'+e+'" ('+s.in+(y?", "+a+")":")");if(t==="category"&&e===null&&n==="in")return s.unknown_category+" ("+s.in+(y?", "+a+")":")");if(t==="category"&&e!==null&&n==="out")return s.category+' "'+e+'" ('+s.out+(y?", "+a+")":")");if(t==="category"&&e===null&&n==="out")return s.unknown_category+" ("+s.out+(y?", "+a+")":")");if(t==="account"&&e===null&&n==="in")return s.unknown_source+(y?" ("+a+")":"");if(t==="account"&&e!==null&&n==="in")return s.revenue_account+'"'+e+'"'+(y?" ("+a+")":"");if(t==="account"&&e===null&&n==="out")return s.unknown_dest+(y?" ("+a+")":"");if(t==="account"&&e!==null&&n==="out")return s.expense_account+' "'+e+'"'+(y?" ("+a+")":"");if(t==="budget"&&e!==null)return s.budget+' "'+e+'"'+(y?" ("+a+")":"");if(t==="budget"&&e===null)return s.unknown_budget+(y?" ("+a+")":"");console.error('Cannot handle: type:"'+t+'", dir: "'+n+'"')}function E(t,e,n){if(t==="category"&&e!==null)return s.category+' "'+e+'"'+(y?" ("+n+")":"");if(t==="category"&&e===null)return s.unknown_category+(y?" ("+n+")":"");if(t==="account"&&e===null)return s.unknown_account+(y?" ("+n+")":"");if(t==="account"&&e!==null)return e+(y?" ("+n+")":"");if(t==="budget"&&e!==null)return s.budget+' "'+e+'"'+(y?" ("+n+")":"");if(t==="budget"&&e===null)return s.unknown_budget+(y?" ("+n+")":"");console.error('Cannot handle: type:"'+t+'"')}const Qt=()=>({loading:!1,autoConversion:!1,generateOptions(){let t=N("sankey"),e={},n={};for(let r in D)if(D.hasOwnProperty(r)){let o=D[r];for(let i in o.attributes.transactions)if(o.attributes.transactions.hasOwnProperty(i)){let l=o.attributes.transactions[i],u=this.autoConversion?l.native_currency_code:l.currency_code,d=this.autoConversion?parseFloat(l.native_amount):parseFloat(l.amount),h;if(l.type==="deposit"){let c=L("category",l.category_name,"in",u),_=L("account",l.source_name,"in",u);n[c]=E("category",l.category_name,u),n[_]=E("account",l.source_name,u),h=_+"-"+c+"-"+u,e.hasOwnProperty(h)||(e[h]={from:_,to:c,amount:0}),e[h].amount+=d,h=c+"-"+s.all_money+"-"+u,e.hasOwnProperty(h)||(e[h]={from:c,to:s.all_money+(this.autoConversion?" ("+u+")":""),amount:0}),e[h].amount+=d}if(l.type==="withdrawal"){let c=L("budget",l.budget_name,"out",u);n[c]=E("budget",l.budget_name,u),h=s.all_money+"-"+c+"-"+u,e.hasOwnProperty(h)||(e[h]={from:s.all_money+(this.autoConversion?" ("+u+")":""),to:c,amount:0}),e[h].amount+=d;let _=L("category",l.category_name,"out",u);n[_]=E("category",l.category_name,u),h=c+"-"+_+"-"+u,e.hasOwnProperty(h)||(e[h]={from:c,to:_,amount:0}),e[h].amount+=d;let w=L("account",l.destination_name,"out",u);n[w]=E("account",l.destination_name,u),h=_+"-"+w+"-"+u,e.hasOwnProperty(h)||(e[h]={from:_,to:w,amount:0}),e[h].amount+=d}}}let a={label:"Firefly III dashboard sankey chart",data:[],colorFrom:r=>dt(r.dataset.data[r.dataIndex]?r.dataset.data[r.dataIndex].from:""),colorTo:r=>dt(r.dataset.data[r.dataIndex]?r.dataset.data[r.dataIndex].to:""),colorMode:"gradient",labels:n,size:"min"};for(let r in e)if(e.hasOwnProperty(r)){let o=e[r];a.data.push({from:o.from,to:o.to,flow:o.amount})}return t.data.datasets.push(a),t},drawChart(t){if(R!==null){R.data.datasets=t.data.datasets,R.update();return}R=new S(document.querySelector("#sankey-chart"),t)},getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P(ct,t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){D=r,this.drawChart(this.generateOptions()),this.loading=!1;return}let o={start:g(t,"y-MM-dd"),end:g(e,"y-MM-dd"),type:"withdrawal,deposit",page:1};this.downloadTransactions(o)},downloadTransactions(t){const e=new Date(window.store.get("start")),n=new Date(window.store.get("end")),a=P(ct,e,n);new $t().list(t).then(o=>{if(D=[...D,...o.data.data],parseInt(o.data.meta.pagination.total_pages)>t.page){t.page++,this.downloadTransactions(t);return}window.store.set(a,D),this.drawChart(this.generateOptions()),this.loading=!1})},loadChart(){if(this.loading!==!0){if(this.loading=!0,D.length!==0){this.drawChart(this.generateOptions()),this.loading=!1;return}this.getFreshData()}},init(){D=[],Promise.all([v("autoConversion",!1)]).then(t=>{this.autoConversion=t[0],y=t[0],s.all_money=p.t("firefly.all_money"),s.category=p.t("firefly.category"),s.in=p.t("firefly.money_flowing_in"),s.out=p.t("firefly.money_flowing_out"),s.unknown_category=p.t("firefly.unknown_category_plain"),s.unknown_source=p.t("firefly.unknown_source_plain"),s.unknown_dest=p.t("firefly.unknown_dest_plain"),s.unknown_account=p.t("firefly.unknown_any_plain"),s.unknown_budget=p.t("firefly.unknown_budget_plain"),s.expense_account=p.t("firefly.expense_account"),s.revenue_account=p.t("firefly.revenue_account"),s.budget=p.t("firefly.budget"),X=!0,this.loadChart()}),window.store.observe("end",()=>{X&&(this.transactions=[],this.loadChart())}),window.store.observe("autoConversion",t=>{X&&(this.autoConversion=t,this.loadChart())})}});let tt=!1,b={};function gt(t){return new Vt().list(t).then(n=>{let a=n.data.data;for(let r in a)if(a.hasOwnProperty(r)){let o=a[r];if(o.attributes.active&&o.attributes.pay_dates.length>0){let i=o.attributes.object_group_id===null?0:o.attributes.object_group_id,l=o.attributes.object_group_title===null?p.t("firefly.default_group_title_name_plain"):o.attributes.object_group_title,u=o.attributes.object_group_order===null?0:o.attributes.object_group_order;b.hasOwnProperty(i)||(b[i]={id:i,title:l,order:u,payment_info:{},bills:[]});let d={id:o.id,name:o.attributes.name,amount_min:o.attributes.amount_min,amount_max:o.attributes.amount_max,amount:(parseFloat(o.attributes.amount_max)+parseFloat(o.attributes.amount_min))/2,currency_code:o.attributes.currency_code,native_amount_min:o.attributes.native_amount_min,native_amount_max:o.attributes.native_amount_max,native_amount:(parseFloat(o.attributes.native_amount_max)+parseFloat(o.attributes.native_amount_min))/2,native_currency_code:o.attributes.native_currency_code,transactions:[],pay_dates:o.attributes.pay_dates,paid:o.attributes.paid_dates.length>0};d.expected_amount=t.autoConversion?f(d.native_amount,d.native_currency_code):f(d.amount,d.currency_code),d.expected_times=p.t("firefly.subscr_expected_x_times",{times:o.attributes.pay_dates.length,amount:d.expected_amount});for(let h in o.attributes.paid_dates)if(o.attributes.paid_dates.hasOwnProperty(h)){const c=o.attributes.paid_dates[h];let _=100;t.autoConversion&&(_=Math.round(-100+parseFloat(c.native_amount)*-1/parseFloat(d.native_amount)*100)),t.autoConversion||(_=Math.round(-100+parseFloat(c.amount)*-1/parseFloat(d.amount)*100));let w={amount:t.autoConversion?f(c.native_amount,c.native_currency_code):f(c.amount,c.currency_code),percentage:_,date:g(new Date(c.date),"PP"),foreign_amount:null};c.foreign_currency_code!==null&&(w.foreign_amount=t.autoConversion?c.foreign_native_amount:c.foreign_amount,w.foreign_currency_code=t.autoConversion?c.native_currency_code:c.foreign_currency_code),d.transactions.push(w)}if(b[i].bills.push(d),o.attributes.paid_dates.length===0){const h=o.attributes.pay_dates.length*d.amount,c=o.attributes.pay_dates.length*d.native_amount;b[i].payment_info.hasOwnProperty(d.currency_code)||(b[i].payment_info[d.currency_code]={currency_code:d.currency_code,paid:0,unpaid:0,native_currency_code:d.native_currency_code,native_paid:0,native_unpaid:0}),b[i].payment_info[d.currency_code].unpaid+=h,b[i].payment_info[d.currency_code].native_unpaid+=c}if(o.attributes.paid_dates.length>0){for(let h in o.attributes.paid_dates)if(o.attributes.paid_dates.hasOwnProperty(h)){let c=o.attributes.paid_dates[h];b[i].payment_info.hasOwnProperty(c.currency_code)||(b[i].payment_info[c.currency_code]={currency_code:d.currency_code,paid:0,unpaid:0,native_currency_code:d.native_currency_code,native_paid:0,native_unpaid:0});const _=parseFloat(c.amount)*-1,w=parseFloat(c.native_amount)*-1;b[i].payment_info[c.currency_code].paid+=_,b[i].payment_info[c.currency_code].native_paid+=w}}}}return parseInt(n.data.meta.pagination.total_pages)>t.page?(t.page++,gt(t)):Promise.resolve()})}const Xt=()=>({loading:!1,autoConversion:!1,subscriptions:[],startSubscriptions(){this.loading=!0;let t=new Date(window.store.get("start")),e=new Date(window.store.get("end"));const n=window.store.get("cacheValid");let a=window.store.get(P("subscriptions-data-dashboard",t,e));n&&typeof a<"u",b={},this.subscriptions=[];let r={start:g(t,"y-MM-dd"),end:g(e,"y-MM-dd"),autoConversion:this.autoConversion,page:1};gt(r).then(()=>{let o=Object.values(b);for(let i in o)if(o.hasOwnProperty(i)){let l=o[i];const u=Object.keys(l.payment_info);l.col_size=u.length===1?"col-6 offset-3":"col-6",l.chart_width=u.length===1?"50%":"100%",l.payment_length=u.length,this.subscriptions.push(l)}this.loading=!1})},drawPieChart(t,e,n){let a="#pie_"+t+"_"+n.currency_code;const r=this.autoConversion?n.native_unpaid:n.unpaid,o=this.autoConversion?n.native_paid:n.paid,i=this.autoConversion?n.native_currency_code:n.currency_code,u={type:"doughnut",data:{labels:[p.t("firefly.paid"),p.t("firefly.unpaid")],datasets:[{label:p.t("firefly.subscriptions_in_group",{title:e}),data:[o,r],backgroundColor:["rgb(54, 162, 235)","rgb(255, 99, 132)"],hoverOffset:4}]},options:{plugins:{tooltip:{callbacks:{label:function(h){return h.dataset.label+": "+f(h.raw,i)}}}}}};var d=S.getChart(document.querySelector(a));typeof d<"u"&&d.destroy(),new S(document.querySelector(a),u)},init(){Promise.all([v("autoConversion",!1)]).then(t=>{this.autoConversion=t[0],tt=!0,this.loading===!1&&this.startSubscriptions()}),window.store.observe("end",()=>{tt&&this.loading===!1&&this.startSubscriptions()}),window.store.observe("autoConversion",t=>{tt&&(this.autoConversion=t,this.loading===!1&&this.startSubscriptions())})}});let x={},et=!1;const ht="dashboard-piggies-data",te=()=>({loading:!1,autoConversion:!1,sankeyGrouping:"account",piggies:[],getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P(ht,t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){x=r,this.parsePiggies(),this.loading=!1;return}let o={start:g(t,"y-MM-dd"),end:g(e,"y-MM-dd"),page:1};this.downloadPiggyBanks(o)},downloadPiggyBanks(t){const e=new Date(window.store.get("start")),n=new Date(window.store.get("end")),a=P(ht,e,n);new Kt().list(t).then(o=>{if(x=[...x,...o.data.data],parseInt(o.data.meta.pagination.total_pages)>t.page){t.page++,this.downloadPiggyBanks(t);return}window.store.set(a,x),this.parsePiggies(),this.loading=!1})},parsePiggies(){let t=[];for(let e in x)if(x.hasOwnProperty(e)){let n=x[e];if(n.attributes.percentage>=100||n.attributes.percentage===0)continue;let a=n.object_group_title??p.t("firefly.default_group_title_name_plain");t.hasOwnProperty(a)||(t[a]={id:n.object_group_id??0,title:a,order:n.object_group_order??0,piggies:[]});let r={id:n.id,name:n.attributes.name,percentage:parseInt(n.attributes.percentage),amount:this.autoConversion?n.attributes.native_current_amount:n.attributes.current_amount,left_to_save:this.autoConversion?n.attributes.native_left_to_save:n.attributes.left_to_save,target_amount:this.autoConversion?n.attributes.native_target_amount:n.attributes.target_amount,save_per_month:this.autoConversion?n.attributes.native_save_per_month:n.attributes.save_per_month,currency_code:this.autoConversion?n.attributes.native_currency_code:n.attributes.currency_code};t[a].piggies.push(r)}this.piggies=Object.values(t)},loadPiggyBanks(){if(this.loading!==!0){if(this.loading=!0,this.piggies.length!==0){this.parsePiggies(),this.loading=!1;return}this.getFreshData()}},init(){x=[],Promise.all([v("autoConversion",!1)]).then(t=>{et=!0,this.autoConversion=t[0],this.loadPiggyBanks()}),window.store.observe("end",()=>{et&&(x=[],this.loadPiggyBanks())}),window.store.observe("autoConversion",t=>{et&&(this.autoConversion=t,this.loadPiggyBanks())})}});S.register({LineController:Ct,LineElement:kt,ArcElement:Pt,BarController:Dt,TimeScale:xt,PieController:Ot,BarElement:Mt,Filler:Ft,Colors:St,LinearScale:At,CategoryScale:Bt,PointElement:jt,Tooltip:Wt,Legend:It});const pt={dates:wt,boxes:Et,accounts:Ut,budgets:Ht,categories:Zt,sankey:Qt,subscriptions:Xt,piggies:te};function _t(t){Object.keys(t).forEach(e=>{let n=t[e]();Alpine.data(e,()=>n)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),_t(pt)});window.bootstrapped&&(console.log("Loaded through window variable."),_t(pt)); +import{a as O,f,g as v,P as bt,d as wt}from"./format-money-a71f277a.js";import{f as g,C as m,a as S,i as p,S as vt,F as mt,L as Ct,b as kt,A as Pt,B as Dt,T as xt,P as Ot,c as Mt,d as Ft,p as St,e as At,g as Bt,h as jt,j as Wt,k as It}from"./vendor-0ba1deae.js";import{G as $t}from"./get-971543fd.js";import{G as Vt,a as Kt}from"./get-c4c00bed.js";class Lt{get(e,n,a){return O.get("/api/v2/summary/basic",{params:{start:e,end:n,code:a}})}}function P(t,e,n){const a=g(e,"y-MM-dd")+"_"+g(n,"y-MM-dd")+"_"+t;return console.log("getCacheKey: "+a),String(a)}let U=!1;const Et=()=>({balanceBox:{amounts:[],subtitles:[]},billBox:{paid:[],unpaid:[]},leftBox:{left:[],perDay:[]},netBox:{net:[]},autoConversion:!1,loading:!1,boxData:null,boxOptions:null,getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-boxes-data",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){this.boxData=r,this.generateOptions(this.boxData);return}new Lt().get(g(t,"yyyy-MM-dd"),g(e,"yyyy-MM-dd"),null).then(i=>{this.boxData=i.data,window.store.set(n,i.data),this.generateOptions(this.boxData)})},generateOptions(t){this.balanceBox={amounts:[],subtitles:[]},this.billBox={paid:[],unpaid:[]},this.leftBox={left:[],perDay:[]},this.netBox={net:[]};let e={};for(const n in t)if(t.hasOwnProperty(n)){const a=t[n];if(!a.hasOwnProperty("key"))continue;let r=a.key;if(this.autoConversion){if(r.startsWith("balance-in-native")){this.balanceBox.amounts.push(f(a.value,a.currency_code)),e.hasOwnProperty(a.currency_code)||(e[a.currency_code]="");continue}if(r.startsWith("spent-in-native")){e.hasOwnProperty(a.currency_code)||(e[a.currency_code]=""),e[a.currency_code]=e[a.currency_code]+f(a.value,a.currency_code);continue}if(r.startsWith("earned-in-native")){e.hasOwnProperty(a.currency_code)||(e[a.currency_code]=""),e[a.currency_code]=f(a.value,a.currency_code)+" + "+e[a.currency_code];continue}if(r.startsWith("bills-unpaid-in-native")){this.billBox.unpaid.push(f(a.value,a.currency_code));continue}if(r.startsWith("bills-paid-in-native")){this.billBox.paid.push(f(a.value,a.currency_code));continue}if(r.startsWith("left-to-spend-in-native")){this.leftBox.left.push(f(a.value,a.currency_code));continue}if(r.startsWith("left-per-day-to-spend-in-native")){this.leftBox.perDay.push(f(a.value,a.currency_code));continue}if(r.startsWith("net-worth-in-native")){this.netBox.net.push(f(a.value,a.currency_code));continue}}if(!this.autoConversion&&!r.endsWith("native")){if(r.startsWith("balance-in-")){this.balanceBox.amounts.push(f(a.value,a.currency_code));continue}if(r.startsWith("spent-in-")){e.hasOwnProperty(a.currency_code)||(e[a.currency_code]=""),e[a.currency_code]=e[a.currency_code]+f(a.value,a.currency_code);continue}if(r.startsWith("earned-in-")){e.hasOwnProperty(a.currency_code)||(e[a.currency_code]=""),e[a.currency_code]=f(a.value,a.currency_code)+" + "+e[a.currency_code];continue}if(r.startsWith("bills-unpaid-in-")){this.billBox.unpaid.push(f(a.value,a.currency_code));continue}if(r.startsWith("bills-paid-in-")){this.billBox.paid.push(f(a.value,a.currency_code));continue}if(r.startsWith("left-to-spend-in-")){this.leftBox.left.push(f(a.value,a.currency_code));continue}if(r.startsWith("left-per-day-to-spend-in-")){this.leftBox.perDay.push(f(a.value,a.currency_code));continue}r.startsWith("net-worth-in-")&&this.netBox.net.push(f(a.value,a.currency_code))}}for(let n in e)e.hasOwnProperty(n)&&this.balanceBox.subtitles.push(e[n]);this.loading=!1},loadBoxes(){if(this.loading!==!0){if(this.loading=!0,this.boxData===null){this.getFreshData();return}this.generateOptions(this.boxData),this.loading=!1}},init(){Promise.all([v("viewRange"),v("autoConversion",!1)]).then(t=>{U=!0,this.autoConversion=t[1],this.loadBoxes()}),window.store.observe("end",()=>{U&&(this.boxData=null,this.loadBoxes())}),window.store.observe("autoConversion",t=>{U&&(this.autoConversion=t,this.loadBoxes())})}});class Gt{put(e,n){let a="/api/v1/preferences/"+e;return O.put(a,{data:n})}}function Tt(t,e=null){window.store.set(t,e),new Gt().put(t,e).then(a=>{}).catch(()=>{new bt().post(t,e).then(r=>{})})}let Rt=class{dashboard(e,n){let a=g(e,"y-MM-dd"),r=g(n,"y-MM-dd");return O.get("/api/v2/chart/account/dashboard",{params:{start:a,end:r}})}expense(e,n){let a=g(e,"y-MM-dd"),r=g(n,"y-MM-dd");return O.get("/api/v2/chart/account/expense-dashboard",{params:{start:a,end:r}})}};class st{get(e,n){let a={date:g(n,"y-MM-dd").slice(0,10)};return n?O.get("/api/v2/accounts/"+e,{params:a}):O.get("/api/v2/accounts/"+e)}transactions(e,n){const a={page:n.page??1};return n.hasOwnProperty("start")&&(a.start=g(n.start,"y-MM-dd")),n.hasOwnProperty("end")&&(a.end=g(n.end,"y-MM-dd")),O.get("/api/v2/accounts/"+e+"/transactions",{params:a})}}function N(t){return t==="sankey"?{type:"sankey",data:{datasets:[]},options:{animations:!1}}:t==="pie"?{type:"pie",data:{datasets:[]}}:t==="column"?{type:"bar",data:{labels:[],datasets:[]},options:{plugins:{tooltip:{callbacks:{label:function(e){let n=e.dataset.currency_code;return f(e.raw,n)}}}},maintainAspectRatio:!1,scales:{}}}:t==="line"?{options:{plugins:{tooltip:{callbacks:{label:function(e){let n=e.dataset.currency_code;return f(e.raw,n)}}}},maintainAspectRatio:!1,scales:{x:{type:"time",time:{tooltipFormat:"PP"}}}},type:"line",data:{labels:[],datasets:[]}}:{}}let q=new m("#36a2eb"),I=new m("#ff6384"),G=new m("#4bc0c0"),ft=new m("#ff9f40"),qt=new m("#9966ff"),Nt=new m("#ffcd56"),Yt=new m("#c9cbcf"),lt=0;window.theme==="dark"&&(I.darken(.3).desaturate(.3),G.darken(.3).desaturate(.3),q.darken(.3).desaturate(.3),ft.darken(.3).desaturate(.3));let z=[I,ft,q,G,qt,Nt,Yt,G];function j(t,e){let n={borderColor:I.rgbString(),backgroundColor:I.rgbString()},a;switch(t){default:let o=Math.floor(lt/2)%z.length;a=new m(z[o].rgbString()),a.lighten(.38),n={borderColor:z[o].hexString(),backgroundColor:a.hexString()};break;case"spent":a=new m(q.rgbString()),a.lighten(.38),n={borderColor:q.rgbString(),backgroundColor:a.rgbString()};break;case"left":a=new m(G.rgbString()),a.lighten(.38),n={borderColor:G.rgbString(),backgroundColor:a.rgbString()};break;case"overspent":a=new m(I.rgbString()),a.lighten(.22),n={borderColor:I.rgbString(),backgroundColor:a.rgbString()};break}return lt++,e==="border"?n.borderColor:e==="background"?n.backgroundColor:"#FF0000"}let A=[],$=null,H=null,J=!1;const Ut=()=>({loading:!1,loadingAccounts:!1,accountList:[],autoConversion:!1,chartOptions:null,switchAutoConversion(){this.autoConversion=!this.autoConversion,Tt("autoConversion",this.autoConversion)},getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-accounts-chart",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){console.log(r),this.drawChart(this.generateOptions(r)),this.loading=!1;return}new Rt().dashboard(t,e,null).then(i=>{this.chartData=i.data,window.store.set(n,i.data),console.log(i.data),this.drawChart(this.generateOptions(this.chartData)),this.loading=!1})},generateOptions(t){A=[];let e=N("line");for(let n=0;n0){this.loadingAccounts=!1;return}const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-accounts-data",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){this.accountList=r,this.loadingAccounts=!1;return}const o=10;let i=0,l=0,u=[];Promise.all([v("frontpageAccounts")]).then(d=>{i=d[0].length;for(let h in d[0]){let c=d[0];if(c.hasOwnProperty(h)){let _=c[h];new st().get(_,new Date(window.store.get("end"))).then(w=>{let C=w.data.data;const yt={page:1,start:new Date(window.store.get("start")),end:new Date(window.store.get("end"))};new st().transactions(C.id,yt).then(at=>{let nt=[];for(let B=0;B=o);B++){let M=at.data.data[B],rt={title:M.attributes.group_title===null?"":M.attributes.group_title,id:M.id,transactions:[]};for(let Y=0;YB.order-M.order),this.accountList=u,this.loadingAccounts=!1,window.store.set(n,u))})})}}})},init(){Promise.all([v("viewRange","1M"),v("autoConversion",!1),v("language","en_US")]).then(t=>{this.autoConversion=t[1],J=!0,this.loadChart(),this.loadAccounts()}),window.store.observe("end",()=>{J&&(H=null,this.accountList=[],this.loadChart(),this.loadAccounts())}),window.store.observe("autoConversion",()=>{J&&(this.loadChart(),this.loadAccounts())})}});let zt=class{dashboard(e,n){let a=g(e,"y-MM-dd"),r=g(n,"y-MM-dd");return O.get("/api/v2/chart/budget/dashboard",{params:{start:a,end:r}})}},V=[],T=null,F=null,Z=!1;const Ht=()=>({loading:!1,autoConversion:!1,loadChart(){if(this.loading!==!0){if(this.loading=!0,F!==null){this.drawChart(this.generateOptions(F)),this.loading=!1;return}this.getFreshData()}},drawChart(t){if(T!==null){T.data.datasets=t.data.datasets,T.update();return}T=new S(document.querySelector("#budget-chart"),t)},getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-budgets-chart",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){F=r,this.drawChart(this.generateOptions(F)),this.loading=!1;return}new zt().dashboard(t,e,null).then(i=>{F=i.data,this.drawChart(this.generateOptions(F)),window.store.set(n,F),this.loading=!1})},generateOptions(t){V=[];let e=N("column");e.options.locale=window.store.get("locale").replace("_","-"),e.options.plugins={tooltip:{callbacks:{title:function(n){return n.label},label:function(n){let a=n.dataset.label||"";return a&&(a+=": "),a+" "+f(n.parsed.y,V[n.parsed.x]??"EUR")}}}},e.data={labels:[],datasets:[{label:p.t("firefly.spent"),data:[],borderWidth:1,stack:1,backgroundColor:j("spent","background"),borderColor:j("spent","border")},{label:p.t("firefly.left"),data:[],borderWidth:1,stack:1,backgroundColor:j("left","background"),borderColor:j("left","border")},{label:p.t("firefly.overspent"),data:[],borderWidth:1,stack:1,backgroundColor:j("overspent","background"),borderColor:j("overspent","border")}]};for(const n in t)if(t.hasOwnProperty(n)){let a=t[n],r=a.label+" ("+a.currency_code+")";e.data.labels.push(r),this.autoConversion&&(V.push(a.native_currency_code),e.data.datasets[0].data.push(parseFloat(a.native_entries.spent)*-1),e.data.datasets[1].data.push(parseFloat(a.native_entries.left)),e.data.datasets[2].data.push(parseFloat(a.native_entries.overspent))),this.autoConversion||(V.push(a.currency_code),e.data.datasets[0].data.push(parseFloat(a.entries.spent)*-1),e.data.datasets[1].data.push(parseFloat(a.entries.left)),e.data.datasets[2].data.push(parseFloat(a.entries.overspent)))}return e.options.scales={y:{ticks:{callback:function(n){return f(n,V[0]??"EUR")}}}},e},init(){Promise.all([v("autoConversion",!1)]).then(t=>{this.autoConversion=t[0],Z=!0,this.loading===!1&&this.loadChart()}),window.store.observe("end",()=>{Z&&this.loading===!1&&(F=null,this.loadChart())}),window.store.observe("autoConversion",t=>{Z&&(this.autoConversion=t,this.loading===!1&&this.loadChart())})}});class Jt{dashboard(e,n){let a=g(e,"y-MM-dd"),r=g(n,"y-MM-dd");return O.get("/api/v2/chart/category/dashboard",{params:{start:a,end:r}})}}let ut=[],K=null,W=null,Q=!1;const Zt=()=>({loading:!1,autoConversion:!1,generateOptions(t){ut=[];let e=N("column"),n={};for(const r in t)if(t.hasOwnProperty(r)){let o=t[r],i=o.currency_code;this.autoConversion&&(i=o.native_currency_code),n.hasOwnProperty(i)||(n[i]={name:i,yAxisID:"",data:{}},ut.push(i))}for(const r in t)if(t.hasOwnProperty(r)){let o=t[r],i=o.currency_code;this.autoConversion&&(i=o.native_currency_code);for(const l in n)if(n.hasOwnProperty(l)){let u=0;i===l&&(u=parseFloat(o.amount),""+o.currency_code,this.autoConversion&&(u=parseFloat(o.native_amount),""+o.native_currency_code)),n[l].data.hasOwnProperty(o.label)&&(n[l].data[o.label]=n[l].data[o.label]+u),n[l].data.hasOwnProperty(o.label)||(n[l].data[o.label]=u)}e.data.labels.includes(o.label)||e.data.labels.push(o.label)}let a=0;for(const r in n){let o="y"+r,i={label:r,currency_code:r,yAxisID:o,data:[]};for(const l in n[r].data)i.data.push(n[r].data[l]);e.data.datasets.push(i),e.options.scales.hasOwnProperty(o)||(e.options.scales[o]={beginAtZero:!0,type:"linear",position:a===1?"right":"left",ticks:{callback:function(l,u,d){return f(l,r)}}},a++)}return e},drawChart(t){if(K!==null){K.options=t.options,K.data=t.data,K.update();return}K=new S(document.querySelector("#category-chart"),t)},getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P("dashboard-categories-chart",t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){W=r,this.drawChart(this.generateOptions(W)),this.loading=!1;return}new Jt().dashboard(t,e,null).then(i=>{W=i.data,this.drawChart(this.generateOptions(i.data)),window.store.set(n,W),this.loading=!1})},loadChart(){if(this.loading!==!0){if(this.loading=!0,W!==null){this.drawChart(this.generateOptions(W)),this.loading=!1;return}this.getFreshData()}},init(){Promise.all([v("autoConversion",!1)]).then(t=>{this.autoConversion=t[0],Q=!0,this.loadChart()}),window.store.observe("end",()=>{Q&&(this.chartData=null,this.loadChart())}),window.store.observe("autoConversion",t=>{Q&&(this.autoConversion=t,this.loadChart())})}});S.register({SankeyController:vt,Flow:mt});const ct="dashboard-sankey-data";let X=!1,R=null,D=[],y=!1,s={category:null,unknown_category:null,in:null,out:null,unknown_source:null,unknown_dest:null,unknown_account:null,expense_account:null,revenue_account:null,budget:null,unknown_budget:null,all_money:null};const dt=function(t){return t.includes(s.revenue_account)?"forestgreen":t.includes("("+s.in+",")?"green":t.includes(s.budget)||t.includes(s.unknown_budget)?"Orchid":t.includes("("+s.out+",")?"MediumOrchid":t.includes(s.all_money)?"blue":"red"};function L(t,e,n,a){if(t==="category"&&e!==null&&n==="in")return s.category+' "'+e+'" ('+s.in+(y?", "+a+")":")");if(t==="category"&&e===null&&n==="in")return s.unknown_category+" ("+s.in+(y?", "+a+")":")");if(t==="category"&&e!==null&&n==="out")return s.category+' "'+e+'" ('+s.out+(y?", "+a+")":")");if(t==="category"&&e===null&&n==="out")return s.unknown_category+" ("+s.out+(y?", "+a+")":")");if(t==="account"&&e===null&&n==="in")return s.unknown_source+(y?" ("+a+")":"");if(t==="account"&&e!==null&&n==="in")return s.revenue_account+'"'+e+'"'+(y?" ("+a+")":"");if(t==="account"&&e===null&&n==="out")return s.unknown_dest+(y?" ("+a+")":"");if(t==="account"&&e!==null&&n==="out")return s.expense_account+' "'+e+'"'+(y?" ("+a+")":"");if(t==="budget"&&e!==null)return s.budget+' "'+e+'"'+(y?" ("+a+")":"");if(t==="budget"&&e===null)return s.unknown_budget+(y?" ("+a+")":"");console.error('Cannot handle: type:"'+t+'", dir: "'+n+'"')}function E(t,e,n){if(t==="category"&&e!==null)return s.category+' "'+e+'"'+(y?" ("+n+")":"");if(t==="category"&&e===null)return s.unknown_category+(y?" ("+n+")":"");if(t==="account"&&e===null)return s.unknown_account+(y?" ("+n+")":"");if(t==="account"&&e!==null)return e+(y?" ("+n+")":"");if(t==="budget"&&e!==null)return s.budget+' "'+e+'"'+(y?" ("+n+")":"");if(t==="budget"&&e===null)return s.unknown_budget+(y?" ("+n+")":"");console.error('Cannot handle: type:"'+t+'"')}const Qt=()=>({loading:!1,autoConversion:!1,generateOptions(){let t=N("sankey"),e={},n={};for(let r in D)if(D.hasOwnProperty(r)){let o=D[r];for(let i in o.attributes.transactions)if(o.attributes.transactions.hasOwnProperty(i)){let l=o.attributes.transactions[i],u=this.autoConversion?l.native_currency_code:l.currency_code,d=this.autoConversion?parseFloat(l.native_amount):parseFloat(l.amount),h;if(l.type==="deposit"){let c=L("category",l.category_name,"in",u),_=L("account",l.source_name,"in",u);n[c]=E("category",l.category_name,u),n[_]=E("account",l.source_name,u),h=_+"-"+c+"-"+u,e.hasOwnProperty(h)||(e[h]={from:_,to:c,amount:0}),e[h].amount+=d,h=c+"-"+s.all_money+"-"+u,e.hasOwnProperty(h)||(e[h]={from:c,to:s.all_money+(this.autoConversion?" ("+u+")":""),amount:0}),e[h].amount+=d}if(l.type==="withdrawal"){let c=L("budget",l.budget_name,"out",u);n[c]=E("budget",l.budget_name,u),h=s.all_money+"-"+c+"-"+u,e.hasOwnProperty(h)||(e[h]={from:s.all_money+(this.autoConversion?" ("+u+")":""),to:c,amount:0}),e[h].amount+=d;let _=L("category",l.category_name,"out",u);n[_]=E("category",l.category_name,u),h=c+"-"+_+"-"+u,e.hasOwnProperty(h)||(e[h]={from:c,to:_,amount:0}),e[h].amount+=d;let w=L("account",l.destination_name,"out",u);n[w]=E("account",l.destination_name,u),h=_+"-"+w+"-"+u,e.hasOwnProperty(h)||(e[h]={from:_,to:w,amount:0}),e[h].amount+=d}}}let a={label:"Firefly III dashboard sankey chart",data:[],colorFrom:r=>dt(r.dataset.data[r.dataIndex]?r.dataset.data[r.dataIndex].from:""),colorTo:r=>dt(r.dataset.data[r.dataIndex]?r.dataset.data[r.dataIndex].to:""),colorMode:"gradient",labels:n,size:"min"};for(let r in e)if(e.hasOwnProperty(r)){let o=e[r];a.data.push({from:o.from,to:o.to,flow:o.amount})}return t.data.datasets.push(a),t},drawChart(t){if(R!==null){R.data.datasets=t.data.datasets,R.update();return}R=new S(document.querySelector("#sankey-chart"),t)},getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P(ct,t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){D=r,this.drawChart(this.generateOptions()),this.loading=!1;return}let o={start:g(t,"y-MM-dd"),end:g(e,"y-MM-dd"),type:"withdrawal,deposit",page:1};this.downloadTransactions(o)},downloadTransactions(t){const e=new Date(window.store.get("start")),n=new Date(window.store.get("end")),a=P(ct,e,n);new $t().list(t).then(o=>{if(D=[...D,...o.data.data],parseInt(o.data.meta.pagination.total_pages)>t.page){t.page++,this.downloadTransactions(t);return}window.store.set(a,D),this.drawChart(this.generateOptions()),this.loading=!1})},loadChart(){if(this.loading!==!0){if(this.loading=!0,D.length!==0){this.drawChart(this.generateOptions()),this.loading=!1;return}this.getFreshData()}},init(){D=[],Promise.all([v("autoConversion",!1)]).then(t=>{this.autoConversion=t[0],y=t[0],s.all_money=p.t("firefly.all_money"),s.category=p.t("firefly.category"),s.in=p.t("firefly.money_flowing_in"),s.out=p.t("firefly.money_flowing_out"),s.unknown_category=p.t("firefly.unknown_category_plain"),s.unknown_source=p.t("firefly.unknown_source_plain"),s.unknown_dest=p.t("firefly.unknown_dest_plain"),s.unknown_account=p.t("firefly.unknown_any_plain"),s.unknown_budget=p.t("firefly.unknown_budget_plain"),s.expense_account=p.t("firefly.expense_account"),s.revenue_account=p.t("firefly.revenue_account"),s.budget=p.t("firefly.budget"),X=!0,this.loadChart()}),window.store.observe("end",()=>{X&&(this.transactions=[],this.loadChart())}),window.store.observe("autoConversion",t=>{X&&(this.autoConversion=t,this.loadChart())})}});let tt=!1,b={};function gt(t){return new Vt().list(t).then(n=>{let a=n.data.data;for(let r in a)if(a.hasOwnProperty(r)){let o=a[r];if(o.attributes.active&&o.attributes.pay_dates.length>0){let i=o.attributes.object_group_id===null?0:o.attributes.object_group_id,l=o.attributes.object_group_title===null?p.t("firefly.default_group_title_name_plain"):o.attributes.object_group_title,u=o.attributes.object_group_order===null?0:o.attributes.object_group_order;b.hasOwnProperty(i)||(b[i]={id:i,title:l,order:u,payment_info:{},bills:[]});let d={id:o.id,name:o.attributes.name,amount_min:o.attributes.amount_min,amount_max:o.attributes.amount_max,amount:(parseFloat(o.attributes.amount_max)+parseFloat(o.attributes.amount_min))/2,currency_code:o.attributes.currency_code,native_amount_min:o.attributes.native_amount_min,native_amount_max:o.attributes.native_amount_max,native_amount:(parseFloat(o.attributes.native_amount_max)+parseFloat(o.attributes.native_amount_min))/2,native_currency_code:o.attributes.native_currency_code,transactions:[],pay_dates:o.attributes.pay_dates,paid:o.attributes.paid_dates.length>0};d.expected_amount=t.autoConversion?f(d.native_amount,d.native_currency_code):f(d.amount,d.currency_code),d.expected_times=p.t("firefly.subscr_expected_x_times",{times:o.attributes.pay_dates.length,amount:d.expected_amount});for(let h in o.attributes.paid_dates)if(o.attributes.paid_dates.hasOwnProperty(h)){const c=o.attributes.paid_dates[h];let _=100;t.autoConversion&&(_=Math.round(-100+parseFloat(c.native_amount)*-1/parseFloat(d.native_amount)*100)),t.autoConversion||(_=Math.round(-100+parseFloat(c.amount)*-1/parseFloat(d.amount)*100));let w={amount:t.autoConversion?f(c.native_amount,c.native_currency_code):f(c.amount,c.currency_code),percentage:_,date:g(new Date(c.date),"PP"),foreign_amount:null};c.foreign_currency_code!==null&&(w.foreign_amount=t.autoConversion?c.foreign_native_amount:c.foreign_amount,w.foreign_currency_code=t.autoConversion?c.native_currency_code:c.foreign_currency_code),d.transactions.push(w)}if(b[i].bills.push(d),o.attributes.paid_dates.length===0){const h=o.attributes.pay_dates.length*d.amount,c=o.attributes.pay_dates.length*d.native_amount;b[i].payment_info.hasOwnProperty(d.currency_code)||(b[i].payment_info[d.currency_code]={currency_code:d.currency_code,paid:0,unpaid:0,native_currency_code:d.native_currency_code,native_paid:0,native_unpaid:0}),b[i].payment_info[d.currency_code].unpaid+=h,b[i].payment_info[d.currency_code].native_unpaid+=c}if(o.attributes.paid_dates.length>0){for(let h in o.attributes.paid_dates)if(o.attributes.paid_dates.hasOwnProperty(h)){let c=o.attributes.paid_dates[h];b[i].payment_info.hasOwnProperty(c.currency_code)||(b[i].payment_info[c.currency_code]={currency_code:d.currency_code,paid:0,unpaid:0,native_currency_code:d.native_currency_code,native_paid:0,native_unpaid:0});const _=parseFloat(c.amount)*-1,w=parseFloat(c.native_amount)*-1;b[i].payment_info[c.currency_code].paid+=_,b[i].payment_info[c.currency_code].native_paid+=w}}}}return parseInt(n.data.meta.pagination.total_pages)>t.page?(t.page++,gt(t)):Promise.resolve()})}const Xt=()=>({loading:!1,autoConversion:!1,subscriptions:[],startSubscriptions(){this.loading=!0;let t=new Date(window.store.get("start")),e=new Date(window.store.get("end"));const n=window.store.get("cacheValid");let a=window.store.get(P("subscriptions-data-dashboard",t,e));n&&typeof a<"u",b={},this.subscriptions=[];let r={start:g(t,"y-MM-dd"),end:g(e,"y-MM-dd"),autoConversion:this.autoConversion,page:1};gt(r).then(()=>{let o=Object.values(b);for(let i in o)if(o.hasOwnProperty(i)){let l=o[i];const u=Object.keys(l.payment_info);l.col_size=u.length===1?"col-6 offset-3":"col-6",l.chart_width=u.length===1?"50%":"100%",l.payment_length=u.length,this.subscriptions.push(l)}this.loading=!1})},drawPieChart(t,e,n){let a="#pie_"+t+"_"+n.currency_code;const r=this.autoConversion?n.native_unpaid:n.unpaid,o=this.autoConversion?n.native_paid:n.paid,i=this.autoConversion?n.native_currency_code:n.currency_code,u={type:"doughnut",data:{labels:[p.t("firefly.paid"),p.t("firefly.unpaid")],datasets:[{label:p.t("firefly.subscriptions_in_group",{title:e}),data:[o,r],backgroundColor:["rgb(54, 162, 235)","rgb(255, 99, 132)"],hoverOffset:4}]},options:{plugins:{tooltip:{callbacks:{label:function(h){return h.dataset.label+": "+f(h.raw,i)}}}}}};var d=S.getChart(document.querySelector(a));typeof d<"u"&&d.destroy(),new S(document.querySelector(a),u)},init(){Promise.all([v("autoConversion",!1)]).then(t=>{this.autoConversion=t[0],tt=!0,this.loading===!1&&this.startSubscriptions()}),window.store.observe("end",()=>{tt&&this.loading===!1&&this.startSubscriptions()}),window.store.observe("autoConversion",t=>{tt&&(this.autoConversion=t,this.loading===!1&&this.startSubscriptions())})}});let x={},et=!1;const ht="dashboard-piggies-data",te=()=>({loading:!1,autoConversion:!1,sankeyGrouping:"account",piggies:[],getFreshData(){const t=new Date(window.store.get("start")),e=new Date(window.store.get("end")),n=P(ht,t,e),a=window.store.get("cacheValid");let r=window.store.get(n);if(a&&typeof r<"u"){x=r,this.parsePiggies(),this.loading=!1;return}let o={start:g(t,"y-MM-dd"),end:g(e,"y-MM-dd"),page:1};this.downloadPiggyBanks(o)},downloadPiggyBanks(t){const e=new Date(window.store.get("start")),n=new Date(window.store.get("end")),a=P(ht,e,n);new Kt().list(t).then(o=>{if(x=[...x,...o.data.data],parseInt(o.data.meta.pagination.total_pages)>t.page){t.page++,this.downloadPiggyBanks(t);return}window.store.set(a,x),this.parsePiggies(),this.loading=!1})},parsePiggies(){let t=[];for(let e in x)if(x.hasOwnProperty(e)){let n=x[e];if(n.attributes.percentage>=100||n.attributes.percentage===0)continue;let a=n.object_group_title??p.t("firefly.default_group_title_name_plain");t.hasOwnProperty(a)||(t[a]={id:n.object_group_id??0,title:a,order:n.object_group_order??0,piggies:[]});let r={id:n.id,name:n.attributes.name,percentage:parseInt(n.attributes.percentage),amount:this.autoConversion?n.attributes.native_current_amount:n.attributes.current_amount,left_to_save:this.autoConversion?n.attributes.native_left_to_save:n.attributes.left_to_save,target_amount:this.autoConversion?n.attributes.native_target_amount:n.attributes.target_amount,save_per_month:this.autoConversion?n.attributes.native_save_per_month:n.attributes.save_per_month,currency_code:this.autoConversion?n.attributes.native_currency_code:n.attributes.currency_code};t[a].piggies.push(r)}this.piggies=Object.values(t)},loadPiggyBanks(){if(this.loading!==!0){if(this.loading=!0,this.piggies.length!==0){this.parsePiggies(),this.loading=!1;return}this.getFreshData()}},init(){x=[],Promise.all([v("autoConversion",!1)]).then(t=>{et=!0,this.autoConversion=t[0],this.loadPiggyBanks()}),window.store.observe("end",()=>{et&&(x=[],this.loadPiggyBanks())}),window.store.observe("autoConversion",t=>{et&&(this.autoConversion=t,this.loadPiggyBanks())})}});S.register({LineController:Ct,LineElement:kt,ArcElement:Pt,BarController:Dt,TimeScale:xt,PieController:Ot,BarElement:Mt,Filler:Ft,Colors:St,LinearScale:At,CategoryScale:Bt,PointElement:jt,Tooltip:Wt,Legend:It});const pt={dates:wt,boxes:Et,accounts:Ut,budgets:Ht,categories:Zt,sankey:Qt,subscriptions:Xt,piggies:te};function _t(t){Object.keys(t).forEach(e=>{let n=t[e]();Alpine.data(e,()=>n)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),_t(pt)});window.bootstrapped&&(console.log("Loaded through window variable."),_t(pt)); diff --git a/public/build/assets/edit-74c97acb.js b/public/build/assets/edit-74c97acb.js new file mode 100644 index 0000000000..b8aa21626a --- /dev/null +++ b/public/build/assets/edit-74c97acb.js @@ -0,0 +1 @@ +import{a as p,d as f,f as c}from"./format-money-a71f277a.js";import{G as g}from"./get-971543fd.js";import{p as m}from"./parse-downloaded-splits-19845c1d.js";import{p as w,d as y,e as a,f as b,g as S,h as P,i as v,l as C,a as A,b as _,c as E,s as D,j as x,k as l,m as u}from"./splice-errors-into-transactions-995deb6d.js";import{i as r,m as B}from"./vendor-0ba1deae.js";import{d as L}from"./create-empty-split-b2c15454.js";import"./get-c4c00bed.js";class T{put(s,o){let e="/api/v2/transactions/"+parseInt(o.id);return p.put(e,s)}}const n=x();let U=function(){return{entries:[],originals:[],formStates:{loadingCurrencies:!0,loadingBudgets:!0,loadingPiggyBanks:!0,loadingSubscriptions:!0,isSubmitting:!1,returnHereButton:!1,saveAsNewButton:!1,resetButton:!0,rulesButton:!0,webhooksButton:!0},formBehaviour:{formType:"edit",foreignCurrencyEnabled:!0},formData:{defaultCurrency:null,enabledCurrencies:[],nativeCurrencies:[],foreignCurrencies:[],budgets:[],piggyBanks:[],subscriptions:[]},groupProperties:{transactionType:"unknown",title:null,id:null,totalAmount:0},notifications:{error:{show:!1,text:"",url:""},success:{show:!1,text:"",url:""},wait:{show:!1,text:""}},submitTransaction(){this.notifications.error.show=!1,this.notifications.success.show=!1,this.notifications.wait.show=!1;for(let e in this.entries)this.entries.hasOwnProperty(e)&&(this.entries[e].errors=L());this.formStates.isSubmitting=!0;let t=w(this.entries,this.originals,this.groupProperties.transactionType),s={group_title:this.groupProperties.title,fire_webhooks:this.formStates.webhooksButton,apply_rules:this.formStates.rulesButton,transactions:t};this.groupProperties.title===null&&t.length>1&&(s.group_title=t[0].description);let o=new T;console.log(s),o.put(s,{id:this.groupProperties.id}).then(e=>{const i=e.data.data;if(this.groupProperties.id=parseInt(i.id),this.groupProperties.title=i.attributes.group_title??i.attributes.transactions[0].description,y(this.groupProperties.id,i.attributes.transactions)>0){this.notifications.wait.show=!0,this.notifications.wait.text=r.t("firefly.wait_attachments");return}this.showMessageOrRedirectUser()}).catch(e=>{this.submitting=!1,console.log(e),typeof e.response<"u"&&this.parseErrors(e.response.data)})},filters:{source:[],destination:[]},addedSplit(){setTimeout(()=>{const t=function(s,o,e){return s.name_with_balance+'
'+r.t("firefly.account_type_"+s.type)+""};a({selector:"input.ac-source",serverUrl:n.account,filters:this.filters.source,onRenderItem:t,onChange:b,onSelectItem:S}),console.log("ok"),console.log(this.entries[0].source_account.alpine_name),a({selector:"input.ac-dest",serverUrl:n.account,filters:this.filters.destination,onRenderItem:t,onChange:P,onSelectItem:v}),a({selector:"input.ac-category",serverUrl:n.category,valueField:"id",labelField:"name",onChange:l,onSelectItem:l}),a({selector:"input.ac-description",serverUrl:n.description,valueField:"id",labelField:"description",onChange:u,onSelectItem:u})},250)},changedDateTime(t){console.warn("changedDateTime, event is not used")},changedDescription(t){console.warn("changedDescription, event is not used")},changedDestinationAccount(t){console.warn("changedDestinationAccount, event is not used")},changedSourceAccount(t){console.warn("changedSourceAccount, event is not used")},formattedTotalAmount(){return this.entries.length===0?c(this.groupProperties.totalAmount,"EUR"):c(this.groupProperties.totalAmount,this.entries[0].currency_code??"EUR")},getTags(t){return console.log("at get tags "+t),console.log(this.entries[t].tags),this.entries[t].tags??[]},getTransactionGroup(){this.entries=[];const t=window.location.href.split("/"),s=parseInt(t[t.length-1]);new g().show(s,{}).then(e=>{const i=e.data.data;this.groupProperties.id=parseInt(i.id),this.groupProperties.transactionType=i.attributes.transactions[0].type.toLowerCase(),this.groupProperties.title=i.attributes.title??i.attributes.transactions[0].description,this.entries=m(i.attributes.transactions),this.notifications.wait.show=!1}).then(()=>{this.groupProperties.totalAmount=0;for(let e in this.entries)this.entries.hasOwnProperty(e)&&(this.groupProperties.totalAmount=this.groupProperties.totalAmount+parseFloat(this.entries[e].amount),this.filters.source.push(this.entries[e].source_account.type),this.filters.destination.push(this.entries[e].source_account.type));console.log(this.filters),setTimeout(()=>{B.init("select.ac-tags",{allowClear:!0,server:n.tag,liveServer:!0,clearEnd:!0,allowNew:!0,notFoundMessage:r.t("firefly.nothing_found"),noCache:!0,fetchOptions:{headers:{"X-CSRF-TOKEN":document.head.querySelector('meta[name="csrf-token"]').content}}})},150)})},init(){this.notifications.wait.show=!0,this.notifications.wait.text=r.t("firefly.wait_loading_transaction"),this.getTransactionGroup(),C().then(t=>{this.formStates.loadingCurrencies=!1,this.formData.defaultCurrency=t.defaultCurrency,this.formData.enabledCurrencies=t.enabledCurrencies,this.formData.nativeCurrencies=t.nativeCurrencies,this.formData.foreignCurrencies=t.foreignCurrencies}),A().then(t=>{this.formData.budgets=t,this.formStates.loadingBudgets=!1}),_().then(t=>{this.formData.piggyBanks=t,this.formStates.loadingPiggyBanks=!1}),E().then(t=>{this.formData.subscriptions=t,this.formStates.loadingSubscriptions=!1}),document.addEventListener("upload-success",t=>{this.processUpload(t),document.querySelectorAll("input[type=file]").value=""}),document.addEventListener("upload-error",t=>{this.processUploadError(t)}),document.addEventListener("location-move",t=>{this.entries[t.detail.index].latitude=t.detail.latitude,this.entries[t.detail.index].longitude=t.detail.longitude}),document.addEventListener("location-set",t=>{this.entries[t.detail.index].hasLocation=!0,this.entries[t.detail.index].latitude=t.detail.latitude,this.entries[t.detail.index].longitude=t.detail.longitude,this.entries[t.detail.index].zoomLevel=t.detail.zoomLevel}),document.addEventListener("location-zoom",t=>{this.entries[t.detail.index].hasLocation=!0,this.entries[t.detail.index].zoomLevel=t.detail.zoomLevel})},changedAmount(t){const s=parseInt(t.target.dataset.index);this.entries[s].amount=parseFloat(t.target.value),this.groupProperties.totalAmount=0;for(let o in this.entries)this.entries.hasOwnProperty(o)&&(this.groupProperties.totalAmount=this.groupProperties.totalAmount+parseFloat(this.entries[o].amount))},showMessageOrRedirectUser(){if(this.notifications.error.show=!1,this.notifications.success.show=!1,this.notifications.wait.show=!1,this.formStates.returnHereButton){this.notifications.success.show=!0,this.notifications.success.url="transactions/show/"+this.groupProperties.id,this.notifications.success.text=r.t("firefly.updated_journal_js",{description:this.groupProperties.title});return}window.location="transactions/show/"+this.groupProperties.id+"?transaction_group_id="+this.groupProperties.id+"&message=updated"},parseErrors(t){this.notifications.error.show=!0,this.notifications.success.show=!1,this.notifications.wait.show=!1,this.formStates.isSubmitting=!1,this.notifications.error.text=r.t("firefly.errors_submission",{errorMessage:t.message}),t.hasOwnProperty("errors")&&(this.entries=D(t.errors,this.entries))},processUpload(t){this.showMessageOrRedirectUser()},processUploadError(t){this.notifications.success.show=!1,this.notifications.wait.show=!1,this.notifications.error.show=!0,this.formStates.isSubmitting=!1,this.notifications.error.text=r.t("firefly.errors_upload"),console.error(t)}}},h={transactions:U,dates:f};function d(){Object.keys(h).forEach(t=>{console.log(`Loading page component "${t}"`);let s=h[t]();Alpine.data(t,()=>s)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),d()});window.bootstrapped&&(console.log("Loaded through window variable."),d()); diff --git a/public/build/assets/edit-b45ed381.js b/public/build/assets/edit-b45ed381.js deleted file mode 100644 index cc0764f838..0000000000 --- a/public/build/assets/edit-b45ed381.js +++ /dev/null @@ -1 +0,0 @@ -import{a as p,d as f,f as c}from"./format-money-43e05102.js";import{G as g}from"./get-a29f6df7.js";import{p as m}from"./parse-downloaded-splits-4afea167.js";import{p as w,d as y,e as a,f as b,g as S,h as P,i as v,l as A,a as C,b as _,c as E,s as D,j as x,k as l,m as u}from"./splice-errors-into-transactions-9c9b99c0.js";import{i as r,m as B}from"./vendor-fca45885.js";import{d as T}from"./create-empty-split-fb5bda92.js";import"./get-94678769.js";class L{put(s,o){let e="/api/v2/transactions/"+parseInt(o.id);return p.put(e,s)}}const n=x();let U=function(){return{entries:[],formStates:{loadingCurrencies:!0,loadingBudgets:!0,loadingPiggyBanks:!0,loadingSubscriptions:!0,isSubmitting:!1,returnHereButton:!1,saveAsNewButton:!1,resetButton:!0,rulesButton:!0,webhooksButton:!0},formBehaviour:{formType:"edit",foreignCurrencyEnabled:!0},formData:{defaultCurrency:null,enabledCurrencies:[],nativeCurrencies:[],foreignCurrencies:[],budgets:[],piggyBanks:[],subscriptions:[]},groupProperties:{transactionType:"unknown",title:null,id:null,totalAmount:0},notifications:{error:{show:!1,text:"",url:""},success:{show:!1,text:"",url:""},wait:{show:!1,text:""}},submitTransaction(){this.notifications.error.show=!1,this.notifications.success.show=!1,this.notifications.wait.show=!1;for(let e in this.entries)this.entries.hasOwnProperty(e)&&(this.entries[e].errors=T());this.formStates.isSubmitting=!0;let t=w(this.entries,this.groupProperties.transactionType),s={group_title:this.groupProperties.title,fire_webhooks:this.formStates.webhooksButton,apply_rules:this.formStates.rulesButton,transactions:t};this.groupProperties.title===null&&t.length>1&&(s.group_title=t[0].description);let o=new L;console.log(s),o.put(s,{id:this.groupProperties.id}).then(e=>{const i=e.data.data;if(this.groupProperties.id=parseInt(i.id),this.groupProperties.title=i.attributes.group_title??i.attributes.transactions[0].description,y(this.groupProperties.id,i.attributes.transactions)>0){this.notifications.wait.show=!0,this.notifications.wait.text=r.t("firefly.wait_attachments");return}this.showMessageOrRedirectUser()}).catch(e=>{this.submitting=!1,console.log(e),typeof e.response<"u"&&this.parseErrors(e.response.data)})},filters:{source:[],destination:[]},addedSplit(){setTimeout(()=>{const t=function(s,o,e){return s.name_with_balance+'
'+r.t("firefly.account_type_"+s.type)+""};a({selector:"input.ac-source",serverUrl:n.account,filters:this.filters.source,onRenderItem:t,onChange:b,onSelectItem:S}),console.log("ok"),console.log(this.entries[0].source_account.alpine_name),a({selector:"input.ac-dest",serverUrl:n.account,filters:this.filters.destination,onRenderItem:t,onChange:P,onSelectItem:v}),a({selector:"input.ac-category",serverUrl:n.category,valueField:"id",labelField:"name",onChange:l,onSelectItem:l}),a({selector:"input.ac-description",serverUrl:n.description,valueField:"id",labelField:"description",onChange:u,onSelectItem:u})},250)},changedDateTime(t){console.warn("changedDateTime, event is not used")},changedDescription(t){console.warn("changedDescription, event is not used")},changedDestinationAccount(t){console.warn("changedDestinationAccount, event is not used")},changedSourceAccount(t){console.warn("changedSourceAccount, event is not used")},formattedTotalAmount(){return this.entries.length===0?c(this.groupProperties.totalAmount,"EUR"):c(this.groupProperties.totalAmount,this.entries[0].currency_code??"EUR")},getTags(t){return console.log("at get tags "+t),console.log(this.entries[t].tags),this.entries[t].tags??[]},getTransactionGroup(){this.entries=[];const t=window.location.href.split("/"),s=parseInt(t[t.length-1]);new g().show(s,{}).then(e=>{const i=e.data.data;this.groupProperties.id=parseInt(i.id),this.groupProperties.transactionType=i.attributes.transactions[0].type,this.groupProperties.title=i.attributes.title??i.attributes.transactions[0].description,this.entries=m(i.attributes.transactions),this.notifications.wait.show=!1}).then(()=>{this.groupProperties.totalAmount=0;for(let e in this.entries)this.entries.hasOwnProperty(e)&&(this.groupProperties.totalAmount=this.groupProperties.totalAmount+parseFloat(this.entries[e].amount),this.filters.source.push(this.entries[e].source_account.type),this.filters.destination.push(this.entries[e].source_account.type));console.log(this.filters),setTimeout(()=>{B.init("select.ac-tags",{allowClear:!0,server:n.tag,liveServer:!0,clearEnd:!0,allowNew:!0,notFoundMessage:r.t("firefly.nothing_found"),noCache:!0,fetchOptions:{headers:{"X-CSRF-TOKEN":document.head.querySelector('meta[name="csrf-token"]').content}}})},150)})},init(){this.notifications.wait.show=!0,this.notifications.wait.text=r.t("firefly.wait_loading_transaction"),this.getTransactionGroup(),A().then(t=>{this.formStates.loadingCurrencies=!1,this.formData.defaultCurrency=t.defaultCurrency,this.formData.enabledCurrencies=t.enabledCurrencies,this.formData.nativeCurrencies=t.nativeCurrencies,this.formData.foreignCurrencies=t.foreignCurrencies}),C().then(t=>{this.formData.budgets=t,this.formStates.loadingBudgets=!1}),_().then(t=>{this.formData.piggyBanks=t,this.formStates.loadingPiggyBanks=!1}),E().then(t=>{this.formData.subscriptions=t,this.formStates.loadingSubscriptions=!1}),document.addEventListener("upload-success",t=>{this.processUpload(t),document.querySelectorAll("input[type=file]").value=""}),document.addEventListener("upload-error",t=>{this.processUploadError(t)}),document.addEventListener("location-move",t=>{this.entries[t.detail.index].latitude=t.detail.latitude,this.entries[t.detail.index].longitude=t.detail.longitude}),document.addEventListener("location-set",t=>{this.entries[t.detail.index].hasLocation=!0,this.entries[t.detail.index].latitude=t.detail.latitude,this.entries[t.detail.index].longitude=t.detail.longitude,this.entries[t.detail.index].zoomLevel=t.detail.zoomLevel}),document.addEventListener("location-zoom",t=>{this.entries[t.detail.index].hasLocation=!0,this.entries[t.detail.index].zoomLevel=t.detail.zoomLevel})},changedAmount(t){const s=parseInt(t.target.dataset.index);this.entries[s].amount=parseFloat(t.target.value),this.groupProperties.totalAmount=0;for(let o in this.entries)this.entries.hasOwnProperty(o)&&(this.groupProperties.totalAmount=this.groupProperties.totalAmount+parseFloat(this.entries[o].amount))},showMessageOrRedirectUser(){if(this.notifications.error.show=!1,this.notifications.success.show=!1,this.notifications.wait.show=!1,this.formStates.returnHereButton){this.notifications.success.show=!0,this.notifications.success.url="transactions/show/"+this.groupProperties.id,this.notifications.success.text=r.t("firefly.updated_journal_js",{description:this.groupProperties.title});return}window.location="transactions/show/"+this.groupProperties.id+"?transaction_group_id="+this.groupProperties.id+"&message=updated"},parseErrors(t){this.notifications.error.show=!0,this.notifications.success.show=!1,this.notifications.wait.show=!1,this.formStates.isSubmitting=!1,this.notifications.error.text=r.t("firefly.errors_submission",{errorMessage:t.message}),t.hasOwnProperty("errors")&&(this.entries=D(t.errors,this.entries))},processUpload(t){this.showMessageOrRedirectUser()},processUploadError(t){this.notifications.success.show=!1,this.notifications.wait.show=!1,this.notifications.error.show=!0,this.formStates.isSubmitting=!1,this.notifications.error.text=r.t("firefly.errors_upload"),console.error(t)}}},h={transactions:U,dates:f};function d(){Object.keys(h).forEach(t=>{console.log(`Loading page component "${t}"`);let s=h[t]();Alpine.data(t,()=>s)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),d()});window.bootstrapped&&(console.log("Loaded through window variable."),d()); diff --git a/public/build/assets/format-money-43e05102.js b/public/build/assets/format-money-a71f277a.js similarity index 99% rename from public/build/assets/format-money-43e05102.js rename to public/build/assets/format-money-a71f277a.js index 7a1caade22..ee168b390e 100644 --- a/public/build/assets/format-money-43e05102.js +++ b/public/build/assets/format-money-a71f277a.js @@ -1 +1 @@ -import{o as y,s as d,q as l,r as p,t as _,u as c,v as b,w as N,x as P,y as v,z as g,i as C,D as B,E as x,G as O,H as o,I as E,J as T,f as L,K as S,M as W,N as I,O as U,Q as q,R as Q,U as V,V as Y,W as $,X as j,Y as z,Z as X,_ as F,$ as G,a0 as H,a1 as J,a2 as K,a3 as Z,a4 as ee,a5 as te,a6 as ae,a7 as se,a8 as ne,a9 as re,aa as le,ab as de,ac as oe,ad as ie,ae as ue,af as ge,ag as ce,ah as we,ai as he,aj as ye}from"./vendor-fca45885.js";const k="/",h=y.create({baseURL:k,withCredentials:!0});y.defaults.withCredentials=!0;y.defaults.baseURL=k;class R{getByName(e){return h.get("/api/v1/preferences/"+e)}getByNameNow(e){return h.get("/api/v1/preferences/"+e)}postByName(e,a){return h.post("/api/v1/preferences",{name:e,data:a})}}class A{post(e,a){let s="/api/v1/preferences";return h.post(s,{name:e,data:a})}}function fe(t,e=null){return new R().getByName(t).then(s=>Promise.resolve(M(t,s))).catch(()=>{new A().post(t,e).then(i=>Promise.resolve(M(t,i)))})}function M(t,e){return e.data.data.attributes.data}function w(t,e=null){const a=window.store.get("cacheValid");if(a&&window.hasOwnProperty(t))return Promise.resolve(window[t]);const s=window.store.get(t);return a&&typeof s<"u"?Promise.resolve(s):new R().getByName(t).then(u=>Promise.resolve(m(t,u))).catch(()=>{new A().post(t,e).then(n=>Promise.resolve(m(t,n)))})}function m(t,e){let a=e.data.data.attributes.data;return window.store.set(t,a),a}function be(t,e){let a,s;switch(t){case"last365":a=d(g(e,365)),s=l(e);break;case"last90":a=d(g(e,90)),s=l(e);break;case"last30":a=d(g(e,30)),s=l(e);break;case"last7":a=d(g(e,7)),s=l(e);break;case"YTD":a=v(e),s=l(e);break;case"QTD":a=p(e),s=l(e);break;case"MTD":a=c(e),s=l(e);break;case"1D":a=d(e),s=l(e);break;case"1W":a=d(N(e,{weekStartsOn:1})),s=l(P(e,{weekStartsOn:1}));break;case"1M":a=d(c(e)),s=l(b(e));break;case"3M":a=d(p(e)),s=l(_(e));break;case"6M":e.getMonth()<=5&&(a=new Date(e),a.setMonth(0),a.setDate(1),a=d(a),s=new Date(e),s.setMonth(5),s.setDate(30),s=l(a)),e.getMonth()>5&&(a=new Date(e),a.setMonth(6),a.setDate(1),a=d(a),s=new Date(e),s.setMonth(11),s.setDate(31),s=l(a));break;case"1Y":a=new Date(e),a.setMonth(0),a.setDate(1),a=d(a),s=new Date(e),s.setMonth(11),s.setDate(31),s=l(s);break}return{start:a,end:s}}let D=!1;function pe(t){if(D===!1){const e=t.replace("-","_");D=!0;const a=7*24*60*60*1e3;return console.log('Will load language "'+e+'"'),C.use(B).init({load:"languageOnly",fallbackLng:"en",lng:e,debug:!1,backend:{backends:[x,O],backendOptions:[{load:"languageOnly",expirationTime:a},{loadPath:"./v2/i18n/{{lng}}.json"}]}})}return console.warn("Loading translations skipped."),Promise.resolve()}o.addPlugin(E);window.bootstrapped=!1;window.store=o;fe("lastActivity").then(t=>{const e=o.get("lastActivity");o.set("cacheValid",e===t),o.set("lastActivity",t),console.log("Server value: "+t),console.log("Local value: "+e),console.log("Cache valid: "+(e===t))}).then(()=>{Promise.all([w("viewRange"),w("darkMode"),w("locale"),w("language")]).then(t=>{if(!o.get("start")||!o.get("end")){const e=be(t[0],new Date);o.set("start",e.start),o.set("end",e.end)}window.__localeId__=t[2],o.set("language",t[3]),o.set("locale",t[3]),pe(t[3]).then(()=>{const e=new Event("firefly-iii-bootstrapped");document.dispatchEvent(e),window.bootstrapped=!0})})});window.axios=y;window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest";window.Alpine=T;const f={bg:S,cs:W,da:I,de:U,el:q,enGB:Q,enUS:V,es:Y,ca:$,fi:j,fr:z,hu:X,id:F,it:G,ja:H,ko:J,nb:K,nn:Z,nl:ee,pl:te,ptBR:ae,pt:se,ro:ne,ru:re,sk:le,sl:de,sv:oe,tr:ie,uk:ue,vi:ge,zhTW:ce,zhCN:we};function r(t,e="PP"){let a=window.__localeId__.replace("_","");return L(t,e,{locale:f[a]??f[a.slice(0,2)]??f.enUS})}const me=()=>({range:{start:null,end:null},defaultRange:{start:null,end:null},language:"en_US",init(){this.range={start:new Date(window.store.get("start")),end:new Date(window.store.get("end"))},this.defaultRange={start:new Date(window.store.get("start")),end:new Date(window.store.get("end"))},this.language=window.store.get("language"),this.locale=window.store.get("locale"),this.locale=this.locale==="equal"?this.language:this.locale,window.__localeId__=this.language,this.buildDateRange(),window.store.observe("start",t=>{this.range.start=new Date(t)}),window.store.observe("end",t=>{this.range.end=new Date(t),this.buildDateRange()})},buildDateRange(){let t=this.getNextRange(),e=this.getPrevRange(),a=this.lastDays(7),s=this.lastDays(30),i=this.mtd(),u=this.ytd(),n=document.getElementsByClassName("daterange-holder")[0];n.textContent=r(this.range.start)+" - "+r(this.range.end),n.setAttribute("data-start",r(this.range.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(this.range.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-current")[0],n.textContent=r(this.defaultRange.start)+" - "+r(this.defaultRange.end),n.setAttribute("data-start",r(this.defaultRange.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(this.defaultRange.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-next")[0],n.textContent=r(t.start)+" - "+r(t.end),n.setAttribute("data-start",r(t.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(t.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-prev")[0],n.textContent=r(e.start)+" - "+r(e.end),n.setAttribute("data-start",r(e.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(e.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-7d")[0],n.setAttribute("data-start",r(a.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(a.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-90d")[0],n.setAttribute("data-start",r(s.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(s.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-mtd")[0],n.setAttribute("data-start",r(i.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(i.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-ytd")[0],n.setAttribute("data-start",r(u.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(u.end,"yyyy-MM-dd"))},getNextRange(){let t=c(this.range.start),e=he(t,1),a=b(e);return{start:e,end:a}},getPrevRange(){let t=c(this.range.start),e=ye(t,1),a=b(e);return{start:e,end:a}},ytd(){let t=new Date;return{start:v(this.range.start),end:t}},mtd(){let t=new Date;return{start:c(this.range.start),end:t}},lastDays(t){let e=new Date;return{start:g(e,t),end:e}},changeDateRange(t){t.preventDefault();let e=t.currentTarget,a=new Date(e.getAttribute("data-start")),s=new Date(e.getAttribute("data-end"));return window.store.set("start",a),window.store.set("end",s),!1}});function De(t,e){let a=window.__localeId__.replace("_","-");return Intl.NumberFormat(a,{style:"currency",currency:e}).format(t)}export{A as P,h as a,me as d,De as f,w as g}; +import{o as y,s as d,q as l,r as p,t as _,u as c,v as b,w as N,x as P,y as v,z as g,i as C,D as B,E as x,G as O,H as o,I as E,J as T,f as L,K as S,M as W,N as I,O as U,Q as q,R as Q,U as V,V as Y,W as $,X as j,Y as z,Z as X,_ as F,$ as G,a0 as H,a1 as J,a2 as K,a3 as Z,a4 as ee,a5 as te,a6 as ae,a7 as se,a8 as ne,a9 as re,aa as le,ab as de,ac as oe,ad as ie,ae as ue,af as ge,ag as ce,ah as we,ai as he,aj as ye}from"./vendor-0ba1deae.js";const k="/",h=y.create({baseURL:k,withCredentials:!0});y.defaults.withCredentials=!0;y.defaults.baseURL=k;class R{getByName(e){return h.get("/api/v1/preferences/"+e)}getByNameNow(e){return h.get("/api/v1/preferences/"+e)}postByName(e,a){return h.post("/api/v1/preferences",{name:e,data:a})}}class A{post(e,a){let s="/api/v1/preferences";return h.post(s,{name:e,data:a})}}function fe(t,e=null){return new R().getByName(t).then(s=>Promise.resolve(M(t,s))).catch(()=>{new A().post(t,e).then(i=>Promise.resolve(M(t,i)))})}function M(t,e){return e.data.data.attributes.data}function w(t,e=null){const a=window.store.get("cacheValid");if(a&&window.hasOwnProperty(t))return Promise.resolve(window[t]);const s=window.store.get(t);return a&&typeof s<"u"?Promise.resolve(s):new R().getByName(t).then(u=>Promise.resolve(m(t,u))).catch(()=>{new A().post(t,e).then(n=>Promise.resolve(m(t,n)))})}function m(t,e){let a=e.data.data.attributes.data;return window.store.set(t,a),a}function be(t,e){let a,s;switch(t){case"last365":a=d(g(e,365)),s=l(e);break;case"last90":a=d(g(e,90)),s=l(e);break;case"last30":a=d(g(e,30)),s=l(e);break;case"last7":a=d(g(e,7)),s=l(e);break;case"YTD":a=v(e),s=l(e);break;case"QTD":a=p(e),s=l(e);break;case"MTD":a=c(e),s=l(e);break;case"1D":a=d(e),s=l(e);break;case"1W":a=d(N(e,{weekStartsOn:1})),s=l(P(e,{weekStartsOn:1}));break;case"1M":a=d(c(e)),s=l(b(e));break;case"3M":a=d(p(e)),s=l(_(e));break;case"6M":e.getMonth()<=5&&(a=new Date(e),a.setMonth(0),a.setDate(1),a=d(a),s=new Date(e),s.setMonth(5),s.setDate(30),s=l(a)),e.getMonth()>5&&(a=new Date(e),a.setMonth(6),a.setDate(1),a=d(a),s=new Date(e),s.setMonth(11),s.setDate(31),s=l(a));break;case"1Y":a=new Date(e),a.setMonth(0),a.setDate(1),a=d(a),s=new Date(e),s.setMonth(11),s.setDate(31),s=l(s);break}return{start:a,end:s}}let D=!1;function pe(t){if(D===!1){const e=t.replace("-","_");D=!0;const a=7*24*60*60*1e3;return console.log('Will load language "'+e+'"'),C.use(B).init({load:"languageOnly",fallbackLng:"en",lng:e,debug:!1,backend:{backends:[x,O],backendOptions:[{load:"languageOnly",expirationTime:a},{loadPath:"./v2/i18n/{{lng}}.json"}]}})}return console.warn("Loading translations skipped."),Promise.resolve()}o.addPlugin(E);window.bootstrapped=!1;window.store=o;fe("lastActivity").then(t=>{const e=o.get("lastActivity");o.set("cacheValid",e===t),o.set("lastActivity",t),console.log("Server value: "+t),console.log("Local value: "+e),console.log("Cache valid: "+(e===t))}).then(()=>{Promise.all([w("viewRange"),w("darkMode"),w("locale"),w("language")]).then(t=>{if(!o.get("start")||!o.get("end")){const e=be(t[0],new Date);o.set("start",e.start),o.set("end",e.end)}window.__localeId__=t[2],o.set("language",t[3]),o.set("locale",t[3]),pe(t[3]).then(()=>{const e=new Event("firefly-iii-bootstrapped");document.dispatchEvent(e),window.bootstrapped=!0})})});window.axios=y;window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest";window.Alpine=T;const f={bg:S,cs:W,da:I,de:U,el:q,enGB:Q,enUS:V,es:Y,ca:$,fi:j,fr:z,hu:X,id:F,it:G,ja:H,ko:J,nb:K,nn:Z,nl:ee,pl:te,ptBR:ae,pt:se,ro:ne,ru:re,sk:le,sl:de,sv:oe,tr:ie,uk:ue,vi:ge,zhTW:ce,zhCN:we};function r(t,e="PP"){let a=window.__localeId__.replace("_","");return L(t,e,{locale:f[a]??f[a.slice(0,2)]??f.enUS})}const me=()=>({range:{start:null,end:null},defaultRange:{start:null,end:null},language:"en_US",init(){this.range={start:new Date(window.store.get("start")),end:new Date(window.store.get("end"))},this.defaultRange={start:new Date(window.store.get("start")),end:new Date(window.store.get("end"))},this.language=window.store.get("language"),this.locale=window.store.get("locale"),this.locale=this.locale==="equal"?this.language:this.locale,window.__localeId__=this.language,this.buildDateRange(),window.store.observe("start",t=>{this.range.start=new Date(t)}),window.store.observe("end",t=>{this.range.end=new Date(t),this.buildDateRange()})},buildDateRange(){let t=this.getNextRange(),e=this.getPrevRange(),a=this.lastDays(7),s=this.lastDays(30),i=this.mtd(),u=this.ytd(),n=document.getElementsByClassName("daterange-holder")[0];n.textContent=r(this.range.start)+" - "+r(this.range.end),n.setAttribute("data-start",r(this.range.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(this.range.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-current")[0],n.textContent=r(this.defaultRange.start)+" - "+r(this.defaultRange.end),n.setAttribute("data-start",r(this.defaultRange.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(this.defaultRange.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-next")[0],n.textContent=r(t.start)+" - "+r(t.end),n.setAttribute("data-start",r(t.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(t.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-prev")[0],n.textContent=r(e.start)+" - "+r(e.end),n.setAttribute("data-start",r(e.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(e.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-7d")[0],n.setAttribute("data-start",r(a.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(a.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-90d")[0],n.setAttribute("data-start",r(s.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(s.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-mtd")[0],n.setAttribute("data-start",r(i.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(i.end,"yyyy-MM-dd")),n=document.getElementsByClassName("daterange-ytd")[0],n.setAttribute("data-start",r(u.start,"yyyy-MM-dd")),n.setAttribute("data-end",r(u.end,"yyyy-MM-dd"))},getNextRange(){let t=c(this.range.start),e=he(t,1),a=b(e);return{start:e,end:a}},getPrevRange(){let t=c(this.range.start),e=ye(t,1),a=b(e);return{start:e,end:a}},ytd(){let t=new Date;return{start:v(this.range.start),end:t}},mtd(){let t=new Date;return{start:c(this.range.start),end:t}},lastDays(t){let e=new Date;return{start:g(e,t),end:e}},changeDateRange(t){t.preventDefault();let e=t.currentTarget,a=new Date(e.getAttribute("data-start")),s=new Date(e.getAttribute("data-end"));return window.store.set("start",a),window.store.set("end",s),!1}});function De(t,e){let a=window.__localeId__.replace("_","-");return Intl.NumberFormat(a,{style:"currency",currency:e}).format(t)}export{A as P,h as a,me as d,De as f,w as g}; diff --git a/public/build/assets/get-a29f6df7.js b/public/build/assets/get-971543fd.js similarity index 66% rename from public/build/assets/get-a29f6df7.js rename to public/build/assets/get-971543fd.js index df3596abad..3c75df02a8 100644 --- a/public/build/assets/get-a29f6df7.js +++ b/public/build/assets/get-971543fd.js @@ -1 +1 @@ -import{a as s}from"./format-money-43e05102.js";class p{list(a){return s.get("/api/v2/transactions",{params:a})}show(a,t){return s.get("/api/v2/transactions/"+a,{params:t})}}export{p as G}; +import{a as s}from"./format-money-a71f277a.js";class p{list(a){return s.get("/api/v2/transactions",{params:a})}show(a,t){return s.get("/api/v2/transactions/"+a,{params:t})}}export{p as G}; diff --git a/public/build/assets/get-94678769.js b/public/build/assets/get-c4c00bed.js similarity index 81% rename from public/build/assets/get-94678769.js rename to public/build/assets/get-c4c00bed.js index d96f4ad33e..8b91183ad1 100644 --- a/public/build/assets/get-94678769.js +++ b/public/build/assets/get-c4c00bed.js @@ -1 +1 @@ -import{a as s}from"./format-money-43e05102.js";let t=class{list(a){return s.get("/api/v2/subscriptions",{params:a})}paid(a){return s.get("/api/v2/subscriptions/sum/paid",{params:a})}unpaid(a){return s.get("/api/v2/subscriptions/sum/unpaid",{params:a})}};class e{list(a){return s.get("/api/v2/piggy-banks",{params:a})}}export{t as G,e as a}; +import{a as s}from"./format-money-a71f277a.js";let t=class{list(a){return s.get("/api/v2/subscriptions",{params:a})}paid(a){return s.get("/api/v2/subscriptions/sum/paid",{params:a})}unpaid(a){return s.get("/api/v2/subscriptions/sum/unpaid",{params:a})}};class e{list(a){return s.get("/api/v2/piggy-banks",{params:a})}}export{t as G,e as a}; diff --git a/public/build/assets/index-8df22335.js b/public/build/assets/index-8df22335.js deleted file mode 100644 index 745af4c51d..0000000000 --- a/public/build/assets/index-8df22335.js +++ /dev/null @@ -1 +0,0 @@ -import{d as c,f as d}from"./format-money-43e05102.js";import{f,i as r}from"./vendor-fca45885.js";import{G as p}from"./get-a29f6df7.js";let g=function(){return{notifications:{error:{show:!1,text:"",url:""},success:{show:!1,text:"",url:""},wait:{show:!1,text:""}},transactions:[],totalPages:1,perPage:50,page:1,tableColumns:{description:{enabled:!0},source:{enabled:!0},destination:{enabled:!0},amount:{enabled:!0}},formatMoney(a,i){return d(a,i)},format(a){return f(a,r.t("config.date_time_fns"))},init(){this.notifications.wait.show=!0,this.notifications.wait.text=r.t("firefly.wait_loading_data"),this.getTransactions(this.page)},getTransactions(a){new p().list({page:a}).then(t=>{this.parseTransactions(t.data.data),this.totalPages=t.data.meta.pagination.total_pages,this.perPage=t.data.meta.pagination.per_page,this.page=t.data.meta.pagination.current_page}).catch(t=>{this.notifications.wait.show=!1,this.notifications.error.show=!0,this.notifications.error.text=t.response.data.message})},parseTransactions(a){for(let i in a)if(a.hasOwnProperty(i)){let t=a[i],u=t.attributes.transactions.length>1,s=!0;for(let o in t.attributes.transactions)if(t.attributes.transactions.hasOwnProperty(o)){let e=t.attributes.transactions[o];e.split=u,e.firstSplit=s,e.group_title=t.attributes.group_title,e.id=t.id,e.created_at=t.attributes.created_at,e.updated_at=t.attributes.updated_at,e.user=t.attributes.user,e.user_group=t.attributes.user_group,s=!1,console.log(e),this.transactions.push(e)}}this.notifications.wait.show=!1}}},n={index:g,dates:c};function l(){Object.keys(n).forEach(a=>{console.log(`Loading page component "${a}"`);let i=n[a]();Alpine.data(a,()=>i)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),l()});window.bootstrapped&&(console.log("Loaded through window variable."),l()); diff --git a/public/build/assets/index-cf70f728.js b/public/build/assets/index-cf70f728.js new file mode 100644 index 0000000000..f320455f92 --- /dev/null +++ b/public/build/assets/index-cf70f728.js @@ -0,0 +1 @@ +import{d as c,f as d}from"./format-money-a71f277a.js";import{f as p,i as n}from"./vendor-0ba1deae.js";import{G as f}from"./get-971543fd.js";let g=function(){return{notifications:{error:{show:!1,text:"",url:""},success:{show:!1,text:"",url:""},wait:{show:!1,text:""}},transactions:[],totalPages:1,perPage:50,page:1,tableColumns:{description:{enabled:!0},source:{enabled:!0},destination:{enabled:!0},amount:{enabled:!0}},formatMoney(t,i){return d(t,i)},format(t){return p(t,n.t("config.date_time_fns"))},init(){this.notifications.wait.show=!0,this.notifications.wait.text=n.t("firefly.wait_loading_data"),this.getTransactions(this.page)},getTransactions(t){const i=window.location.href.split("/"),a=i[i.length-1];new f().list({page:t,type:a}).then(s=>{this.parseTransactions(s.data.data),this.totalPages=s.data.meta.pagination.total_pages,this.perPage=s.data.meta.pagination.per_page,this.page=s.data.meta.pagination.current_page}).catch(s=>{this.notifications.wait.show=!1,this.notifications.error.show=!0,this.notifications.error.text=s.response.data.message})},parseTransactions(t){for(let i in t)if(t.hasOwnProperty(i)){let a=t[i],o=a.attributes.transactions.length>1,s=!0;for(let r in a.attributes.transactions)if(a.attributes.transactions.hasOwnProperty(r)){let e=a.attributes.transactions[r];e.split=o,e.firstSplit=s,e.group_title=a.attributes.group_title,e.id=a.id,e.created_at=a.attributes.created_at,e.updated_at=a.attributes.updated_at,e.user=a.attributes.user,e.user_group=a.attributes.user_group,s=!1,console.log(e),this.transactions.push(e)}}this.notifications.wait.show=!1}}},l={index:g,dates:c};function u(){Object.keys(l).forEach(t=>{console.log(`Loading page component "${t}"`);let i=l[t]();Alpine.data(t,()=>i)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),u()});window.bootstrapped&&(console.log("Loaded through window variable."),u()); diff --git a/public/build/assets/parse-downloaded-splits-4afea167.js b/public/build/assets/parse-downloaded-splits-19845c1d.js similarity index 90% rename from public/build/assets/parse-downloaded-splits-4afea167.js rename to public/build/assets/parse-downloaded-splits-19845c1d.js index 7c700f2052..de220ff604 100644 --- a/public/build/assets/parse-downloaded-splits-4afea167.js +++ b/public/build/assets/parse-downloaded-splits-19845c1d.js @@ -1 +1 @@ -import{c as r}from"./create-empty-split-fb5bda92.js";import{f as o}from"./vendor-fca45885.js";function c(a){let n=[];for(let i in a)if(a.hasOwnProperty(i)){let e=a[i],t=r();t.bill_id=e.bill_id,t.bill_name=e.bill_name,t.budget_id=e.budget_id,t.budget_name=e.budget_name,t.category_name=e.category_name,t.category_id=e.category_id,t.piggy_bank_id=e.piggy_bank_id,t.piggy_bank_name=e.piggy_bank_name,t.book_date=e.book_date,t.due_date=e.due_date,t.interest_date=e.interest_date,t.invoice_date=e.invoice_date,t.payment_date=e.payment_date,t.process_date=e.process_date,t.external_url=e.external_url,t.internal_reference=e.internal_reference,t.notes=e.notes,t.tags=e.tags,t.amount=parseFloat(e.amount).toFixed(e.currency_decimal_places),t.currency_code=e.currency_code,e.foreign_amount!==null&&(t.forein_currency_code=e.foreign_currency_code,t.foreign_amount=parseFloat(e.foreign_amount).toFixed(e.foreign_currency_decimal_places)),t.date=o(new Date(e.date),"yyyy-MM-dd HH:mm"),t.description=e.description,t.destination_account={id:e.destination_id,name:e.destination_name,type:e.destination_type,alpine_name:e.destination_name},t.source_account={id:e.source_id,name:e.source_name,type:e.source_type,alpine_name:e.source_name},e.latitude!==null&&(t.hasLocation=!0,t.latitude=e.latitude,t.longitude=e.longitude,t.zoomLevel=e.zoom_level),n.push(t)}return n}export{c as p}; +import{c as r}from"./create-empty-split-b2c15454.js";import{f as o}from"./vendor-0ba1deae.js";function c(a){let n=[];for(let i in a)if(a.hasOwnProperty(i)){let e=a[i],t=r();t.bill_id=e.bill_id,t.bill_name=e.bill_name,t.budget_id=e.budget_id,t.budget_name=e.budget_name,t.category_name=e.category_name,t.category_id=e.category_id,t.piggy_bank_id=e.piggy_bank_id,t.piggy_bank_name=e.piggy_bank_name,t.book_date=e.book_date,t.due_date=e.due_date,t.interest_date=e.interest_date,t.invoice_date=e.invoice_date,t.payment_date=e.payment_date,t.process_date=e.process_date,t.external_url=e.external_url,t.internal_reference=e.internal_reference,t.notes=e.notes,t.tags=e.tags,t.amount=parseFloat(e.amount).toFixed(e.currency_decimal_places),t.currency_code=e.currency_code,e.foreign_amount!==null&&(t.forein_currency_code=e.foreign_currency_code,t.foreign_amount=parseFloat(e.foreign_amount).toFixed(e.foreign_currency_decimal_places)),t.date=o(new Date(e.date),"yyyy-MM-dd HH:mm"),t.description=e.description,t.destination_account={id:e.destination_id,name:e.destination_name,type:e.destination_type,alpine_name:e.destination_name},t.source_account={id:e.source_id,name:e.source_name,type:e.source_type,alpine_name:e.source_name},e.latitude!==null&&(t.hasLocation=!0,t.latitude=e.latitude,t.longitude=e.longitude,t.zoomLevel=e.zoom_level),n.push(t)}return n}export{c as p}; diff --git a/public/build/assets/show-19f421da.js b/public/build/assets/show-19f421da.js new file mode 100644 index 0000000000..5b3d373e4f --- /dev/null +++ b/public/build/assets/show-19f421da.js @@ -0,0 +1 @@ +var m=Object.defineProperty;var f=(i,t,e)=>t in i?m(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var r=(i,t,e)=>(f(i,typeof t!="symbol"?t+"":t,e),e);import{d as x,f as w}from"./format-money-a71f277a.js";import{f as v,i as h}from"./vendor-0ba1deae.js";import{G as y}from"./get-971543fd.js";import{p as b}from"./parse-downloaded-splits-19845c1d.js";import"./create-empty-split-b2c15454.js";class l{constructor(t){if(this.constructor===l)throw new Error("It's abstract class");this.context=t}event_show(){this.context.typeElement.hideError(),this.context.typeElement.element.value=this.context.value,this.context.element.dispatchEvent(new CustomEvent("show"))}event_shown(){this.context.element.dispatchEvent(new CustomEvent("shown"))}event_hide(){this.context.element.dispatchEvent(new CustomEvent("hide"))}event_hidden(){this.context.element.dispatchEvent(new CustomEvent("hidden"))}init(){throw new Error("Method `init` not define!")}enable(){throw new Error("Method `enable` not define!")}disable(){throw new Error("Method `disable` not define!")}hide(){throw new Error("Method `hide` not define!")}}class E extends l{init(){this.popover=new bootstrap.Popover(this.context.element,{container:"body",content:this.context.typeElement.create(),html:!0,customClass:"dark-editable",title:this.context.title}),this.context.element.addEventListener("show.bs.popover",()=>{this.event_show()}),this.context.element.addEventListener("shown.bs.popover",()=>{this.event_shown()}),this.context.element.addEventListener("hide.bs.popover",()=>{this.event_hide()}),this.context.element.addEventListener("hidden.bs.popover",()=>{this.event_hidden()}),document.addEventListener("click",t=>{const e=t.target;if(e===this.popover.tip||e===this.context.element)return;let n=e;for(;n=n.parentNode;)if(n===this.popover.tip)return;this.hide()})}enable(){this.popover.enable()}disable(){this.popover.disable()}hide(){this.popover.hide()}}class _ extends l{init(){const t=()=>{if(!this.context.disabled){const e=this.context.typeElement.create();this.event_show(),this.context.element.removeEventListener("click",t),this.context.element.innerHTML="",this.context.element.append(e),this.event_shown()}};this.context.element.addEventListener("click",t)}enable(){}disable(){}hide(){this.event_hide(),this.context.element.innerHTML=this.context.value,setTimeout(()=>{this.init(),this.event_hidden()},100)}}class a{constructor(t){r(this,"context",null);r(this,"element",null);r(this,"error",null);r(this,"form",null);r(this,"load",null);r(this,"buttonGroup",null);r(this,"buttons",{success:null,cancel:null});if(this.constructor===a)throw new Error("It's abstract class");this.context=t}create(){throw new Error("Method `create` not define!")}createContainer(t){const e=document.createElement("div");this.element=t,this.error=this.createContainerError(),this.form=this.createContainerForm(),this.load=this.createContainerLoad(),this.buttons.success=this.createButtonSuccess(),this.buttons.cancel=this.createButtonCancel();const n=document.createElement("div");n.classList.add("col-12");const s=document.createElement("label");s.classList.add("visually-hidden"),s.for=t.id,n.append(s,t);const o=document.createElement("div");return o.classList.add("col-12"),this.buttonGroup=this.createButtonGroup(),this.buttonGroup.append(this.buttons.success,this.buttons.cancel),o.append(this.buttonGroup),this.form.append(n,o),e.append(this.error,this.form),e}createButtonGroup(){const t=document.createElement("div");return t.classList.add("btn-group","btn-group-sm"),t}createContainerError(){const t=document.createElement("div");return t.classList.add("text-danger","fst-italic","mb-2","fw-bold"),t.style.display="none",t}createContainerForm(){const t=document.createElement("form");return t.classList.add("row","row-cols-lg-auto","g-3","align-items-center"),t.addEventListener("submit",async e=>{e.preventDefault();const n=this.getValue();if(this.context.send&&this.context.pk&&this.context.url&&this.context.value!==n){this.showLoad();let s;try{const o=await this.ajax(n);o.ok?s=await this.context.success(o,n):s=await this.context.error(o,n)||`${o.status} ${o.statusText}`}catch(o){console.error(o),s=o}s?(this.setError(s),this.showError()):(this.setError(null),this.hideError(),this.context.value=this.getValue(),this.context.modeElement.hide(),this.initText()),this.hideLoad()}else this.context.value=this.getValue(),this.context.modeElement.hide(),this.initText();this.context.element.dispatchEvent(new CustomEvent("save"))}),t}createContainerLoad(){const t=document.createElement("div");t.style.display="none",t.style.position="absolute",t.style.background="white",t.style.width="100%",t.style.height="100%",t.style.top=0,t.style.left=0;const e=document.createElement("div");return e.classList.add("dark-editable-loader"),t.append(e),t}createButton(){const t=document.createElement("button");return t.type="button",t.classList.add("btn","btn-sm"),t.style.color="transparent",t.style.textShadow="0 0 0 white",t}createButtonSuccess(){const t=this.createButton();return t.type="submit",t.classList.add("btn-success"),t.innerHTML="✔",t}createButtonCancel(){const t=this.createButton();t.classList.add("btn-danger");const e=document.createElement("div");return e.innerHTML="✖",t.append(e),t.addEventListener("click",()=>{this.context.modeElement.hide()}),t}hideLoad(){this.load.style.display="none"}showLoad(){this.load.style.display="block"}ajax(t){let e=this.context.url;const n=new FormData;n.append("pk",this.context.pk),n.append("name",this.context.name),n.append("value",t);const s={};return s.method=this.context.ajaxOptions.method,s.method==="POST"?s.body=n:e+="?"+new URLSearchParams(n).toString(),fetch(e,s)}async successResponse(t,e){}async errorResponse(t,e){}setError(t){this.error.innerHTML=t}showError(){this.error.style.display="block"}hideError(){this.error&&(this.error.style.display="none")}createElement(t){const e=document.createElement(t);return console.log(e),e.classList.add("form-control"),this.context.required&&(e.required=this.context.required),this.add_focus(e),e}add_focus(t){this.context.element.addEventListener("shown",function(){t.focus()})}initText(){return this.context.value===""?(this.context.element.innerHTML=this.context.emptytext,!0):(this.context.element.innerHTML=this.context.value,!1)}initOptions(){}getValue(){return this.element.value}}class g extends a{create(){const t=this.createElement("input"),e=this.context.element.id+"_input";return t.type=this.context.type,t.id=e,t.autocomplete="off",t.placeholder=this.context.element.innerText,t.classList.add("form-control","form-control-md"),this.createContainer(t)}}class L extends a{create(){const t=this.createElement("textarea");return this.createContainer(t)}}class T extends a{create(){const t=this.createElement("select");return this.context.source.forEach(e=>{const n=document.createElement("option");n.value=e.value,n.innerHTML=e.text,t.append(n)}),this.createContainer(t)}initText(){if(this.context.element.innerHTML=this.context.emptytext,this.context.value!==""&&this.context.source.length>0)for(const t in this.context.source){const e=this.context.source[t];if(e.value==this.context.value)return this.context.element.innerHTML=e.text,!1}return!0}initOptions(){this.context.get_opt("source",[]),typeof this.context.source=="string"&&this.context.source!==""&&(this.context.source=JSON.parse(this.context.source))}}class u extends a{create(){const t=this.createElement("input");return t.type="date",this.createContainer(t)}initText(){return this.value===""?(this.context.element.innerHTML=this.context.emptytext,!0):(this.context.element.innerHTML=moment(this.context.value).format(this.context.viewformat),!1)}initOptions(){this.context.get_opt("format","YYYY-MM-DD"),this.context.get_opt("viewformat","YYYY-MM-DD")}}class M extends u{create(){const t=this.createElement("input");return t.type="datetime-local",this.createContainer(t)}initOptions(){this.context.get_opt("format","YYYY-MM-DD HH:mm"),this.context.get_opt("viewformat","YYYY-MM-DD HH:mm"),this.context.value=moment(this.context.value).format("YYYY-MM-DDTHH:mm")}}class k{constructor(t,e={}){r(this,"modeElement",null);r(this,"typeElement",null);r(this,"mode",null);r(this,"type",null);r(this,"emptytext",null);r(this,"viewformat",null);r(this,"pk",null);r(this,"name",null);this.element=t,this.options=e,this.init_options(),this.typeElement=this.route_type(),this.typeElement.initOptions(),this.modeElement=this.route_mode(),this.modeElement.init(),this.init_text(),this.init_style(),this.disabled&&this.disable(),this.element.dispatchEvent(new CustomEvent("init"))}get_opt(t,e){var n,s;return this[t]=((n=this.element.dataset)==null?void 0:n[t])??((s=this.options)==null?void 0:s[t])??e}get_opt_bool(t,e){return this.get_opt(t,e),typeof this[t]!="boolean"&&(this[t]==="true"?this[t]=!0:this[t]==="false"?this[t]=!1:this[t]=e),this[t]}init_options(){var t,e,n,s;this.get_opt("value",this.element.innerHTML),this.get_opt("name",this.element.id),this.get_opt("pk",null),this.get_opt("title",""),this.get_opt("type","text"),this.get_opt("emptytext","Empty"),this.get_opt("mode","popup"),this.get_opt("url",null),this.get_opt("ajaxOptions",{}),this.ajaxOptions=Object.assign({method:"POST",dataType:"text"},this.ajaxOptions),this.get_opt_bool("send",!0),this.get_opt_bool("disabled",!1),this.get_opt_bool("required",!1),(t=this.options)!=null&&t.success&&typeof((e=this.options)==null?void 0:e.success)=="function"&&(this.success=this.options.success),(n=this.options)!=null&&n.error&&typeof((s=this.options)==null?void 0:s.error)=="function"&&(this.error=this.options.error)}init_text(){const t="dark-editable-element-empty";this.element.classList.remove(t),this.typeElement.initText()&&this.element.classList.add(t)}init_style(){this.element.classList.add("dark-editable-element")}route_mode(){switch(this.mode){default:throw new Error(`Mode ${this.mode} not found!`);case"popup":return new E(this);case"inline":return new _(this)}}route_type(){if(this.type.prototype instanceof a)return new this.type(this);if(typeof this.type=="string")switch(this.type){case"text":case"password":case"email":case"url":case"tel":case"number":case"range":case"time":return new g(this);case"textarea":return new L(this);case"select":return new T(this);case"date":return new u(this);case"datetime":return new M(this)}throw new Error("Undefined type")}async success(t,e){return await this.typeElement.successResponse(t,e)}async error(t,e){return await this.typeElement.errorResponse(t,e)}enable(){this.disabled=!1,this.element.classList.remove("dark-editable-element-disabled"),this.modeElement.enable()}disable(){this.disabled=!0,this.element.classList.add("dark-editable-element-disabled"),this.modeElement.enable()}setValue(t){this.value=t,this.init_text()}getValue(){return this.value}}let C=function(){return{notifications:{error:{show:!1,text:"",url:""},success:{show:!1,text:"",url:""},wait:{show:!1,text:""}},groupProperties:{id:0,transactionType:"",transactionTypeTranslated:"",title:"",date:new Date},dateFields:["book_date","due_date","interest_date","invoice_date","payment_date","process_date"],metaFields:["external_id","internal_reference","sepa_batch_id","sepa_ct_id","sepa_ct_op","sepa_db","sepa_country","sepa_cc","sepa_ep","sepa_ci","external_url"],amounts:{},entries:[],pageProperties:{},formatMoney(i,t){return console.log("formatting",i,t),t===""&&(t="EUR"),w(i,t)},format(i){return v(i,h.t("config.date_time_fns"))},init(){this.notifications.wait.show=!0,this.notifications.wait.text=h.t("firefly.wait_loading_data");const i=window.location.href.split("/"),t=parseInt(i[i.length-1]);new y().show(t,{}).then(n=>{const s=n.data.data;this.groupProperties.id=parseInt(s.id),this.groupProperties.transactionType=s.attributes.transactions[0].type,this.groupProperties.transactionTypeTranslated=h.t("firefly."+s.attributes.transactions[0].type),this.groupProperties.title=s.attributes.title??s.attributes.transactions[0].description,this.entries=b(s.attributes.transactions),this.notifications.wait.show=!1}).then(()=>{for(let s in this.entries)if(this.entries.hasOwnProperty(s)){const o=this.entries[s].currency_code,c=this.entries[s].foreign_currency_code;this.amounts[o]===void 0&&(this.amounts[o]=0,this.amounts[o]+=parseFloat(this.entries[s].amount)),c!==null&&c!==""&&this.amounts[c]===void 0&&(this.amounts[c]=0,this.amounts[c]+=parseFloat(this.entries[s].foreign_amount)),parseInt(s)===0&&(this.groupProperties.date=this.entries[s].date)}const n=document.getElementById("journal_description");new k(n,{mode:"inline",url:"/something-else"})}).catch(n=>{this.notifications.error.show=!0,this.notifications.error.text=n.message})}}},d={show:C,dates:x};function p(){Object.keys(d).forEach(i=>{console.log(`Loading page component "${i}"`);let t=d[i]();Alpine.data(i,()=>t)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),p()});window.bootstrapped&&(console.log("Loaded through window variable."),p()); diff --git a/public/build/assets/show-61e79d17.js b/public/build/assets/show-61e79d17.js deleted file mode 100644 index 679d1b2cd2..0000000000 --- a/public/build/assets/show-61e79d17.js +++ /dev/null @@ -1 +0,0 @@ -import{d,f as p}from"./format-money-43e05102.js";import{f as c,i as o}from"./vendor-fca45885.js";import{G as l}from"./get-a29f6df7.js";import{p as f}from"./parse-downloaded-splits-4afea167.js";import"./create-empty-split-fb5bda92.js";let h=function(){return{notifications:{error:{show:!1,text:"",url:""},success:{show:!1,text:"",url:""},wait:{show:!1,text:""}},groupProperties:{id:0,transactionType:"",transactionTypeTranslated:"",title:"",date:new Date},dateFields:["book_date","due_date","interest_date","invoice_date","payment_date","process_date"],metaFields:["external_id","internal_reference","sepa_batch_id","sepa_ct_id","sepa_ct_op","sepa_db","sepa_country","sepa_cc","sepa_ep","sepa_ci","external_url"],amounts:{},entries:[],pageProperties:{},formatMoney(e,s){return p(e,s)},format(e){return c(e,o.t("config.date_time_fns"))},init(){this.notifications.wait.show=!0,this.notifications.wait.text=o.t("firefly.wait_loading_data");const e=window.location.href.split("/"),s=parseInt(e[e.length-1]);new l().show(s,{}).then(t=>{const i=t.data.data;this.groupProperties.id=parseInt(i.id),this.groupProperties.transactionType=i.attributes.transactions[0].type,this.groupProperties.transactionTypeTranslated=o.t("firefly."+i.attributes.transactions[0].type),this.groupProperties.title=i.attributes.title??i.attributes.transactions[0].description,this.entries=f(i.attributes.transactions),this.notifications.wait.show=!1}).then(()=>{for(let t in this.entries)if(this.entries.hasOwnProperty(t)){const i=this.entries[t].currency_code,a=this.entries[t].foreign_currency_code;this.amounts[i]===void 0&&(this.amounts[i]=0,this.amounts[i]+=parseFloat(this.entries[t].amount)),a!==null&&a!==""&&this.amounts[a]===void 0&&(this.amounts[a]=0,this.amounts[a]+=parseFloat(this.entries[t].foreign_amount)),parseInt(t)===0&&(this.groupProperties.date=this.entries[t].date)}}).catch(t=>{this.notifications.error.show=!0,this.notifications.error.text=t.message})}}},r={show:h,dates:d};function n(){Object.keys(r).forEach(e=>{console.log(`Loading page component "${e}"`);let s=r[e]();Alpine.data(e,()=>s)}),Alpine.start()}document.addEventListener("firefly-iii-bootstrapped",()=>{console.log("Loaded through event listener."),n()});window.bootstrapped&&(console.log("Loaded through window variable."),n()); diff --git a/public/build/assets/show-8b1429e5.css b/public/build/assets/show-8b1429e5.css new file mode 100644 index 0000000000..b42910d276 --- /dev/null +++ b/public/build/assets/show-8b1429e5.css @@ -0,0 +1 @@ +.dark-editable-element{border-bottom:dashed 1px #0088cc;text-decoration:none;cursor:pointer}.dark-editable-element-disabled{border-bottom:none;cursor:default}.dark-editable-element-empty{font-style:italic;color:#d14}.dark-editable{max-width:none}.dark-editable-loader{font-size:5px;left:50%;top:50%;width:1em;height:1em;border-radius:50%;position:relative;text-indent:-9999em;-webkit-animation:load5 1.1s infinite ease;animation:load5 1.1s infinite ease;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}@-webkit-keyframes load5{0%,to{box-shadow:0 -2.6em #000,1.8em -1.8em #0003,2.5em 0 #0003,1.75em 1.75em #0003,0 2.5em #0003,-1.8em 1.8em #0003,-2.6em 0 #00000080,-1.8em -1.8em #000000b3}12.5%{box-shadow:0 -2.6em #000000b3,1.8em -1.8em #000,2.5em 0 #0003,1.75em 1.75em #0003,0 2.5em #0003,-1.8em 1.8em #0003,-2.6em 0 #0003,-1.8em -1.8em #00000080}25%{box-shadow:0 -2.6em #00000080,1.8em -1.8em #000000b3,2.5em 0 #000,1.75em 1.75em #0003,0 2.5em #0003,-1.8em 1.8em #0003,-2.6em 0 #0003,-1.8em -1.8em #0003}37.5%{box-shadow:0 -2.6em #0003,1.8em -1.8em #00000080,2.5em 0 #000000b3,1.75em 1.75em #000,0 2.5em #0003,-1.8em 1.8em #0003,-2.6em 0 #0003,-1.8em -1.8em #0003}50%{box-shadow:0 -2.6em #0003,1.8em -1.8em #0003,2.5em 0 #00000080,1.75em 1.75em #000000b3,0 2.5em #000,-1.8em 1.8em #0003,-2.6em 0 #0003,-1.8em -1.8em #0003}62.5%{box-shadow:0 -2.6em #0003,1.8em -1.8em #0003,2.5em 0 #0003,1.75em 1.75em #00000080,0 2.5em #000000b3,-1.8em 1.8em #000,-2.6em 0 #0003,-1.8em -1.8em #0003}75%{box-shadow:0 -2.6em #0003,1.8em -1.8em #0003,2.5em 0 #0003,1.75em 1.75em #0003,0 2.5em #00000080,-1.8em 1.8em #000000b3,-2.6em 0 #000,-1.8em -1.8em #0003}87.5%{box-shadow:0 -2.6em #0003,1.8em -1.8em #0003,2.5em 0 #0003,1.75em 1.75em #0003,0 2.5em #0003,-1.8em 1.8em #00000080,-2.6em 0 #000000b3,-1.8em -1.8em #000}}@keyframes load5{0%,to{box-shadow:0 -2.6em #000,1.8em -1.8em #0003,2.5em 0 #0003,1.75em 1.75em #0003,0 2.5em #0003,-1.8em 1.8em #0003,-2.6em 0 #00000080,-1.8em -1.8em #000000b3}12.5%{box-shadow:0 -2.6em #000000b3,1.8em -1.8em #000,2.5em 0 #0003,1.75em 1.75em #0003,0 2.5em #0003,-1.8em 1.8em #0003,-2.6em 0 #0003,-1.8em -1.8em #00000080}25%{box-shadow:0 -2.6em #00000080,1.8em -1.8em #000000b3,2.5em 0 #000,1.75em 1.75em #0003,0 2.5em #0003,-1.8em 1.8em #0003,-2.6em 0 #0003,-1.8em -1.8em #0003}37.5%{box-shadow:0 -2.6em #0003,1.8em -1.8em #00000080,2.5em 0 #000000b3,1.75em 1.75em #000,0 2.5em #0003,-1.8em 1.8em #0003,-2.6em 0 #0003,-1.8em -1.8em #0003}50%{box-shadow:0 -2.6em #0003,1.8em -1.8em #0003,2.5em 0 #00000080,1.75em 1.75em #000000b3,0 2.5em #000,-1.8em 1.8em #0003,-2.6em 0 #0003,-1.8em -1.8em #0003}62.5%{box-shadow:0 -2.6em #0003,1.8em -1.8em #0003,2.5em 0 #0003,1.75em 1.75em #00000080,0 2.5em #000000b3,-1.8em 1.8em #000,-2.6em 0 #0003,-1.8em -1.8em #0003}75%{box-shadow:0 -2.6em #0003,1.8em -1.8em #0003,2.5em 0 #0003,1.75em 1.75em #0003,0 2.5em #00000080,-1.8em 1.8em #000000b3,-2.6em 0 #000,-1.8em -1.8em #0003}87.5%{box-shadow:0 -2.6em #0003,1.8em -1.8em #0003,2.5em 0 #0003,1.75em 1.75em #0003,0 2.5em #0003,-1.8em 1.8em #00000080,-2.6em 0 #000000b3,-1.8em -1.8em #000}} diff --git a/public/build/assets/splice-errors-into-transactions-995deb6d.js b/public/build/assets/splice-errors-into-transactions-995deb6d.js new file mode 100644 index 0000000000..c82f7356e0 --- /dev/null +++ b/public/build/assets/splice-errors-into-transactions-995deb6d.js @@ -0,0 +1 @@ +import{a as l}from"./format-money-a71f277a.js";import{a as p,G as f}from"./get-c4c00bed.js";import{n as m,i as _}from"./vendor-0ba1deae.js";function x(r,t,a){let n=[];for(let o in r)if(r.hasOwnProperty(o)){const e=r[o];let i=!1,u={};t!==null&&t.hasOwnProperty(o)&&(i=!0,t[o]);let c={};(i&&u.description!==e.description||!i)&&(c.description=e.description),c.source_name=e.source_account.name,c.destination_name=e.destination_account.name,c.amount=e.amount,c.currency_code=e.currency_code,c.date=e.date,c.interest_date=e.interest_date,c.book_date=e.book_date,c.process_date=e.process_date,c.due_date=e.due_date,c.payment_date=e.payment_date,c.invoice_date=e.invoice_date,c.budget_id=e.budget_id,c.category_name=e.category_name,c.piggy_bank_id=e.piggy_bank_id,c.bill_id=e.bill_id,c.tags=e.tags,c.notes=e.notes,c.internal_reference=e.internal_reference,c.external_url=e.external_url,c.store_location=!1,e.hasLocation&&(c.store_location=!0,c.longitude=e.longitude.toString(),c.latitude=e.latitude.toString(),c.zoom_level=e.zoomLevel),typeof e.foreign_currency_code<"u"&&e.foreign_currency_code.toString()!==""&&(c.foreign_currency_code=e.foreign_currency_code,typeof e.foreign_amount<"u"&&e.foreign_amount.toString()!==""&&(c.foreign_amount=e.foreign_amount),(typeof e.foreign_amount>"u"||e.foreign_amount.toString()==="")&&(delete c.foreign_amount,delete c.foreign_currency_code)),typeof e.source_account.id<"u"&&e.source_account.id.toString()!==""&&(c.source_id=e.source_account.id),typeof e.destination_account.id<"u"&&e.destination_account.id.toString()!==""&&(c.destination_id=e.destination_account.id),c.type=a,n.push(c)}return n}let g=class{list(t){return l.get("/api/v2/currencies",{params:t})}};function C(){let r={page:1,limit:1337};return new g().list(r).then(a=>{let n={defaultCurrency:{},nativeCurrencies:[],foreignCurrencies:[],enabledCurrencies:[]};n.foreignCurrencies.push({id:0,name:"(no foreign currency)",code:"",default:!1,symbol:"",decimal_places:2});for(let o in a.data.data)if(a.data.data.hasOwnProperty(o)){let e=a.data.data[o];if(e.attributes.enabled){let i={id:e.id,name:e.attributes.name,code:e.attributes.code,default:e.attributes.default,symbol:e.attributes.symbol,decimal_places:e.attributes.decimal_places};i.default&&(n.defaultCurrency=i),n.enabledCurrencies.push(i),n.nativeCurrencies.push(i),n.foreignCurrencies.push(i)}}return n})}class y{list(t){return l.get("/api/v2/budgets",{params:t})}}function $(){let r={page:1,limit:1337};return new y().list(r).then(a=>{let n=[{id:0,name:"(no budget)"}];for(let o in a.data.data)if(a.data.data.hasOwnProperty(o)){let e=a.data.data[o],i={id:e.id,name:e.attributes.name};n.push(i)}return n})}function O(){let r={page:1,limit:1337};return new p().list(r).then(a=>{let n={0:{id:0,name:"(no group)",order:0,piggyBanks:[{id:0,name:"(no piggy bank)",order:0}]}};for(let o in a.data.data)if(a.data.data.hasOwnProperty(o)){let e=a.data.data[o],i=e.attributes.object_group_id??"0",u=e.attributes.object_group_title??"(no group)",c={id:e.id,name:e.attributes.name,order:e.attributes.order};n.hasOwnProperty(i)||(n[i]={id:i,name:u,order:e.attributes.object_group_order??0,piggyBanks:[]}),n[i].piggyBanks.push(c),n[i].piggyBanks.sort((d,s)=>d.order-s.order)}return Object.keys(n).sort().reduce((o,e)=>(o[e]=n[e],o),{})})}function P(){let r={page:1,limit:1337};return new f().list(r).then(a=>{let n={0:{id:0,name:"(no group)",order:0,subscriptions:[{id:0,name:"(no subscription)",order:0}]}};for(let o in a.data.data)if(a.data.data.hasOwnProperty(o)){let e=a.data.data[o],i=e.attributes.object_group_id??"0",u=e.attributes.object_group_title??"(no group)",c={id:e.id,name:e.attributes.name,order:e.attributes.order};n.hasOwnProperty(i)||(n[i]={id:i,name:u,order:e.attributes.object_group_order??0,subscriptions:[]}),n[i].subscriptions.push(c),n[i].subscriptions.sort((d,s)=>d.order-s.order)}return Object.keys(n).sort().reduce((o,e)=>(o[e]=n[e],o),{})})}function j(){return{description:"/api/v2/autocomplete/transaction-descriptions",account:"/api/v2/autocomplete/accounts",category:"/api/v2/autocomplete/categories",tag:"/api/v2/autocomplete/tags"}}function A(r){const t={server:r.serverUrl,serverParams:{},fetchOptions:{headers:{"X-CSRF-TOKEN":document.head.querySelector('meta[name="csrf-token"]').content}},hiddenInput:!0,highlightTyped:!0,liveServer:!0};typeof r.filters<"u"&&r.filters.length>0&&(t.serverParams.types=r.filters),typeof r.onRenderItem<"u"&&r.onRenderItem!==null&&(t.onRenderItem=r.onRenderItem),r.valueField&&(t.valueField=r.valueField),r.labelField&&(t.labelField=r.labelField),r.onSelectItem&&(t.onSelectItem=r.onSelectItem),r.onChange&&(t.onChange=r.onChange),r.hiddenValue&&(t.hiddenValue=r.hiddenValue),m.init(r.selector,t)}function q(r,t){const a=parseInt(t._searchInput.attributes["data-index"].value);if(typeof r<"u"&&r.name){document.querySelector("#form")._x_dataStack[0].$data.entries[a].category_name=r.name;return}document.querySelector("#form")._x_dataStack[0].$data.entries[a].category_name=t._searchInput.value}function E(r,t){const a=parseInt(t._searchInput.attributes["data-index"].value);if(typeof r<"u"&&r.description){document.querySelector("#form")._x_dataStack[0].$data.entries[a].description=r.description;return}document.querySelector("#form")._x_dataStack[0].$data.entries[a].description=t._searchInput.value}function B(r,t){if(typeof r>"u"){const a=parseInt(t._searchInput.attributes["data-index"].value);if(document.querySelector("#form")._x_dataStack[0].$data.entries[a].destination_account.name===t._searchInput.value){console.warn('Ignore hallucinated destination account name change to "'+t._searchInput.value+'"');return}document.querySelector("#form")._x_dataStack[0].$data.entries[a].destination_account={name:t._searchInput.value,alpine_name:t._searchInput.value},document.querySelector("#form")._x_dataStack[0].changedDestinationAccount()}}function F(r,t){const a=parseInt(t._searchInput.attributes["data-index"].value);document.querySelector("#form")._x_dataStack[0].$data.entries[a].destination_account={id:r.id,name:r.name,alpine_name:r.name,type:r.type,currency_code:r.currency_code},document.querySelector("#form")._x_dataStack[0].changedDestinationAccount()}function G(r,t){if(typeof r>"u"){const a=parseInt(t._searchInput.attributes["data-index"].value);if(document.querySelector("#form")._x_dataStack[0].$data.entries[a].source_account.name===t._searchInput.value)return;document.querySelector("#form")._x_dataStack[0].$data.entries[a].source_account={name:t._searchInput.value,alpine_name:t._searchInput.value},document.querySelector("#form")._x_dataStack[0].changedSourceAccount()}}function R(r,t){const a=parseInt(t._searchInput.attributes["data-index"].value);document.querySelector("#form")._x_dataStack[0].$data.entries[a].source_account={id:r.id,name:r.name,alpine_name:r.name,type:r.type,currency_code:r.currency_code},document.querySelector("#form")._x_dataStack[0].changedSourceAccount()}class h{post(t,a,n){let o="/api/v1/attachments";return l.post(o,{filename:t,attachable_type:a,attachable_id:n})}upload(t,a){let n="./api/v1/attachments/"+t+"/upload";return axios.post(n,a)}}let b=function(r){let t=r.length,a=0,n=!1;for(const o in r)if(r.hasOwnProperty(o)&&/^0$|^[1-9]\d*$/.test(o)&&o<=4294967294&&n===!1){let e=new h;e.post(r[o].name,"TransactionJournal",r[o].journal).then(i=>{let u=parseInt(i.data.data.id);e.upload(u,r[o].content).then(c=>{if(a++,a===t){const d=new CustomEvent("upload-success",{some:"details"});document.dispatchEvent(d)}}).catch(c=>{console.error("Could not upload"),console.error(c),a++;const d=new CustomEvent("upload-failed",{error:c});document.dispatchEvent(d),n=!0})}).catch(i=>{console.error("Could not create upload."),console.error(i),a++;const u=new CustomEvent("upload-failed",{error:i});document.dispatchEvent(u),n=!0})}};function T(r,t){t=t.reverse();let a=[],n=0,o=[],e=document.querySelectorAll('input[name="attachments[]"]');for(const i in e)if(e.hasOwnProperty(i)&&/^0$|^[1-9]\d*$/.test(i)&&i<=4294967294)for(const u in e[i].files)e[i].files.hasOwnProperty(u)&&/^0$|^[1-9]\d*$/.test(u)&&u<=4294967294&&(a.push({journal:t[i].transaction_journal_id,file:e[i].files[u]}),n++);for(const i in a)a.hasOwnProperty(i)&&/^0$|^[1-9]\d*$/.test(i)&&i<=4294967294&&function(u,c){let d=new FileReader;d.onloadend=function(s){s.target.readyState===FileReader.DONE&&(o.push({name:a[c].file.name,journal:a[c].journal,content:new Blob([s.target.result])}),o.length===n&&b(o))},d.readAsArrayBuffer(u.file)}(a[i],i);return n}function v(r,t,a){let n=[];for(let o in a)a.hasOwnProperty(o)&&n.push(a[o].replace(r,t));return n}function D(r,t){let a,n,o;for(const e in r)if(r.hasOwnProperty(e)){if(e==="group_title"){console.error("Cannot handle error in group title.");continue}if(a=parseInt(e.split(".")[1]),n=e.split(".")[2],o=v(e,n,r[e]),!t.hasOwnProperty(a)){console.error("Cannot handle errors in index #"+a);continue}switch(n){case"currency_code":case"foreign_currency_code":case"category_name":case"piggy_bank_id":case"notes":case"internal_reference":case"external_url":case"latitude":case"longitude":case"zoom_level":case"interest_date":case"book_date":case"process_date":case"due_date":case"payment_date":case"invoice_date":case"amount":case"date":case"budget_id":case"bill_id":case"description":case"tags":t[a].errors[n]=o;break;case"source_name":case"source_id":t[a].errors.source_account=t[a].errors.source_account.concat(o);break;case"type":t[a].errors.source_account=t[a].errors.source_account.concat([_.t("validation.bad_type_source")]),t[a].errors.destination_account=t[a].errors.destination_account.concat([_.t("validation.bad_type_destination")]);break;case"destination_name":case"destination_id":t[a].errors.destination_account=t[a].errors.destination_account.concat(o);break;case"foreign_amount":case"foreign_currency_id":t[a].errors.foreign_amount=t[a].errors.foreign_amount.concat(o);break}typeof t[a]<"u"&&(t[a].errors.source_account=Array.from(new Set(t[a].errors.source_account)),t[a].errors.destination_account=Array.from(new Set(t[a].errors.destination_account)))}return console.log(t[0].errors),t}export{$ as a,O as b,P as c,T as d,A as e,G as f,R as g,B as h,F as i,j,q as k,C as l,E as m,x as p,D as s}; diff --git a/public/build/assets/splice-errors-into-transactions-9c9b99c0.js b/public/build/assets/splice-errors-into-transactions-9c9b99c0.js deleted file mode 100644 index a11bdf4ad2..0000000000 --- a/public/build/assets/splice-errors-into-transactions-9c9b99c0.js +++ /dev/null @@ -1 +0,0 @@ -import{a as l}from"./format-money-43e05102.js";import{a as p,G as f}from"./get-94678769.js";import{n as m,i as _}from"./vendor-fca45885.js";function x(r,n){let a=[];for(let o in r)if(r.hasOwnProperty(o)){const t=r[o];let e={};e.description=t.description,e.source_name=t.source_account.name,e.destination_name=t.destination_account.name,e.amount=t.amount,e.currency_code=t.currency_code,e.date=t.date,e.interest_date=t.interest_date,e.book_date=t.book_date,e.process_date=t.process_date,e.due_date=t.due_date,e.payment_date=t.payment_date,e.invoice_date=t.invoice_date,e.budget_id=t.budget_id,e.category_name=t.category_name,e.piggy_bank_id=t.piggy_bank_id,e.bill_id=t.bill_id,e.tags=t.tags,e.notes=t.notes,e.internal_reference=t.internal_reference,e.external_url=t.external_url,e.store_location=!1,t.hasLocation&&(e.store_location=!0,e.longitude=t.longitude.toString(),e.latitude=t.latitude.toString(),e.zoom_level=t.zoomLevel),typeof t.foreign_currency_code<"u"&&t.foreign_currency_code.toString()!==""&&(e.foreign_currency_code=t.foreign_currency_code,typeof t.foreign_amount<"u"&&t.foreign_amount.toString()!==""&&(e.foreign_amount=t.foreign_amount),(typeof t.foreign_amount>"u"||t.foreign_amount.toString()==="")&&(delete e.foreign_amount,delete e.foreign_currency_code)),typeof t.source_account.id<"u"&&t.source_account.id.toString()!==""&&(e.source_id=t.source_account.id),typeof t.destination_account.id<"u"&&t.destination_account.id.toString()!==""&&(e.destination_id=t.destination_account.id),e.type=n,a.push(e)}return a}let g=class{list(n){return l.get("/api/v2/currencies",{params:n})}};function C(){let r={page:1,limit:1337};return new g().list(r).then(a=>{let o={defaultCurrency:{},nativeCurrencies:[],foreignCurrencies:[],enabledCurrencies:[]};o.foreignCurrencies.push({id:0,name:"(no foreign currency)",code:"",default:!1,symbol:"",decimal_places:2});for(let t in a.data.data)if(a.data.data.hasOwnProperty(t)){let e=a.data.data[t];if(e.attributes.enabled){let c={id:e.id,name:e.attributes.name,code:e.attributes.code,default:e.attributes.default,symbol:e.attributes.symbol,decimal_places:e.attributes.decimal_places};c.default&&(o.defaultCurrency=c),o.enabledCurrencies.push(c),o.nativeCurrencies.push(c),o.foreignCurrencies.push(c)}}return o})}class y{list(n){return l.get("/api/v2/budgets",{params:n})}}function $(){let r={page:1,limit:1337};return new y().list(r).then(a=>{let o=[{id:0,name:"(no budget)"}];for(let t in a.data.data)if(a.data.data.hasOwnProperty(t)){let e=a.data.data[t],c={id:e.id,name:e.attributes.name};o.push(c)}return o})}function O(){let r={page:1,limit:1337};return new p().list(r).then(a=>{let o={0:{id:0,name:"(no group)",order:0,piggyBanks:[{id:0,name:"(no piggy bank)",order:0}]}};for(let t in a.data.data)if(a.data.data.hasOwnProperty(t)){let e=a.data.data[t],c=e.attributes.object_group_id??"0",i=e.attributes.object_group_title??"(no group)",u={id:e.id,name:e.attributes.name,order:e.attributes.order};o.hasOwnProperty(c)||(o[c]={id:c,name:i,order:e.attributes.object_group_order??0,piggyBanks:[]}),o[c].piggyBanks.push(u),o[c].piggyBanks.sort((d,s)=>d.order-s.order)}return Object.keys(o).sort().reduce((t,e)=>(t[e]=o[e],t),{})})}function j(){let r={page:1,limit:1337};return new f().list(r).then(a=>{let o={0:{id:0,name:"(no group)",order:0,subscriptions:[{id:0,name:"(no subscription)",order:0}]}};for(let t in a.data.data)if(a.data.data.hasOwnProperty(t)){let e=a.data.data[t],c=e.attributes.object_group_id??"0",i=e.attributes.object_group_title??"(no group)",u={id:e.id,name:e.attributes.name,order:e.attributes.order};o.hasOwnProperty(c)||(o[c]={id:c,name:i,order:e.attributes.object_group_order??0,subscriptions:[]}),o[c].subscriptions.push(u),o[c].subscriptions.sort((d,s)=>d.order-s.order)}return Object.keys(o).sort().reduce((t,e)=>(t[e]=o[e],t),{})})}function A(){return{description:"/api/v2/autocomplete/transaction-descriptions",account:"/api/v2/autocomplete/accounts",category:"/api/v2/autocomplete/categories",tag:"/api/v2/autocomplete/tags"}}function P(r){const n={server:r.serverUrl,serverParams:{},fetchOptions:{headers:{"X-CSRF-TOKEN":document.head.querySelector('meta[name="csrf-token"]').content}},hiddenInput:!0,highlightTyped:!0,liveServer:!0};typeof r.filters<"u"&&r.filters.length>0&&(n.serverParams.types=r.filters),typeof r.onRenderItem<"u"&&r.onRenderItem!==null&&(n.onRenderItem=r.onRenderItem),r.valueField&&(n.valueField=r.valueField),r.labelField&&(n.labelField=r.labelField),r.onSelectItem&&(n.onSelectItem=r.onSelectItem),r.onChange&&(n.onChange=r.onChange),r.hiddenValue&&(n.hiddenValue=r.hiddenValue),m.init(r.selector,n)}function q(r,n){const a=parseInt(n._searchInput.attributes["data-index"].value);if(typeof r<"u"&&r.name){document.querySelector("#form")._x_dataStack[0].$data.entries[a].category_name=r.name;return}document.querySelector("#form")._x_dataStack[0].$data.entries[a].category_name=n._searchInput.value}function E(r,n){const a=parseInt(n._searchInput.attributes["data-index"].value);if(typeof r<"u"&&r.description){document.querySelector("#form")._x_dataStack[0].$data.entries[a].description=r.description;return}document.querySelector("#form")._x_dataStack[0].$data.entries[a].description=n._searchInput.value}function B(r,n){if(typeof r>"u"){const a=parseInt(n._searchInput.attributes["data-index"].value);if(document.querySelector("#form")._x_dataStack[0].$data.entries[a].destination_account.name===n._searchInput.value){console.warn('Ignore hallucinated destination account name change to "'+n._searchInput.value+'"');return}document.querySelector("#form")._x_dataStack[0].$data.entries[a].destination_account={name:n._searchInput.value,alpine_name:n._searchInput.value},document.querySelector("#form")._x_dataStack[0].changedDestinationAccount()}}function F(r,n){const a=parseInt(n._searchInput.attributes["data-index"].value);document.querySelector("#form")._x_dataStack[0].$data.entries[a].destination_account={id:r.id,name:r.name,alpine_name:r.name,type:r.type,currency_code:r.currency_code},document.querySelector("#form")._x_dataStack[0].changedDestinationAccount()}function G(r,n){if(typeof r>"u"){const a=parseInt(n._searchInput.attributes["data-index"].value);if(document.querySelector("#form")._x_dataStack[0].$data.entries[a].source_account.name===n._searchInput.value)return;document.querySelector("#form")._x_dataStack[0].$data.entries[a].source_account={name:n._searchInput.value,alpine_name:n._searchInput.value},document.querySelector("#form")._x_dataStack[0].changedSourceAccount()}}function R(r,n){const a=parseInt(n._searchInput.attributes["data-index"].value);document.querySelector("#form")._x_dataStack[0].$data.entries[a].source_account={id:r.id,name:r.name,alpine_name:r.name,type:r.type,currency_code:r.currency_code},document.querySelector("#form")._x_dataStack[0].changedSourceAccount()}class h{post(n,a,o){let t="/api/v1/attachments";return l.post(t,{filename:n,attachable_type:a,attachable_id:o})}upload(n,a){let o="./api/v1/attachments/"+n+"/upload";return axios.post(o,a)}}let b=function(r){let n=r.length,a=0,o=!1;for(const t in r)if(r.hasOwnProperty(t)&&/^0$|^[1-9]\d*$/.test(t)&&t<=4294967294&&o===!1){let e=new h;e.post(r[t].name,"TransactionJournal",r[t].journal).then(c=>{let i=parseInt(c.data.data.id);e.upload(i,r[t].content).then(u=>{if(a++,a===n){const d=new CustomEvent("upload-success",{some:"details"});document.dispatchEvent(d)}}).catch(u=>{console.error("Could not upload"),console.error(u),a++;const d=new CustomEvent("upload-failed",{error:u});document.dispatchEvent(d),o=!0})}).catch(c=>{console.error("Could not create upload."),console.error(c),a++;const i=new CustomEvent("upload-failed",{error:c});document.dispatchEvent(i),o=!0})}};function T(r,n){n=n.reverse();let a=[],o=0,t=[],e=document.querySelectorAll('input[name="attachments[]"]');for(const c in e)if(e.hasOwnProperty(c)&&/^0$|^[1-9]\d*$/.test(c)&&c<=4294967294)for(const i in e[c].files)e[c].files.hasOwnProperty(i)&&/^0$|^[1-9]\d*$/.test(i)&&i<=4294967294&&(a.push({journal:n[c].transaction_journal_id,file:e[c].files[i]}),o++);for(const c in a)a.hasOwnProperty(c)&&/^0$|^[1-9]\d*$/.test(c)&&c<=4294967294&&function(i,u){let d=new FileReader;d.onloadend=function(s){s.target.readyState===FileReader.DONE&&(t.push({name:a[u].file.name,journal:a[u].journal,content:new Blob([s.target.result])}),t.length===o&&b(t))},d.readAsArrayBuffer(i.file)}(a[c],c);return o}function v(r,n,a){let o=[];for(let t in a)a.hasOwnProperty(t)&&o.push(a[t].replace(r,n));return o}function D(r,n){let a,o,t;for(const e in r)if(r.hasOwnProperty(e)){if(e==="group_title"){console.error("Cannot handle error in group title.");continue}if(a=parseInt(e.split(".")[1]),o=e.split(".")[2],t=v(e,o,r[e]),!n.hasOwnProperty(a)){console.error("Cannot handle errors in index #"+a);continue}switch(o){case"currency_code":case"foreign_currency_code":case"category_name":case"piggy_bank_id":case"notes":case"internal_reference":case"external_url":case"latitude":case"longitude":case"zoom_level":case"interest_date":case"book_date":case"process_date":case"due_date":case"payment_date":case"invoice_date":case"amount":case"date":case"budget_id":case"bill_id":case"description":case"tags":n[a].errors[o]=t;break;case"source_name":case"source_id":n[a].errors.source_account=n[a].errors.source_account.concat(t);break;case"type":n[a].errors.source_account=n[a].errors.source_account.concat([_.t("validation.bad_type_source")]),n[a].errors.destination_account=n[a].errors.destination_account.concat([_.t("validation.bad_type_destination")]);break;case"destination_name":case"destination_id":n[a].errors.destination_account=n[a].errors.destination_account.concat(t);break;case"foreign_amount":case"foreign_currency_id":n[a].errors.foreign_amount=n[a].errors.foreign_amount.concat(t);break}typeof n[a]<"u"&&(n[a].errors.source_account=Array.from(new Set(n[a].errors.source_account)),n[a].errors.destination_account=Array.from(new Set(n[a].errors.destination_account)))}return console.log(n[0].errors),n}export{$ as a,O as b,j as c,T as d,P as e,G as f,R as g,B as h,F as i,A as j,q as k,C as l,E as m,x as p,D as s}; diff --git a/public/build/assets/vendor-fca45885.js b/public/build/assets/vendor-0ba1deae.js similarity index 99% rename from public/build/assets/vendor-fca45885.js rename to public/build/assets/vendor-0ba1deae.js index b7eb11a8f1..acd3c7c065 100644 --- a/public/build/assets/vendor-fca45885.js +++ b/public/build/assets/vendor-0ba1deae.js @@ -16,7 +16,7 @@ ${e?'Expression: "'+e+`" * Bootstrap v5.3.2 (https://getbootstrap.com/) * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */const elementMap=new Map,Data={set(n,t,e){elementMap.has(n)||elementMap.set(n,new Map);const i=elementMap.get(n);if(!i.has(t)&&i.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`);return}i.set(t,e)},get(n,t){return elementMap.has(n)&&elementMap.get(n).get(t)||null},remove(n,t){if(!elementMap.has(n))return;const e=elementMap.get(n);e.delete(t),e.size===0&&elementMap.delete(n)}},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=n=>(n&&window.CSS&&window.CSS.escape&&(n=n.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),n),toType=n=>n==null?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=n=>{do n+=Math.floor(Math.random()*MAX_UID);while(document.getElementById(n));return n},getTransitionDurationFromElement=n=>{if(!n)return 0;let{transitionDuration:t,transitionDelay:e}=window.getComputedStyle(n);const i=Number.parseFloat(t),r=Number.parseFloat(e);return!i&&!r?0:(t=t.split(",")[0],e=e.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(e))*MILLISECONDS_MULTIPLIER)},triggerTransitionEnd=n=>{n.dispatchEvent(new Event(TRANSITION_END))},isElement=n=>!n||typeof n!="object"?!1:(typeof n.jquery<"u"&&(n=n[0]),typeof n.nodeType<"u"),getElement=n=>isElement(n)?n.jquery?n[0]:n:typeof n=="string"&&n.length>0?document.querySelector(parseSelector(n)):null,isVisible=n=>{if(!isElement(n)||n.getClientRects().length===0)return!1;const t=getComputedStyle(n).getPropertyValue("visibility")==="visible",e=n.closest("details:not([open])");if(!e)return t;if(e!==n){const i=n.closest("summary");if(i&&i.parentNode!==e||i===null)return!1}return t},isDisabled=n=>!n||n.nodeType!==Node.ELEMENT_NODE||n.classList.contains("disabled")?!0:typeof n.disabled<"u"?n.disabled:n.hasAttribute("disabled")&&n.getAttribute("disabled")!=="false",findShadowRoot=n=>{if(!document.documentElement.attachShadow)return null;if(typeof n.getRootNode=="function"){const t=n.getRootNode();return t instanceof ShadowRoot?t:null}return n instanceof ShadowRoot?n:n.parentNode?findShadowRoot(n.parentNode):null},noop$2=()=>{},reflow=n=>{n.offsetHeight},getjQuery=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,DOMContentLoadedCallbacks=[],onDOMContentLoaded=n=>{document.readyState==="loading"?(DOMContentLoadedCallbacks.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of DOMContentLoadedCallbacks)t()}),DOMContentLoadedCallbacks.push(n)):n()},isRTL=()=>document.documentElement.dir==="rtl",defineJQueryPlugin=n=>{onDOMContentLoaded(()=>{const t=getjQuery();if(t){const e=n.NAME,i=t.fn[e];t.fn[e]=n.jQueryInterface,t.fn[e].Constructor=n,t.fn[e].noConflict=()=>(t.fn[e]=i,n.jQueryInterface)}})},execute=(n,t=[],e=n)=>typeof n=="function"?n(...t):e,executeAfterTransition=(n,t,e=!0)=>{if(!e){execute(n);return}const i=5,r=getTransitionDurationFromElement(t)+i;let a=!1;const o=({target:l})=>{l===t&&(a=!0,t.removeEventListener(TRANSITION_END,o),execute(n))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{a||triggerTransitionEnd(t)},r)},getNextActiveElement=(n,t,e,i)=>{const r=n.length;let a=n.indexOf(t);return a===-1?!e&&i?n[r-1]:n[0]:(a+=e?1:-1,i&&(a=(a+r)%r),n[Math.max(0,Math.min(a,r-1))])},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function makeEventUid(n,t){return t&&`${t}::${uidEvent++}`||n.uidEvent||uidEvent++}function getElementEvents(n){const t=makeEventUid(n);return n.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(n,t){return function e(i){return hydrateObj(i,{delegateTarget:n}),e.oneOff&&EventHandler.off(n,i.type,t),t.apply(n,[i])}}function bootstrapDelegationHandler(n,t,e){return function i(r){const a=n.querySelectorAll(t);for(let{target:o}=r;o&&o!==this;o=o.parentNode)for(const l of a)if(l===o)return hydrateObj(r,{delegateTarget:o}),i.oneOff&&EventHandler.off(n,r.type,t,e),e.apply(o,[r])}}function findHandler(n,t,e=null){return Object.values(n).find(i=>i.callable===t&&i.delegationSelector===e)}function normalizeParameters(n,t,e){const i=typeof t=="string",r=i?e:t||e;let a=getTypeEvent(n);return nativeEvents.has(a)||(a=n),[i,r,a]}function addHandler(n,t,e,i,r){if(typeof t!="string"||!n)return;let[a,o,l]=normalizeParameters(t,e,i);t in customEvents&&(o=(w=>function(v){if(!v.relatedTarget||v.relatedTarget!==v.delegateTarget&&!v.delegateTarget.contains(v.relatedTarget))return w.call(this,v)})(o));const u=getElementEvents(n),d=u[l]||(u[l]={}),m=findHandler(d,o,a?e:null);if(m){m.oneOff=m.oneOff&&r;return}const p=makeEventUid(o,t.replace(namespaceRegex,"")),_=a?bootstrapDelegationHandler(n,e,o):bootstrapHandler(n,o);_.delegationSelector=a?e:null,_.callable=o,_.oneOff=r,_.uidEvent=p,d[p]=_,n.addEventListener(l,_,a)}function removeHandler(n,t,e,i,r){const a=findHandler(t[e],i,r);a&&(n.removeEventListener(e,a,!!r),delete t[e][a.uidEvent])}function removeNamespacedHandlers(n,t,e,i){const r=t[e]||{};for(const[a,o]of Object.entries(r))a.includes(i)&&removeHandler(n,t,e,o.callable,o.delegationSelector)}function getTypeEvent(n){return n=n.replace(stripNameRegex,""),customEvents[n]||n}const EventHandler={on(n,t,e,i){addHandler(n,t,e,i,!1)},one(n,t,e,i){addHandler(n,t,e,i,!0)},off(n,t,e,i){if(typeof t!="string"||!n)return;const[r,a,o]=normalizeParameters(t,e,i),l=o!==t,u=getElementEvents(n),d=u[o]||{},m=t.startsWith(".");if(typeof a<"u"){if(!Object.keys(d).length)return;removeHandler(n,u,o,a,r?e:null);return}if(m)for(const p of Object.keys(u))removeNamespacedHandlers(n,u,p,t.slice(1));for(const[p,_]of Object.entries(d)){const y=p.replace(stripUidRegex,"");(!l||t.includes(y))&&removeHandler(n,u,o,_.callable,_.delegationSelector)}},trigger(n,t,e){if(typeof t!="string"||!n)return null;const i=getjQuery(),r=getTypeEvent(t),a=t!==r;let o=null,l=!0,u=!0,d=!1;a&&i&&(o=i.Event(t,e),i(n).trigger(o),l=!o.isPropagationStopped(),u=!o.isImmediatePropagationStopped(),d=o.isDefaultPrevented());const m=hydrateObj(new Event(t,{bubbles:l,cancelable:!0}),e);return d&&m.preventDefault(),u&&n.dispatchEvent(m),m.defaultPrevented&&o&&o.preventDefault(),m}};function hydrateObj(n,t={}){for(const[e,i]of Object.entries(t))try{n[e]=i}catch{Object.defineProperty(n,e,{configurable:!0,get(){return i}})}return n}function normalizeData(n){if(n==="true")return!0;if(n==="false")return!1;if(n===Number(n).toString())return Number(n);if(n===""||n==="null")return null;if(typeof n!="string")return n;try{return JSON.parse(decodeURIComponent(n))}catch{return n}}function normalizeDataKey(n){return n.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const Manipulator={setDataAttribute(n,t,e){n.setAttribute(`data-bs-${normalizeDataKey(t)}`,e)},removeDataAttribute(n,t){n.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(n){if(!n)return{};const t={},e=Object.keys(n.dataset).filter(i=>i.startsWith("bs")&&!i.startsWith("bsConfig"));for(const i of e){let r=i.replace(/^bs/,"");r=r.charAt(0).toLowerCase()+r.slice(1,r.length),t[r]=normalizeData(n.dataset[i])}return t},getDataAttribute(n,t){return normalizeData(n.getAttribute(`data-bs-${normalizeDataKey(t)}`))}};let Config$1=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=isElement(e)?Manipulator.getDataAttribute(e,"config"):{};return{...this.constructor.Default,...typeof i=="object"?i:{},...isElement(e)?Manipulator.getDataAttributes(e):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,r]of Object.entries(e)){const a=t[i],o=isElement(a)?"element":toType(a);if(!new RegExp(r).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${o}" but expected type "${r}".`)}}};const VERSION="5.3.2";class BaseComponent extends Config$1{constructor(t,e){super(),t=getElement(t),t&&(this._element=t,this._config=this._getConfig(e),Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){executeAfterTransition(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Data.get(getElement(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,typeof e=="object"?e:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const getSelector=n=>{let t=n.getAttribute("data-bs-target");if(!t||t==="#"){let e=n.getAttribute("href");if(!e||!e.includes("#")&&!e.startsWith("."))return null;e.includes("#")&&!e.startsWith("#")&&(e=`#${e.split("#")[1]}`),t=e&&e!=="#"?parseSelector(e.trim()):null}return t},SelectorEngine={find(n,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,n))},findOne(n,t=document.documentElement){return Element.prototype.querySelector.call(t,n)},children(n,t){return[].concat(...n.children).filter(e=>e.matches(t))},parents(n,t){const e=[];let i=n.parentNode.closest(t);for(;i;)e.push(i),i=i.parentNode.closest(t);return e},prev(n,t){let e=n.previousElementSibling;for(;e;){if(e.matches(t))return[e];e=e.previousElementSibling}return[]},next(n,t){let e=n.nextElementSibling;for(;e;){if(e.matches(t))return[e];e=e.nextElementSibling}return[]},focusableChildren(n){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,n).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(n){const t=getSelector(n);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(n){const t=getSelector(n);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(n){const t=getSelector(n);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(n,t="hide")=>{const e=`click.dismiss${n.EVENT_KEY}`,i=n.NAME;EventHandler.on(document,e,`[data-bs-dismiss="${i}"]`,function(r){if(["A","AREA"].includes(this.tagName)&&r.preventDefault(),isDisabled(this))return;const a=SelectorEngine.getElementFromSelector(this)||this.closest(`.${i}`);n.getOrCreateInstance(a)[t]()})},NAME$f="alert",DATA_KEY$a="bs.alert",EVENT_KEY$b=`.${DATA_KEY$a}`,EVENT_CLOSE=`close${EVENT_KEY$b}`,EVENT_CLOSED=`closed${EVENT_KEY$b}`,CLASS_NAME_FADE$5="fade",CLASS_NAME_SHOW$8="show";class Alert extends BaseComponent{static get NAME(){return NAME$f}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove(CLASS_NAME_SHOW$8);const e=this._element.classList.contains(CLASS_NAME_FADE$5);this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}static jQueryInterface(t){return this.each(function(){const e=Alert.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}enableDismissTrigger(Alert,"close");defineJQueryPlugin(Alert);const NAME$e="button",DATA_KEY$9="bs.button",EVENT_KEY$a=`.${DATA_KEY$9}`,DATA_API_KEY$6=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$a}${DATA_API_KEY$6}`;class Button extends BaseComponent{static get NAME(){return NAME$e}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(CLASS_NAME_ACTIVE$3))}static jQueryInterface(t){return this.each(function(){const e=Button.getOrCreateInstance(this);t==="toggle"&&e[t]()})}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$5,n=>{n.preventDefault();const t=n.target.closest(SELECTOR_DATA_TOGGLE$5);Button.getOrCreateInstance(t).toggle()});defineJQueryPlugin(Button);const NAME$d="swipe",EVENT_KEY$9=".bs.swipe",EVENT_TOUCHSTART=`touchstart${EVENT_KEY$9}`,EVENT_TOUCHMOVE=`touchmove${EVENT_KEY$9}`,EVENT_TOUCHEND=`touchend${EVENT_KEY$9}`,EVENT_POINTERDOWN=`pointerdown${EVENT_KEY$9}`,EVENT_POINTERUP=`pointerup${EVENT_KEY$9}`,POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$c={endCallback:null,leftCallback:null,rightCallback:null},DefaultType$c={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Swipe extends Config$1{constructor(t,e){super(),this._element=t,!(!t||!Swipe.isSupported())&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}dispose(){EventHandler.off(this._element,EVENT_KEY$9)}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX)}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),execute(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=SWIPE_THRESHOLD)return;const e=t/this._deltaX;this._deltaX=0,e&&execute(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,t=>this._start(t)),EventHandler.on(this._element,EVENT_POINTERUP,t=>this._end(t)),this._element.classList.add(CLASS_NAME_POINTER_EVENT)):(EventHandler.on(this._element,EVENT_TOUCHSTART,t=>this._start(t)),EventHandler.on(this._element,EVENT_TOUCHMOVE,t=>this._move(t)),EventHandler.on(this._element,EVENT_TOUCHEND,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===POINTER_TYPE_PEN||t.pointerType===POINTER_TYPE_TOUCH)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$c="carousel",DATA_KEY$8="bs.carousel",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$8}`,EVENT_SLID=`slid${EVENT_KEY$8}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$8}`,EVENT_MOUSEENTER$1=`mouseenter${EVENT_KEY$8}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$8}`,EVENT_DRAG_START=`dragstart${EVENT_KEY$8}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$8}${DATA_API_KEY$5}`,EVENT_CLICK_DATA_API$5=`click${EVENT_KEY$8}${DATA_API_KEY$5}`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",SELECTOR_ACTIVE=".active",SELECTOR_ITEM=".carousel-item",SELECTOR_ACTIVE_ITEM=SELECTOR_ACTIVE+SELECTOR_ITEM,SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$1]:DIRECTION_RIGHT,[ARROW_RIGHT_KEY$1]:DIRECTION_LEFT},Default$b={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},DefaultType$b={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Carousel extends BaseComponent{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._addEventListeners(),this._config.ride===CLASS_NAME_CAROUSEL&&this.cycle()}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}next(){this._slide(ORDER_NEXT)}nextWhenVisible(){!document.hidden&&isVisible(this._element)&&this.next()}prev(){this._slide(ORDER_PREV)}pause(){this._isSliding&&triggerTransitionEnd(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){EventHandler.one(this._element,EVENT_SLID,()=>this.cycle());return}this.cycle()}}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding){EventHandler.one(this._element,EVENT_SLID,()=>this.to(t));return}const i=this._getItemIndex(this._getActive());if(i===t)return;const r=t>i?ORDER_NEXT:ORDER_PREV;this._slide(r,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$1,t=>this._keydown(t)),this._config.pause==="hover"&&(EventHandler.on(this._element,EVENT_MOUSEENTER$1,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),this._config.touch&&Swipe.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const i of SelectorEngine.find(SELECTOR_ITEM_IMG,this._element))EventHandler.on(i,EVENT_DRAG_START,r=>r.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder(DIRECTION_LEFT)),rightCallback:()=>this._slide(this._directionToOrder(DIRECTION_RIGHT)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),TOUCHEVENT_COMPAT_WAIT+this._config.interval))}};this._swipeHelper=new Swipe(this._element,e)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=KEY_TO_DIRECTION[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=SelectorEngine.findOne(SELECTOR_ACTIVE,this._indicatorsElement);e.classList.remove(CLASS_NAME_ACTIVE$2),e.removeAttribute("aria-current");const i=SelectorEngine.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(CLASS_NAME_ACTIVE$2),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),r=t===ORDER_NEXT,a=e||getNextActiveElement(this._getItems(),i,r,this._config.wrap);if(a===i)return;const o=this._getItemIndex(a),l=y=>EventHandler.trigger(this._element,y,{relatedTarget:a,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(l(EVENT_SLIDE).defaultPrevented||!i||!a)return;const d=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=a;const m=r?CLASS_NAME_START:CLASS_NAME_END,p=r?CLASS_NAME_NEXT:CLASS_NAME_PREV;a.classList.add(p),reflow(a),i.classList.add(m),a.classList.add(m);const _=()=>{a.classList.remove(m,p),a.classList.add(CLASS_NAME_ACTIVE$2),i.classList.remove(CLASS_NAME_ACTIVE$2,p,m),this._isSliding=!1,l(EVENT_SLID)};this._queueCallback(_,i,this._isAnimated()),d&&this.cycle()}_isAnimated(){return this._element.classList.contains(CLASS_NAME_SLIDE)}_getActive(){return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element)}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return isRTL()?t===DIRECTION_LEFT?ORDER_PREV:ORDER_NEXT:t===DIRECTION_LEFT?ORDER_NEXT:ORDER_PREV}_orderToDirection(t){return isRTL()?t===ORDER_PREV?DIRECTION_LEFT:DIRECTION_RIGHT:t===ORDER_PREV?DIRECTION_RIGHT:DIRECTION_LEFT}static jQueryInterface(t){return this.each(function(){const e=Carousel.getOrCreateInstance(this,t);if(typeof t=="number"){e.to(t);return}if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_SLIDE,function(n){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains(CLASS_NAME_CAROUSEL))return;n.preventDefault();const e=Carousel.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");if(i){e.to(i),e._maybeEnableCycle();return}if(Manipulator.getDataAttribute(this,"slide")==="next"){e.next(),e._maybeEnableCycle();return}e.prev(),e._maybeEnableCycle()});EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const n=SelectorEngine.find(SELECTOR_DATA_RIDE);for(const t of n)Carousel.getOrCreateInstance(t)});defineJQueryPlugin(Carousel);const NAME$b="collapse",DATA_KEY$7="bs.collapse",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_SHOW$6=`show${EVENT_KEY$7}`,EVENT_SHOWN$6=`shown${EVENT_KEY$7}`,EVENT_HIDE$6=`hide${EVENT_KEY$7}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$7}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$7}${DATA_API_KEY$4}`,CLASS_NAME_SHOW$7="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=`:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`,CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="collapse"]',Default$a={parent:null,toggle:!0},DefaultType$a={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);for(const r of i){const a=SelectorEngine.getSelectorFromElement(r),o=SelectorEngine.find(a).filter(l=>l===this._element);a!==null&&o.length&&this._triggerArray.push(r)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(l=>l!==this._element).map(l=>Collapse.getOrCreateInstance(l,{toggle:!1}))),t.length&&t[0]._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$6).defaultPrevented)return;for(const l of t)l.hide();const i=this._getDimension();this._element.classList.remove(CLASS_NAME_COLLAPSE),this._element.classList.add(CLASS_NAME_COLLAPSING),this._element.style[i]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const r=()=>{this._isTransitioning=!1,this._element.classList.remove(CLASS_NAME_COLLAPSING),this._element.classList.add(CLASS_NAME_COLLAPSE,CLASS_NAME_SHOW$7),this._element.style[i]="",EventHandler.trigger(this._element,EVENT_SHOWN$6)},o=`scroll${i[0].toUpperCase()+i.slice(1)}`;this._queueCallback(r,this._element,!0),this._element.style[i]=`${this._element[o]}px`}hide(){if(this._isTransitioning||!this._isShown()||EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add(CLASS_NAME_COLLAPSING),this._element.classList.remove(CLASS_NAME_COLLAPSE,CLASS_NAME_SHOW$7);for(const r of this._triggerArray){const a=SelectorEngine.getElementFromSelector(r);a&&!this._isShown(a)&&this._addAriaAndCollapsedClass([r],!1)}this._isTransitioning=!0;const i=()=>{this._isTransitioning=!1,this._element.classList.remove(CLASS_NAME_COLLAPSING),this._element.classList.add(CLASS_NAME_COLLAPSE),EventHandler.trigger(this._element,EVENT_HIDDEN$6)};this._element.style[e]="",this._queueCallback(i,this._element,!0)}_isShown(t=this._element){return t.classList.contains(CLASS_NAME_SHOW$7)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=getElement(t.parent),t}_getDimension(){return this._element.classList.contains(CLASS_NAME_HORIZONTAL)?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);for(const e of t){const i=SelectorEngine.getElementFromSelector(e);i&&this._addAriaAndCollapsedClass([e],this._isShown(i))}}_getFirstLevelChildren(t){const e=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(t,this._config.parent).filter(i=>!e.includes(i))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle(CLASS_NAME_COLLAPSED,!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return typeof t=="string"&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const i=Collapse.getOrCreateInstance(this,e);if(typeof t=="string"){if(typeof i[t]>"u")throw new TypeError(`No method named "${t}"`);i[t]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$4,function(n){(n.target.tagName==="A"||n.delegateTarget&&n.delegateTarget.tagName==="A")&&n.preventDefault();for(const t of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(t,{toggle:!1}).toggle()});defineJQueryPlugin(Collapse);const NAME$a="dropdown",DATA_KEY$6="bs.dropdown",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",RIGHT_MOUSE_BUTTON=2,EVENT_HIDE$5=`hide${EVENT_KEY$6}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$6}`,EVENT_SHOW$5=`show${EVENT_KEY$6}`,EVENT_SHOWN$5=`shown${EVENT_KEY$6}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$6}${DATA_API_KEY$3}`,EVENT_KEYDOWN_DATA_API=`keydown${EVENT_KEY$6}${DATA_API_KEY$3}`,EVENT_KEYUP_DATA_API=`keyup${EVENT_KEY$6}${DATA_API_KEY$3}`,CLASS_NAME_SHOW$6="show",CLASS_NAME_DROPUP="dropup",CLASS_NAME_DROPEND="dropend",CLASS_NAME_DROPSTART="dropstart",CLASS_NAME_DROPUP_CENTER="dropup-center",CLASS_NAME_DROPDOWN_CENTER="dropdown-center",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',SELECTOR_DATA_TOGGLE_SHOWN=`${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`,SELECTOR_MENU=".dropdown-menu",SELECTOR_NAVBAR=".navbar",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",PLACEMENT_TOP=isRTL()?"top-end":"top-start",PLACEMENT_TOPEND=isRTL()?"top-start":"top-end",PLACEMENT_BOTTOM=isRTL()?"bottom-end":"bottom-start",PLACEMENT_BOTTOMEND=isRTL()?"bottom-start":"bottom-end",PLACEMENT_RIGHT=isRTL()?"left-start":"right-start",PLACEMENT_LEFT=isRTL()?"right-start":"left-start",PLACEMENT_TOPCENTER="top",PLACEMENT_BOTTOMCENTER="bottom",Default$9={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},DefaultType$9={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Dropdown extends BaseComponent{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=SelectorEngine.next(this._element,SELECTOR_MENU)[0]||SelectorEngine.prev(this._element,SELECTOR_MENU)[0]||SelectorEngine.findOne(SELECTOR_MENU,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$5,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(SELECTOR_NAVBAR_NAV))for(const i of[].concat(...document.body.children))EventHandler.on(i,"mouseover",noop$2);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(CLASS_NAME_SHOW$6),this._element.classList.add(CLASS_NAME_SHOW$6),EventHandler.trigger(this._element,EVENT_SHOWN$5,t)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const i of[].concat(...document.body.children))EventHandler.off(i,"mouseover",noop$2);this._popper&&this._popper.destroy(),this._menu.classList.remove(CLASS_NAME_SHOW$6),this._element.classList.remove(CLASS_NAME_SHOW$6),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"popper"),EventHandler.trigger(this._element,EVENT_HIDDEN$5,t)}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!isElement(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof Popper>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;this._config.reference==="parent"?t=this._parent:isElement(this._config.reference)?t=getElement(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=createPopper(t,this._menu,e)}_isShown(){return this._menu.classList.contains(CLASS_NAME_SHOW$6)}_getPlacement(){const t=this._parent;if(t.classList.contains(CLASS_NAME_DROPEND))return PLACEMENT_RIGHT;if(t.classList.contains(CLASS_NAME_DROPSTART))return PLACEMENT_LEFT;if(t.classList.contains(CLASS_NAME_DROPUP_CENTER))return PLACEMENT_TOPCENTER;if(t.classList.contains(CLASS_NAME_DROPDOWN_CENTER))return PLACEMENT_BOTTOMCENTER;const e=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(CLASS_NAME_DROPUP)?e?PLACEMENT_TOPEND:PLACEMENT_TOP:e?PLACEMENT_BOTTOMEND:PLACEMENT_BOTTOM}_detectNavbar(){return this._element.closest(SELECTOR_NAVBAR)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(Manipulator.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...execute(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(r=>isVisible(r));i.length&&getNextActiveElement(i,e,t===ARROW_DOWN_KEY$1,!i.includes(e)).focus()}static jQueryInterface(t){return this.each(function(){const e=Dropdown.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}static clearMenus(t){if(t.button===RIGHT_MOUSE_BUTTON||t.type==="keyup"&&t.key!==TAB_KEY$1)return;const e=SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);for(const i of e){const r=Dropdown.getInstance(i);if(!r||r._config.autoClose===!1)continue;const a=t.composedPath(),o=a.includes(r._menu);if(a.includes(r._element)||r._config.autoClose==="inside"&&!o||r._config.autoClose==="outside"&&o||r._menu.contains(t.target)&&(t.type==="keyup"&&t.key===TAB_KEY$1||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const l={relatedTarget:r._element};t.type==="click"&&(l.clickEvent=t),r._completeHide(l)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i=t.key===ESCAPE_KEY$2,r=[ARROW_UP_KEY$1,ARROW_DOWN_KEY$1].includes(t.key);if(!r&&!i||e&&!i)return;t.preventDefault();const a=this.matches(SELECTOR_DATA_TOGGLE$3)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$3)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$3)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3,t.delegateTarget.parentNode),o=Dropdown.getOrCreateInstance(a);if(r){t.stopPropagation(),o.show(),o._selectMenuItem(t);return}o._isShown()&&(t.stopPropagation(),o.hide(),a.focus())}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$3,Dropdown.dataApiKeydownHandler);EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_MENU,Dropdown.dataApiKeydownHandler);EventHandler.on(document,EVENT_CLICK_DATA_API$3,Dropdown.clearMenus);EventHandler.on(document,EVENT_KEYUP_DATA_API,Dropdown.clearMenus);EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$3,function(n){n.preventDefault(),Dropdown.getOrCreateInstance(this).toggle()});defineJQueryPlugin(Dropdown);const NAME$9="backdrop",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$5="show",EVENT_MOUSEDOWN=`mousedown.bs.${NAME$9}`,Default$8={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},DefaultType$8={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Backdrop extends Config$1{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}show(t){if(!this._config.isVisible){execute(t);return}this._append();const e=this._getElement();this._config.isAnimated&&reflow(e),e.classList.add(CLASS_NAME_SHOW$5),this._emulateAnimation(()=>{execute(t)})}hide(t){if(!this._config.isVisible){execute(t);return}this._getElement().classList.remove(CLASS_NAME_SHOW$5),this._emulateAnimation(()=>{this.dispose(),execute(t)})}dispose(){this._isAppended&&(EventHandler.off(this._element,EVENT_MOUSEDOWN),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(CLASS_NAME_FADE$4),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=getElement(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),EventHandler.on(t,EVENT_MOUSEDOWN,()=>{execute(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){executeAfterTransition(t,this._getElement(),this._config.isAnimated)}}const NAME$8="focustrap",DATA_KEY$5="bs.focustrap",EVENT_KEY$5=`.${DATA_KEY$5}`,EVENT_FOCUSIN$2=`focusin${EVENT_KEY$5}`,EVENT_KEYDOWN_TAB=`keydown.tab${EVENT_KEY$5}`,TAB_KEY="Tab",TAB_NAV_FORWARD="forward",TAB_NAV_BACKWARD="backward",Default$7={autofocus:!0,trapElement:null},DefaultType$7={autofocus:"boolean",trapElement:"element"};class FocusTrap extends Config$1{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),EventHandler.off(document,EVENT_KEY$5),EventHandler.on(document,EVENT_FOCUSIN$2,t=>this._handleFocusin(t)),EventHandler.on(document,EVENT_KEYDOWN_TAB,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,EventHandler.off(document,EVENT_KEY$5))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=SelectorEngine.focusableChildren(e);i.length===0?e.focus():this._lastTabNavDirection===TAB_NAV_BACKWARD?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){t.key===TAB_KEY&&(this._lastTabNavDirection=t.shiftKey?TAB_NAV_BACKWARD:TAB_NAV_FORWARD)}}const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",SELECTOR_STICKY_CONTENT=".sticky-top",PROPERTY_PADDING="padding-right",PROPERTY_MARGIN="margin-right";class ScrollBarHelper{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,PROPERTY_PADDING,e=>e+t),this._setElementAttributes(SELECTOR_FIXED_CONTENT,PROPERTY_PADDING,e=>e+t),this._setElementAttributes(SELECTOR_STICKY_CONTENT,PROPERTY_MARGIN,e=>e-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,PROPERTY_PADDING),this._resetElementAttributes(SELECTOR_FIXED_CONTENT,PROPERTY_PADDING),this._resetElementAttributes(SELECTOR_STICKY_CONTENT,PROPERTY_MARGIN)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const r=this.getWidth(),a=o=>{if(o!==this._element&&window.innerWidth>o.clientWidth+r)return;this._saveInitialAttribute(o,e);const l=window.getComputedStyle(o).getPropertyValue(e);o.style.setProperty(e,`${i(Number.parseFloat(l))}px`)};this._applyManipulationCallback(t,a)}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&Manipulator.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){const i=r=>{const a=Manipulator.getDataAttribute(r,e);if(a===null){r.style.removeProperty(e);return}Manipulator.removeDataAttribute(r,e),r.style.setProperty(e,a)};this._applyManipulationCallback(t,i)}_applyManipulationCallback(t,e){if(isElement(t)){e(t);return}for(const i of SelectorEngine.find(t,this._element))e(i)}}const NAME$7="modal",DATA_KEY$4="bs.modal",EVENT_KEY$4=`.${DATA_KEY$4}`,DATA_API_KEY$2=".data-api",ESCAPE_KEY$1="Escape",EVENT_HIDE$4=`hide${EVENT_KEY$4}`,EVENT_HIDE_PREVENTED$1=`hidePrevented${EVENT_KEY$4}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$4}`,EVENT_SHOW$4=`show${EVENT_KEY$4}`,EVENT_SHOWN$4=`shown${EVENT_KEY$4}`,EVENT_RESIZE$1=`resize${EVENT_KEY$4}`,EVENT_CLICK_DISMISS=`click.dismiss${EVENT_KEY$4}`,EVENT_MOUSEDOWN_DISMISS=`mousedown.dismiss${EVENT_KEY$4}`,EVENT_KEYDOWN_DISMISS$1=`keydown.dismiss${EVENT_KEY$4}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$4}${DATA_API_KEY$2}`,CLASS_NAME_OPEN="modal-open",CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$4="show",CLASS_NAME_STATIC="modal-static",OPEN_SELECTOR$1=".modal.show",SELECTOR_DIALOG=".modal-dialog",SELECTOR_MODAL_BODY=".modal-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="modal"]',Default$6={backdrop:!0,focus:!0,keyboard:!0},DefaultType$6={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Modal extends BaseComponent{constructor(t,e){super(t,e),this._dialog=SelectorEngine.findOne(SELECTOR_DIALOG,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new ScrollBarHelper,this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$4,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(CLASS_NAME_OPEN),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||EventHandler.trigger(this._element,EVENT_HIDE$4).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(CLASS_NAME_SHOW$4),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){EventHandler.off(window,EVENT_KEY$4),EventHandler.off(this._dialog,EVENT_KEY$4),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Backdrop({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=SelectorEngine.findOne(SELECTOR_MODAL_BODY,this._dialog);e&&(e.scrollTop=0),reflow(this._element),this._element.classList.add(CLASS_NAME_SHOW$4);const i=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$4,{relatedTarget:t})};this._queueCallback(i,this._dialog,this._isAnimated())}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS$1,t=>{if(t.key===ESCAPE_KEY$1){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),EventHandler.on(window,EVENT_RESIZE$1,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),EventHandler.on(this._element,EVENT_MOUSEDOWN_DISMISS,t=>{EventHandler.one(this._element,EVENT_CLICK_DISMISS,e=>{if(!(this._element!==t.target||this._element!==e.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(CLASS_NAME_OPEN),this._resetAdjustments(),this._scrollBar.reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$4)})}_isAnimated(){return this._element.classList.contains(CLASS_NAME_FADE$3)}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED$1).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,i=this._element.style.overflowY;i==="hidden"||this._element.classList.contains(CLASS_NAME_STATIC)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add(CLASS_NAME_STATIC),this._queueCallback(()=>{this._element.classList.remove(CLASS_NAME_STATIC),this._queueCallback(()=>{this._element.style.overflowY=i},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const r=isRTL()?"paddingLeft":"paddingRight";this._element.style[r]=`${e}px`}if(!i&&t){const r=isRTL()?"paddingRight":"paddingLeft";this._element.style[r]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each(function(){const i=Modal.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof i[t]>"u")throw new TypeError(`No method named "${t}"`);i[t](e)}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$2,function(n){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&n.preventDefault(),EventHandler.one(t,EVENT_SHOW$4,r=>{r.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,()=>{isVisible(this)&&this.focus()})});const e=SelectorEngine.findOne(OPEN_SELECTOR$1);e&&Modal.getInstance(e).hide(),Modal.getOrCreateInstance(t).toggle(this)});enableDismissTrigger(Modal);defineJQueryPlugin(Modal);const NAME$6="offcanvas",DATA_KEY$3="bs.offcanvas",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY$1=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$3}${DATA_API_KEY$1}`,ESCAPE_KEY="Escape",CLASS_NAME_SHOW$3="show",CLASS_NAME_SHOWING$1="showing",CLASS_NAME_HIDING="hiding",CLASS_NAME_BACKDROP="offcanvas-backdrop",OPEN_SELECTOR=".offcanvas.show",EVENT_SHOW$3=`show${EVENT_KEY$3}`,EVENT_SHOWN$3=`shown${EVENT_KEY$3}`,EVENT_HIDE$3=`hide${EVENT_KEY$3}`,EVENT_HIDE_PREVENTED=`hidePrevented${EVENT_KEY$3}`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$3}`,EVENT_RESIZE=`resize${EVENT_KEY$3}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$3}${DATA_API_KEY$1}`,EVENT_KEYDOWN_DISMISS=`keydown.dismiss${EVENT_KEY$3}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="offcanvas"]',Default$5={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$5={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Offcanvas extends BaseComponent{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new ScrollBarHelper().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(CLASS_NAME_SHOWING$1);const i=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(CLASS_NAME_SHOW$3),this._element.classList.remove(CLASS_NAME_SHOWING$1),EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:t})};this._queueCallback(i,this._element,!0)}hide(){if(!this._isShown||EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(CLASS_NAME_HIDING),this._backdrop.hide();const e=()=>{this._element.classList.remove(CLASS_NAME_SHOW$3,CLASS_NAME_HIDING),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new ScrollBarHelper().reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)};this._queueCallback(e,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=()=>{if(this._config.backdrop==="static"){EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED);return}this.hide()},e=!!this._config.backdrop;return new Backdrop({className:CLASS_NAME_BACKDROP,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?t:null})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,t=>{if(t.key===ESCAPE_KEY){if(this._config.keyboard){this.hide();return}EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED)}})}static jQueryInterface(t){return this.each(function(){const e=Offcanvas.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$1,function(n){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus()});const e=SelectorEngine.findOne(OPEN_SELECTOR);e&&e!==t&&Offcanvas.getInstance(e).hide(),Offcanvas.getOrCreateInstance(t).toggle(this)});EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const n of SelectorEngine.find(OPEN_SELECTOR))Offcanvas.getOrCreateInstance(n).show()});EventHandler.on(window,EVENT_RESIZE,()=>{for(const n of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(n).position!=="fixed"&&Offcanvas.getOrCreateInstance(n).hide()});enableDismissTrigger(Offcanvas);defineJQueryPlugin(Offcanvas);const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,allowedAttribute=(n,t)=>{const e=n.nodeName.toLowerCase();return t.includes(e)?uriAttributes.has(e)?!!SAFE_URL_PATTERN.test(n.nodeValue):!0:t.filter(i=>i instanceof RegExp).some(i=>i.test(e))};function sanitizeHtml(n,t,e){if(!n.length)return n;if(e&&typeof e=="function")return e(n);const r=new window.DOMParser().parseFromString(n,"text/html"),a=[].concat(...r.body.querySelectorAll("*"));for(const o of a){const l=o.nodeName.toLowerCase();if(!Object.keys(t).includes(l)){o.remove();continue}const u=[].concat(...o.attributes),d=[].concat(t["*"]||[],t[l]||[]);for(const m of u)allowedAttribute(m,d)||o.removeAttribute(m.nodeName)}return r.body.innerHTML}const NAME$5="TemplateFactory",Default$4={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},DefaultType$4={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config$1{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[r,a]of Object.entries(this._config.content))this._setContent(t,a,r);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},DefaultContentType)}_setContent(t,e,i){const r=SelectorEngine.findOne(i,t);if(r){if(e=this._resolvePossibleFunction(e),!e){r.remove();return}if(isElement(e)){this._putElementInTemplate(getElement(e),r);return}if(this._config.html){r.innerHTML=this._maybeSanitize(e);return}r.textContent=e}}_maybeSanitize(t){return this._config.sanitize?sanitizeHtml(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return execute(t,[this])}_putElementInTemplate(t,e){if(this._config.html){e.innerHTML="",e.append(t);return}e.textContent=t.textContent}}const NAME$4="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=`.${CLASS_NAME_MODAL}`,EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$1="click",EVENT_FOCUSIN$1="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER="mouseenter",EVENT_MOUSELEAVE="mouseleave",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$3={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},DefaultType$3={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};let Tooltip$1=class Di extends BaseComponent{constructor(t,e){if(typeof Popper>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),EventHandler.off(this._element.closest(SELECTOR_MODAL),EVENT_MODAL_HIDE,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const t=EventHandler.trigger(this._element,this.constructor.eventName(EVENT_SHOW$2)),i=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!i)return;this._disposePopper();const r=this._getTipElement();this._element.setAttribute("aria-describedby",r.getAttribute("id"));const{container:a}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(r),EventHandler.trigger(this._element,this.constructor.eventName(EVENT_INSERTED))),this._popper=this._createPopper(r),r.classList.add(CLASS_NAME_SHOW$2),"ontouchstart"in document.documentElement)for(const l of[].concat(...document.body.children))EventHandler.on(l,"mouseover",noop$2);const o=()=>{EventHandler.trigger(this._element,this.constructor.eventName(EVENT_SHOWN$2)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(o,this.tip,this._isAnimated())}hide(){if(!this._isShown()||EventHandler.trigger(this._element,this.constructor.eventName(EVENT_HIDE$2)).defaultPrevented)return;if(this._getTipElement().classList.remove(CLASS_NAME_SHOW$2),"ontouchstart"in document.documentElement)for(const r of[].concat(...document.body.children))EventHandler.off(r,"mouseover",noop$2);this._activeTrigger[TRIGGER_CLICK]=!1,this._activeTrigger[TRIGGER_FOCUS]=!1,this._activeTrigger[TRIGGER_HOVER]=!1,this._isHovered=null;const i=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName(EVENT_HIDDEN$2)))};this._queueCallback(i,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(CLASS_NAME_FADE$2,CLASS_NAME_SHOW$2),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=getUID(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(CLASS_NAME_FADE$2),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new TemplateFactory({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(CLASS_NAME_FADE$2)}_isShown(){return this.tip&&this.tip.classList.contains(CLASS_NAME_SHOW$2)}_createPopper(t){const e=execute(this._config.placement,[this,t,this._element]),i=AttachmentMap[e.toUpperCase()];return createPopper(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_resolvePossibleFunction(t){return execute(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:i=>{this._getTipElement().setAttribute("data-popper-placement",i.state.placement)}}]};return{...e,...execute(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if(e==="click")EventHandler.on(this._element,this.constructor.eventName(EVENT_CLICK$1),this._config.selector,i=>{this._initializeOnDelegatedTarget(i).toggle()});else if(e!==TRIGGER_MANUAL){const i=e===TRIGGER_HOVER?this.constructor.eventName(EVENT_MOUSEENTER):this.constructor.eventName(EVENT_FOCUSIN$1),r=e===TRIGGER_HOVER?this.constructor.eventName(EVENT_MOUSELEAVE):this.constructor.eventName(EVENT_FOCUSOUT$1);EventHandler.on(this._element,i,this._config.selector,a=>{const o=this._initializeOnDelegatedTarget(a);o._activeTrigger[a.type==="focusin"?TRIGGER_FOCUS:TRIGGER_HOVER]=!0,o._enter()}),EventHandler.on(this._element,r,this._config.selector,a=>{const o=this._initializeOnDelegatedTarget(a);o._activeTrigger[a.type==="focusout"?TRIGGER_FOCUS:TRIGGER_HOVER]=o._element.contains(a.relatedTarget),o._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(SELECTOR_MODAL),EVENT_MODAL_HIDE,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=Manipulator.getDataAttributes(this._element);for(const i of Object.keys(e))DISALLOWED_ATTRIBUTES.has(i)&&delete e[i];return t={...e,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:getElement(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const e=Di.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}};defineJQueryPlugin(Tooltip$1);const NAME$3="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",Default$2={...Tooltip$1.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},DefaultType$2={...Tooltip$1.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip$1{static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const e=Popover.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}}defineJQueryPlugin(Popover);const NAME$2="scrollspy",DATA_KEY$2="bs.scrollspy",EVENT_KEY$2=`.${DATA_KEY$2}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$2}`,EVENT_CLICK=`click${EVENT_KEY$2}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$2}${DATA_API_KEY}`,CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=`${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`,SELECTOR_DROPDOWN=".dropdown",SELECTOR_DROPDOWN_TOGGLE$1=".dropdown-toggle",Default$1={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},DefaultType$1={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ScrollSpy extends BaseComponent{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$2}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=getElement(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(e=>Number.parseFloat(e))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK),EventHandler.on(this._config.target,EVENT_CLICK,SELECTOR_TARGET_LINKS,t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,r=e.offsetTop-this._element.offsetTop;if(i.scrollTo){i.scrollTo({top:r,behavior:"smooth"});return}i.scrollTop=r}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),t)}_observerCallback(t){const e=o=>this._targetLinks.get(`#${o.target.id}`),i=o=>{this._previousScrollData.visibleEntryTop=o.target.offsetTop,this._process(e(o))},r=(this._rootElement||document.documentElement).scrollTop,a=r>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=r;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const l=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(a&&l){if(i(o),!r)return;continue}!a&&!l&&i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=SelectorEngine.find(SELECTOR_TARGET_LINKS,this._config.target);for(const e of t){if(!e.hash||isDisabled(e))continue;const i=SelectorEngine.findOne(decodeURI(e.hash),this._element);isVisible(i)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,i))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(CLASS_NAME_ACTIVE$1),this._activateParents(t),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(CLASS_NAME_DROPDOWN_ITEM)){SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1,t.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);return}for(const e of SelectorEngine.parents(t,SELECTOR_NAV_LIST_GROUP))for(const i of SelectorEngine.prev(e,SELECTOR_LINK_ITEMS))i.classList.add(CLASS_NAME_ACTIVE$1)}_clearActiveClass(t){t.classList.remove(CLASS_NAME_ACTIVE$1);const e=SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`,t);for(const i of e)i.classList.remove(CLASS_NAME_ACTIVE$1)}static jQueryInterface(t){return this.each(function(){const e=ScrollSpy.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const n of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(n)});defineJQueryPlugin(ScrollSpy);const NAME$1="tab",DATA_KEY$1="bs.tab",EVENT_KEY$1=`.${DATA_KEY$1}`,EVENT_HIDE$1=`hide${EVENT_KEY$1}`,EVENT_HIDDEN$1=`hidden${EVENT_KEY$1}`,EVENT_SHOW$1=`show${EVENT_KEY$1}`,EVENT_SHOWN$1=`shown${EVENT_KEY$1}`,EVENT_CLICK_DATA_API=`click${EVENT_KEY$1}`,EVENT_KEYDOWN=`keydown${EVENT_KEY$1}`,EVENT_LOAD_DATA_API=`load${EVENT_KEY$1}`,ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",CLASS_DROPDOWN="dropdown",SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",SELECTOR_DROPDOWN_MENU=".dropdown-menu",NOT_SELECTOR_DROPDOWN_TOGGLE=`:not(${SELECTOR_DROPDOWN_TOGGLE})`,SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER=`.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`,SELECTOR_DATA_TOGGLE='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`,SELECTOR_DATA_TOGGLE_ACTIVE=`.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;class Tab extends BaseComponent{constructor(t){super(t),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return NAME$1}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?EventHandler.trigger(e,EVENT_HIDE$1,{relatedTarget:t}):null;EventHandler.trigger(t,EVENT_SHOW$1,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){if(!t)return;t.classList.add(CLASS_NAME_ACTIVE),this._activate(SelectorEngine.getElementFromSelector(t));const i=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(CLASS_NAME_SHOW$1);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),EventHandler.trigger(t,EVENT_SHOWN$1,{relatedTarget:e})};this._queueCallback(i,t,t.classList.contains(CLASS_NAME_FADE$1))}_deactivate(t,e){if(!t)return;t.classList.remove(CLASS_NAME_ACTIVE),t.blur(),this._deactivate(SelectorEngine.getElementFromSelector(t));const i=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(CLASS_NAME_SHOW$1);return}t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),EventHandler.trigger(t,EVENT_HIDDEN$1,{relatedTarget:e})};this._queueCallback(i,t,t.classList.contains(CLASS_NAME_FADE$1))}_keydown(t){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter(r=>!isDisabled(r));let i;if([HOME_KEY,END_KEY].includes(t.key))i=e[t.key===HOME_KEY?0:e.length-1];else{const r=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(t.key);i=getNextActiveElement(e,t.target,r,!0)}i&&(i.focus({preventScroll:!0}),Tab.getOrCreateInstance(i).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const i of e)this._setInitialAttributesOnChild(i)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=SelectorEngine.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains(CLASS_DROPDOWN))return;const r=(a,o)=>{const l=SelectorEngine.findOne(a,i);l&&l.classList.toggle(o,e)};r(SELECTOR_DROPDOWN_TOGGLE,CLASS_NAME_ACTIVE),r(SELECTOR_DROPDOWN_MENU,CLASS_NAME_SHOW$1),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(CLASS_NAME_ACTIVE)}_getInnerElement(t){return t.matches(SELECTOR_INNER_ELEM)?t:SelectorEngine.findOne(SELECTOR_INNER_ELEM,t)}_getOuterElement(t){return t.closest(SELECTOR_OUTER)||t}static jQueryInterface(t){return this.each(function(){const e=Tab.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API,SELECTOR_DATA_TOGGLE,function(n){["A","AREA"].includes(this.tagName)&&n.preventDefault(),!isDisabled(this)&&Tab.getOrCreateInstance(this).show()});EventHandler.on(window,EVENT_LOAD_DATA_API,()=>{for(const n of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(n)});defineJQueryPlugin(Tab);const NAME="toast",DATA_KEY="bs.toast",EVENT_KEY=`.${DATA_KEY}`,EVENT_MOUSEOVER=`mouseover${EVENT_KEY}`,EVENT_MOUSEOUT=`mouseout${EVENT_KEY}`,EVENT_FOCUSIN=`focusin${EVENT_KEY}`,EVENT_FOCUSOUT=`focusout${EVENT_KEY}`,EVENT_HIDE=`hide${EVENT_KEY}`,EVENT_HIDDEN=`hidden${EVENT_KEY}`,EVENT_SHOW=`show${EVENT_KEY}`,EVENT_SHOWN=`shown${EVENT_KEY}`,CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType={animation:"boolean",autohide:"boolean",delay:"number"},Default={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}show(){if(EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(CLASS_NAME_FADE);const e=()=>{this._element.classList.remove(CLASS_NAME_SHOWING),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()};this._element.classList.remove(CLASS_NAME_HIDE),reflow(this._element),this._element.classList.add(CLASS_NAME_SHOW,CLASS_NAME_SHOWING),this._queueCallback(e,this._element,this._config.animation)}hide(){if(!this.isShown()||EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented)return;const e=()=>{this._element.classList.add(CLASS_NAME_HIDE),this._element.classList.remove(CLASS_NAME_SHOWING,CLASS_NAME_SHOW),EventHandler.trigger(this._element,EVENT_HIDDEN)};this._element.classList.add(CLASS_NAME_SHOWING),this._queueCallback(e,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(CLASS_NAME_SHOW),super.dispose()}isShown(){return this._element.classList.contains(CLASS_NAME_SHOW)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=e;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=e;break}}if(e){this._clearTimeout();return}const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,t=>this._onInteraction(t,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,t=>this._onInteraction(t,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,t=>this._onInteraction(t,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const e=Toast.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}enableDismissTrigger(Toast);defineJQueryPlugin(Toast);function toDate(n){const t=Object.prototype.toString.call(n);return n instanceof Date||typeof n=="object"&&t==="[object Date]"?new n.constructor(+n):typeof n=="number"||t==="[object Number]"||typeof n=="string"||t==="[object String]"?new Date(n):new Date(NaN)}function constructFrom(n,t){return n instanceof Date?new n.constructor(t):new Date(t)}function addDays(n,t){const e=toDate(n);return isNaN(t)?constructFrom(n,NaN):(t&&e.setDate(e.getDate()+t),e)}function addMonths(n,t){const e=toDate(n);if(isNaN(t))return constructFrom(n,NaN);if(!t)return e;const i=e.getDate(),r=constructFrom(n,e.getTime());r.setMonth(e.getMonth()+t+1,0);const a=r.getDate();return i>=a?r:(e.setFullYear(r.getFullYear(),r.getMonth(),i),e)}function addMilliseconds(n,t){const e=+toDate(n);return constructFrom(n,e+t)}const millisecondsInWeek=6048e5,millisecondsInDay=864e5,millisecondsInMinute=6e4,millisecondsInHour=36e5,millisecondsInSecond=1e3;function addHours(n,t){return addMilliseconds(n,t*millisecondsInHour)}let defaultOptions={};function getDefaultOptions$1(){return defaultOptions}function startOfWeek(n,t){var l,u,d,m;const e=getDefaultOptions$1(),i=(t==null?void 0:t.weekStartsOn)??((u=(l=t==null?void 0:t.locale)==null?void 0:l.options)==null?void 0:u.weekStartsOn)??e.weekStartsOn??((m=(d=e.locale)==null?void 0:d.options)==null?void 0:m.weekStartsOn)??0,r=toDate(n),a=r.getDay(),o=(a=r.getTime()?e+1:t.getTime()>=o.getTime()?e:e-1}function startOfDay(n){const t=toDate(n);return t.setHours(0,0,0,0),t}function getTimezoneOffsetInMilliseconds(n){const t=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return t.setUTCFullYear(n.getFullYear()),n.getTime()-t.getTime()}function differenceInCalendarDays(n,t){const e=startOfDay(n),i=startOfDay(t),r=e.getTime()-getTimezoneOffsetInMilliseconds(e),a=i.getTime()-getTimezoneOffsetInMilliseconds(i);return Math.round((r-a)/millisecondsInDay)}function startOfISOWeekYear(n){const t=getISOWeekYear(n),e=constructFrom(n,0);return e.setFullYear(t,0,4),e.setHours(0,0,0,0),startOfISOWeek(e)}function addMinutes(n,t){return addMilliseconds(n,t*millisecondsInMinute)}function addQuarters(n,t){const e=t*3;return addMonths(n,e)}function addSeconds(n,t){return addMilliseconds(n,t*1e3)}function addWeeks(n,t){const e=t*7;return addDays(n,e)}function addYears(n,t){return addMonths(n,t*12)}function compareAsc(n,t){const e=toDate(n),i=toDate(t),r=e.getTime()-i.getTime();return r<0?-1:r>0?1:r}function isDate(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}function isValid(n){if(!isDate(n)&&typeof n!="number")return!1;const t=toDate(n);return!isNaN(Number(t))}function differenceInCalendarMonths(n,t){const e=toDate(n),i=toDate(t),r=e.getFullYear()-i.getFullYear(),a=e.getMonth()-i.getMonth();return r*12+a}function differenceInCalendarYears(n,t){const e=toDate(n),i=toDate(t);return e.getFullYear()-i.getFullYear()}function differenceInDays(n,t){const e=toDate(n),i=toDate(t),r=compareLocalAsc(e,i),a=Math.abs(differenceInCalendarDays(e,i));e.setDate(e.getDate()-r*a);const o=+(compareLocalAsc(e,i)===-r),l=r*(a-o);return l===0?0:l}function compareLocalAsc(n,t){const e=n.getFullYear()-t.getFullYear()||n.getMonth()-t.getMonth()||n.getDate()-t.getDate()||n.getHours()-t.getHours()||n.getMinutes()-t.getMinutes()||n.getSeconds()-t.getSeconds()||n.getMilliseconds()-t.getMilliseconds();return e<0?-1:e>0?1:e}function differenceInMilliseconds(n,t){return toDate(n).getTime()-toDate(t).getTime()}function getRoundingMethod(n){return n?Math[n]:Math.trunc}function differenceInHours(n,t,e){const i=differenceInMilliseconds(n,t)/millisecondsInHour;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function differenceInMinutes(n,t,e){const i=differenceInMilliseconds(n,t)/millisecondsInMinute;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function endOfDay(n){const t=toDate(n);return t.setHours(23,59,59,999),t}function endOfMonth(n){const t=toDate(n),e=t.getMonth();return t.setFullYear(t.getFullYear(),e+1,0),t.setHours(23,59,59,999),t}function isLastDayOfMonth(n){const t=toDate(n);return+endOfDay(t)==+endOfMonth(t)}function differenceInMonths(n,t){const e=toDate(n),i=toDate(t),r=compareAsc(e,i),a=Math.abs(differenceInCalendarMonths(e,i));let o;if(a<1)o=0;else{e.getMonth()===1&&e.getDate()>27&&e.setDate(30),e.setMonth(e.getMonth()-r*a);let l=compareAsc(e,i)===-r;isLastDayOfMonth(toDate(n))&&a===1&&compareAsc(n,i)===1&&(l=!1),o=r*(a-Number(l))}return o===0?0:o}function differenceInQuarters(n,t,e){const i=differenceInMonths(n,t)/3;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function differenceInSeconds(n,t,e){const i=differenceInMilliseconds(n,t)/1e3;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function differenceInWeeks(n,t,e){const i=differenceInDays(n,t)/7;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function differenceInYears(n,t){const e=toDate(n),i=toDate(t),r=compareAsc(e,i),a=Math.abs(differenceInCalendarYears(e,i));e.setFullYear(1584),i.setFullYear(1584);const o=compareAsc(e,i)===-r,l=r*(a-+o);return l===0?0:l}function startOfMinute(n){const t=toDate(n);return t.setSeconds(0,0),t}function startOfQuarter(n){const t=toDate(n),e=t.getMonth(),i=e-e%3;return t.setMonth(i,1),t.setHours(0,0,0,0),t}function startOfMonth(n){const t=toDate(n);return t.setDate(1),t.setHours(0,0,0,0),t}function endOfYear(n){const t=toDate(n),e=t.getFullYear();return t.setFullYear(e+1,0,0),t.setHours(23,59,59,999),t}function startOfYear(n){const t=toDate(n),e=constructFrom(n,0);return e.setFullYear(t.getFullYear(),0,1),e.setHours(0,0,0,0),e}function endOfHour(n){const t=toDate(n);return t.setMinutes(59,59,999),t}function endOfWeek(n,t){var l,u,d,m;const e=getDefaultOptions$1(),i=(t==null?void 0:t.weekStartsOn)??((u=(l=t==null?void 0:t.locale)==null?void 0:l.options)==null?void 0:u.weekStartsOn)??e.weekStartsOn??((m=(d=e.locale)==null?void 0:d.options)==null?void 0:m.weekStartsOn)??0,r=toDate(n),a=r.getDay(),o=(a{let i;const r=formatDistanceLocale$t[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"in "+i:i+" ago":i};function buildFormatLongFn(n){return(t={})=>{const e=t.width?String(t.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}const dateFormats$v={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},timeFormats$v={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},dateTimeFormats$v={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$v={date:buildFormatLongFn({formats:dateFormats$v,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$v,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$v,defaultWidth:"full"})},formatRelativeLocale$u={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},formatRelative$u=(n,t,e,i)=>formatRelativeLocale$u[n];function buildLocalizeFn(n){return(t,e)=>{const i=e!=null&&e.context?String(e.context):"standalone";let r;if(i==="formatting"&&n.formattingValues){const o=n.defaultFormattingWidth||n.defaultWidth,l=e!=null&&e.width?String(e.width):o;r=n.formattingValues[l]||n.formattingValues[o]}else{const o=n.defaultWidth,l=e!=null&&e.width?String(e.width):n.defaultWidth;r=n.values[l]||n.values[o]}const a=n.argumentCallback?n.argumentCallback(t):t;return r[a]}}const eraValues$u={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},quarterValues$u={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},monthValues$u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},dayValues$u={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},dayPeriodValues$u={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},formattingDayPeriodValues$l={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},ordinalNumber$u=(n,t)=>{const e=Number(n),i=e%100;if(i>20||i<10)switch(i%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},localize$u={ordinalNumber:ordinalNumber$u,era:buildLocalizeFn({values:eraValues$u,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$u,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$u,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$u,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$u,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$l,defaultFormattingWidth:"wide"})};function buildMatchFn(n){return(t,e={})=>{const i=e.width,r=i&&n.matchPatterns[i]||n.matchPatterns[n.defaultMatchWidth],a=t.match(r);if(!a)return null;const o=a[0],l=i&&n.parsePatterns[i]||n.parsePatterns[n.defaultParseWidth],u=Array.isArray(l)?findIndex(l,p=>p.test(o)):findKey(l,p=>p.test(o));let d;d=n.valueCallback?n.valueCallback(u):u,d=e.valueCallback?e.valueCallback(d):d;const m=t.slice(o.length);return{value:d,rest:m}}}function findKey(n,t){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)&&t(n[e]))return e}function findIndex(n,t){for(let e=0;e{const i=t.match(n.matchPattern);if(!i)return null;const r=i[0],a=t.match(n.parsePattern);if(!a)return null;let o=n.valueCallback?n.valueCallback(a[0]):a[0];o=e.valueCallback?e.valueCallback(o):o;const l=t.slice(r.length);return{value:o,rest:l}}}const matchOrdinalNumberPattern$u=/^(\d+)(th|st|nd|rd)?/i,parseOrdinalNumberPattern$u=/\d+/i,matchEraPatterns$u={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},parseEraPatterns$u={any:[/^b/i,/^(a|c)/i]},matchQuarterPatterns$u={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},parseQuarterPatterns$u={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$u={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},parseMonthPatterns$u={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$u={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},parseDayPatterns$u={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},matchDayPeriodPatterns$u={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},parseDayPeriodPatterns$u={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},match$u={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$u,parsePattern:parseOrdinalNumberPattern$u,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$u,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$u,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$u,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$u,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$u,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$u,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$u,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$u,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$u,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$u,defaultParseWidth:"any"})},enUS={code:"en-US",formatDistance:formatDistance$u,formatLong:formatLong$v,formatRelative:formatRelative$u,localize:localize$u,match:match$u,options:{weekStartsOn:0,firstWeekContainsDate:1}};function getDayOfYear(n){const t=toDate(n);return differenceInCalendarDays(t,startOfYear(t))+1}function getISOWeek(n){const t=toDate(n),e=startOfISOWeek(t).getTime()-startOfISOWeekYear(t).getTime();return Math.round(e/millisecondsInWeek)+1}function getWeekYear(n,t){var m,p,_,y;const e=toDate(n),i=e.getFullYear(),r=getDefaultOptions$1(),a=(t==null?void 0:t.firstWeekContainsDate)??((p=(m=t==null?void 0:t.locale)==null?void 0:m.options)==null?void 0:p.firstWeekContainsDate)??r.firstWeekContainsDate??((y=(_=r.locale)==null?void 0:_.options)==null?void 0:y.firstWeekContainsDate)??1,o=constructFrom(n,0);o.setFullYear(i+1,0,a),o.setHours(0,0,0,0);const l=startOfWeek(o,t),u=constructFrom(n,0);u.setFullYear(i,0,a),u.setHours(0,0,0,0);const d=startOfWeek(u,t);return e.getTime()>=l.getTime()?i+1:e.getTime()>=d.getTime()?i:i-1}function startOfWeekYear(n,t){var l,u,d,m;const e=getDefaultOptions$1(),i=(t==null?void 0:t.firstWeekContainsDate)??((u=(l=t==null?void 0:t.locale)==null?void 0:l.options)==null?void 0:u.firstWeekContainsDate)??e.firstWeekContainsDate??((m=(d=e.locale)==null?void 0:d.options)==null?void 0:m.firstWeekContainsDate)??1,r=getWeekYear(n,t),a=constructFrom(n,0);return a.setFullYear(r,0,i),a.setHours(0,0,0,0),startOfWeek(a,t)}function getWeek(n,t){const e=toDate(n),i=startOfWeek(e,t).getTime()-startOfWeekYear(e,t).getTime();return Math.round(i/millisecondsInWeek)+1}function addLeadingZeros(n,t){const e=n<0?"-":"",i=Math.abs(n).toString().padStart(t,"0");return e+i}const lightFormatters={y(n,t){const e=n.getFullYear(),i=e>0?e:1-e;return addLeadingZeros(t==="yy"?i%100:i,t.length)},M(n,t){const e=n.getMonth();return t==="M"?String(e+1):addLeadingZeros(e+1,2)},d(n,t){return addLeadingZeros(n.getDate(),t.length)},a(n,t){const e=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.toUpperCase();case"aaa":return e;case"aaaaa":return e[0];case"aaaa":default:return e==="am"?"a.m.":"p.m."}},h(n,t){return addLeadingZeros(n.getHours()%12||12,t.length)},H(n,t){return addLeadingZeros(n.getHours(),t.length)},m(n,t){return addLeadingZeros(n.getMinutes(),t.length)},s(n,t){return addLeadingZeros(n.getSeconds(),t.length)},S(n,t){const e=t.length,i=n.getMilliseconds(),r=Math.floor(i*Math.pow(10,e-3));return addLeadingZeros(r,t.length)}},dayPeriodEnum={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},formatters$1={G:function(n,t,e){const i=n.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return e.era(i,{width:"abbreviated"});case"GGGGG":return e.era(i,{width:"narrow"});case"GGGG":default:return e.era(i,{width:"wide"})}},y:function(n,t,e){if(t==="yo"){const i=n.getFullYear(),r=i>0?i:1-i;return e.ordinalNumber(r,{unit:"year"})}return lightFormatters.y(n,t)},Y:function(n,t,e,i){const r=getWeekYear(n,i),a=r>0?r:1-r;if(t==="YY"){const o=a%100;return addLeadingZeros(o,2)}return t==="Yo"?e.ordinalNumber(a,{unit:"year"}):addLeadingZeros(a,t.length)},R:function(n,t){const e=getISOWeekYear(n);return addLeadingZeros(e,t.length)},u:function(n,t){const e=n.getFullYear();return addLeadingZeros(e,t.length)},Q:function(n,t,e){const i=Math.ceil((n.getMonth()+1)/3);switch(t){case"Q":return String(i);case"QQ":return addLeadingZeros(i,2);case"Qo":return e.ordinalNumber(i,{unit:"quarter"});case"QQQ":return e.quarter(i,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(i,{width:"narrow",context:"formatting"});case"QQQQ":default:return e.quarter(i,{width:"wide",context:"formatting"})}},q:function(n,t,e){const i=Math.ceil((n.getMonth()+1)/3);switch(t){case"q":return String(i);case"qq":return addLeadingZeros(i,2);case"qo":return e.ordinalNumber(i,{unit:"quarter"});case"qqq":return e.quarter(i,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(i,{width:"narrow",context:"standalone"});case"qqqq":default:return e.quarter(i,{width:"wide",context:"standalone"})}},M:function(n,t,e){const i=n.getMonth();switch(t){case"M":case"MM":return lightFormatters.M(n,t);case"Mo":return e.ordinalNumber(i+1,{unit:"month"});case"MMM":return e.month(i,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(i,{width:"narrow",context:"formatting"});case"MMMM":default:return e.month(i,{width:"wide",context:"formatting"})}},L:function(n,t,e){const i=n.getMonth();switch(t){case"L":return String(i+1);case"LL":return addLeadingZeros(i+1,2);case"Lo":return e.ordinalNumber(i+1,{unit:"month"});case"LLL":return e.month(i,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(i,{width:"narrow",context:"standalone"});case"LLLL":default:return e.month(i,{width:"wide",context:"standalone"})}},w:function(n,t,e,i){const r=getWeek(n,i);return t==="wo"?e.ordinalNumber(r,{unit:"week"}):addLeadingZeros(r,t.length)},I:function(n,t,e){const i=getISOWeek(n);return t==="Io"?e.ordinalNumber(i,{unit:"week"}):addLeadingZeros(i,t.length)},d:function(n,t,e){return t==="do"?e.ordinalNumber(n.getDate(),{unit:"date"}):lightFormatters.d(n,t)},D:function(n,t,e){const i=getDayOfYear(n);return t==="Do"?e.ordinalNumber(i,{unit:"dayOfYear"}):addLeadingZeros(i,t.length)},E:function(n,t,e){const i=n.getDay();switch(t){case"E":case"EE":case"EEE":return e.day(i,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(i,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(i,{width:"short",context:"formatting"});case"EEEE":default:return e.day(i,{width:"wide",context:"formatting"})}},e:function(n,t,e,i){const r=n.getDay(),a=(r-i.weekStartsOn+8)%7||7;switch(t){case"e":return String(a);case"ee":return addLeadingZeros(a,2);case"eo":return e.ordinalNumber(a,{unit:"day"});case"eee":return e.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(r,{width:"short",context:"formatting"});case"eeee":default:return e.day(r,{width:"wide",context:"formatting"})}},c:function(n,t,e,i){const r=n.getDay(),a=(r-i.weekStartsOn+8)%7||7;switch(t){case"c":return String(a);case"cc":return addLeadingZeros(a,t.length);case"co":return e.ordinalNumber(a,{unit:"day"});case"ccc":return e.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(r,{width:"narrow",context:"standalone"});case"cccccc":return e.day(r,{width:"short",context:"standalone"});case"cccc":default:return e.day(r,{width:"wide",context:"standalone"})}},i:function(n,t,e){const i=n.getDay(),r=i===0?7:i;switch(t){case"i":return String(r);case"ii":return addLeadingZeros(r,t.length);case"io":return e.ordinalNumber(r,{unit:"day"});case"iii":return e.day(i,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(i,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(i,{width:"short",context:"formatting"});case"iiii":default:return e.day(i,{width:"wide",context:"formatting"})}},a:function(n,t,e){const r=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(n,t,e){const i=n.getHours();let r;switch(i===12?r=dayPeriodEnum.noon:i===0?r=dayPeriodEnum.midnight:r=i/12>=1?"pm":"am",t){case"b":case"bb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"bbbb":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(n,t,e){const i=n.getHours();let r;switch(i>=17?r=dayPeriodEnum.evening:i>=12?r=dayPeriodEnum.afternoon:i>=4?r=dayPeriodEnum.morning:r=dayPeriodEnum.night,t){case"B":case"BB":case"BBB":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"BBBB":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(n,t,e){if(t==="ho"){let i=n.getHours()%12;return i===0&&(i=12),e.ordinalNumber(i,{unit:"hour"})}return lightFormatters.h(n,t)},H:function(n,t,e){return t==="Ho"?e.ordinalNumber(n.getHours(),{unit:"hour"}):lightFormatters.H(n,t)},K:function(n,t,e){const i=n.getHours()%12;return t==="Ko"?e.ordinalNumber(i,{unit:"hour"}):addLeadingZeros(i,t.length)},k:function(n,t,e){let i=n.getHours();return i===0&&(i=24),t==="ko"?e.ordinalNumber(i,{unit:"hour"}):addLeadingZeros(i,t.length)},m:function(n,t,e){return t==="mo"?e.ordinalNumber(n.getMinutes(),{unit:"minute"}):lightFormatters.m(n,t)},s:function(n,t,e){return t==="so"?e.ordinalNumber(n.getSeconds(),{unit:"second"}):lightFormatters.s(n,t)},S:function(n,t){return lightFormatters.S(n,t)},X:function(n,t,e,i){const a=(i._originalDate||n).getTimezoneOffset();if(a===0)return"Z";switch(t){case"X":return formatTimezoneWithOptionalMinutes(a);case"XXXX":case"XX":return formatTimezone(a);case"XXXXX":case"XXX":default:return formatTimezone(a,":")}},x:function(n,t,e,i){const a=(i._originalDate||n).getTimezoneOffset();switch(t){case"x":return formatTimezoneWithOptionalMinutes(a);case"xxxx":case"xx":return formatTimezone(a);case"xxxxx":case"xxx":default:return formatTimezone(a,":")}},O:function(n,t,e,i){const a=(i._originalDate||n).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+formatTimezoneShort(a,":");case"OOOO":default:return"GMT"+formatTimezone(a,":")}},z:function(n,t,e,i){const a=(i._originalDate||n).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+formatTimezoneShort(a,":");case"zzzz":default:return"GMT"+formatTimezone(a,":")}},t:function(n,t,e,i){const r=i._originalDate||n,a=Math.floor(r.getTime()/1e3);return addLeadingZeros(a,t.length)},T:function(n,t,e,i){const a=(i._originalDate||n).getTime();return addLeadingZeros(a,t.length)}};function formatTimezoneShort(n,t=""){const e=n>0?"-":"+",i=Math.abs(n),r=Math.floor(i/60),a=i%60;return a===0?e+String(r):e+String(r)+t+addLeadingZeros(a,2)}function formatTimezoneWithOptionalMinutes(n,t){return n%60===0?(n>0?"-":"+")+addLeadingZeros(Math.abs(n)/60,2):formatTimezone(n,t)}function formatTimezone(n,t=""){const e=n>0?"-":"+",i=Math.abs(n),r=addLeadingZeros(Math.floor(i/60),2),a=addLeadingZeros(i%60,2);return e+r+t+a}const dateLongFormatter=(n,t)=>{switch(n){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},timeLongFormatter=(n,t)=>{switch(n){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},dateTimeLongFormatter=(n,t)=>{const e=n.match(/(P+)(p+)?/)||[],i=e[1],r=e[2];if(!r)return dateLongFormatter(n,t);let a;switch(i){case"P":a=t.dateTime({width:"short"});break;case"PP":a=t.dateTime({width:"medium"});break;case"PPP":a=t.dateTime({width:"long"});break;case"PPPP":default:a=t.dateTime({width:"full"});break}return a.replace("{{date}}",dateLongFormatter(i,t)).replace("{{time}}",timeLongFormatter(r,t))},longFormatters={p:timeLongFormatter,P:dateTimeLongFormatter},dayOfYearTokenRE=/^D+$/,weekYearTokenRE=/^Y+$/,throwTokens=["D","DD","YY","YYYY"];function isProtectedDayOfYearToken(n){return dayOfYearTokenRE.test(n)}function isProtectedWeekYearToken(n){return weekYearTokenRE.test(n)}function warnOrThrowProtectedError(n,t,e){const i=message(n,t,e);if(console.warn(i),throwTokens.includes(n))throw new RangeError(i)}function message(n,t,e){const i=n[0]==="Y"?"years":"days of the month";return`Use \`${n.toLowerCase()}\` instead of \`${n}\` (in \`${t}\`) for formatting ${i} to the input \`${e}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const formattingTokensRegExp$1=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,longFormattingTokensRegExp$1=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,escapedStringRegExp$1=/^'([^]*?)'?$/,doubleQuoteRegExp$1=/''/g,unescapedLatinCharacterRegExp$1=/[a-zA-Z]/;function format(n,t,e){var m,p,_,y,w,v,E,x;const i=getDefaultOptions$1(),r=(e==null?void 0:e.locale)??i.locale??enUS,a=(e==null?void 0:e.firstWeekContainsDate)??((p=(m=e==null?void 0:e.locale)==null?void 0:m.options)==null?void 0:p.firstWeekContainsDate)??i.firstWeekContainsDate??((y=(_=i.locale)==null?void 0:_.options)==null?void 0:y.firstWeekContainsDate)??1,o=(e==null?void 0:e.weekStartsOn)??((v=(w=e==null?void 0:e.locale)==null?void 0:w.options)==null?void 0:v.weekStartsOn)??i.weekStartsOn??((x=(E=i.locale)==null?void 0:E.options)==null?void 0:x.weekStartsOn)??0,l=toDate(n);if(!isValid(l))throw new RangeError("Invalid time value");const u={firstWeekContainsDate:a,weekStartsOn:o,locale:r,_originalDate:l};return t.match(longFormattingTokensRegExp$1).map(function(S){const M=S[0];if(M==="p"||M==="P"){const k=longFormatters[M];return k(S,r.formatLong)}return S}).join("").match(formattingTokensRegExp$1).map(function(S){if(S==="''")return"'";const M=S[0];if(M==="'")return cleanEscapedString$1(S);const k=formatters$1[M];if(k)return!(e!=null&&e.useAdditionalWeekYearTokens)&&isProtectedWeekYearToken(S)&&warnOrThrowProtectedError(S,t,String(n)),!(e!=null&&e.useAdditionalDayOfYearTokens)&&isProtectedDayOfYearToken(S)&&warnOrThrowProtectedError(S,t,String(n)),k(l,S,r.localize,u);if(M.match(unescapedLatinCharacterRegExp$1))throw new RangeError("Format string contains an unescaped latin alphabet character `"+M+"`");return S}).join("")}function cleanEscapedString$1(n){const t=n.match(escapedStringRegExp$1);return t?t[1].replace(doubleQuoteRegExp$1,"'"):n}function getDefaultOptions(){return Object.assign({},getDefaultOptions$1())}function getISODay(n){let e=toDate(n).getDay();return e===0&&(e=7),e}function transpose(n,t){const e=t instanceof Date?constructFrom(t,0):new t(0);return e.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),e.setHours(n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()),e}const TIMEZONE_UNIT_PRIORITY=10;class Setter{constructor(){F(this,"subPriority",0)}validate(t,e){return!0}}class ValueSetter extends Setter{constructor(t,e,i,r,a){super(),this.value=t,this.validateValue=e,this.setValue=i,this.priority=r,a&&(this.subPriority=a)}validate(t,e){return this.validateValue(t,this.value,e)}set(t,e,i){return this.setValue(t,e,this.value,i)}}class DateToSystemTimezoneSetter extends Setter{constructor(){super(...arguments);F(this,"priority",TIMEZONE_UNIT_PRIORITY);F(this,"subPriority",-1)}set(e,i){return i.timestampIsSet?e:constructFrom(e,transpose(e,Date))}}class Parser{run(t,e,i,r){const a=this.parse(t,e,i,r);return a?{setter:new ValueSetter(a.value,this.validate,this.set,this.priority,this.subPriority),rest:a.rest}:null}validate(t,e,i){return!0}}class EraParser extends Parser{constructor(){super(...arguments);F(this,"priority",140);F(this,"incompatibleTokens",["R","u","t","T"])}parse(e,i,r){switch(i){case"G":case"GG":case"GGG":return r.era(e,{width:"abbreviated"})||r.era(e,{width:"narrow"});case"GGGGG":return r.era(e,{width:"narrow"});case"GGGG":default:return r.era(e,{width:"wide"})||r.era(e,{width:"abbreviated"})||r.era(e,{width:"narrow"})}}set(e,i,r){return i.era=r,e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}}const numericPatterns={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},timezonePatterns={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/};function mapValue(n,t){return n&&{value:t(n.value),rest:n.rest}}function parseNumericPattern(n,t){const e=t.match(n);return e?{value:parseInt(e[0],10),rest:t.slice(e[0].length)}:null}function parseTimezonePattern(n,t){const e=t.match(n);if(!e)return null;if(e[0]==="Z")return{value:0,rest:t.slice(1)};const i=e[1]==="+"?1:-1,r=e[2]?parseInt(e[2],10):0,a=e[3]?parseInt(e[3],10):0,o=e[5]?parseInt(e[5],10):0;return{value:i*(r*millisecondsInHour+a*millisecondsInMinute+o*millisecondsInSecond),rest:t.slice(e[0].length)}}function parseAnyDigitsSigned(n){return parseNumericPattern(numericPatterns.anyDigitsSigned,n)}function parseNDigits(n,t){switch(n){case 1:return parseNumericPattern(numericPatterns.singleDigit,t);case 2:return parseNumericPattern(numericPatterns.twoDigits,t);case 3:return parseNumericPattern(numericPatterns.threeDigits,t);case 4:return parseNumericPattern(numericPatterns.fourDigits,t);default:return parseNumericPattern(new RegExp("^\\d{1,"+n+"}"),t)}}function parseNDigitsSigned(n,t){switch(n){case 1:return parseNumericPattern(numericPatterns.singleDigitSigned,t);case 2:return parseNumericPattern(numericPatterns.twoDigitsSigned,t);case 3:return parseNumericPattern(numericPatterns.threeDigitsSigned,t);case 4:return parseNumericPattern(numericPatterns.fourDigitsSigned,t);default:return parseNumericPattern(new RegExp("^-?\\d{1,"+n+"}"),t)}}function dayPeriodEnumToHours(n){switch(n){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function normalizeTwoDigitYear(n,t){const e=t>0,i=e?t:1-t;let r;if(i<=50)r=n||100;else{const a=i+50,o=Math.floor(a/100)*100,l=n>=a%100;r=n+o-(l?100:0)}return e?r:1-r}function isLeapYearIndex$1(n){return n%400===0||n%4===0&&n%100!==0}class YearParser extends Parser{constructor(){super(...arguments);F(this,"priority",130);F(this,"incompatibleTokens",["Y","R","u","w","I","i","e","c","t","T"])}parse(e,i,r){const a=o=>({year:o,isTwoDigitYear:i==="yy"});switch(i){case"y":return mapValue(parseNDigits(4,e),a);case"yo":return mapValue(r.ordinalNumber(e,{unit:"year"}),a);default:return mapValue(parseNDigits(i.length,e),a)}}validate(e,i){return i.isTwoDigitYear||i.year>0}set(e,i,r){const a=e.getFullYear();if(r.isTwoDigitYear){const l=normalizeTwoDigitYear(r.year,a);return e.setFullYear(l,0,1),e.setHours(0,0,0,0),e}const o=!("era"in i)||i.era===1?r.year:1-r.year;return e.setFullYear(o,0,1),e.setHours(0,0,0,0),e}}class LocalWeekYearParser extends Parser{constructor(){super(...arguments);F(this,"priority",130);F(this,"incompatibleTokens",["y","R","u","Q","q","M","L","I","d","D","i","t","T"])}parse(e,i,r){const a=o=>({year:o,isTwoDigitYear:i==="YY"});switch(i){case"Y":return mapValue(parseNDigits(4,e),a);case"Yo":return mapValue(r.ordinalNumber(e,{unit:"year"}),a);default:return mapValue(parseNDigits(i.length,e),a)}}validate(e,i){return i.isTwoDigitYear||i.year>0}set(e,i,r,a){const o=getWeekYear(e,a);if(r.isTwoDigitYear){const u=normalizeTwoDigitYear(r.year,o);return e.setFullYear(u,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),startOfWeek(e,a)}const l=!("era"in i)||i.era===1?r.year:1-r.year;return e.setFullYear(l,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),startOfWeek(e,a)}}class ISOWeekYearParser extends Parser{constructor(){super(...arguments);F(this,"priority",130);F(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,i){return parseNDigitsSigned(i==="R"?4:i.length,e)}set(e,i,r){const a=constructFrom(e,0);return a.setFullYear(r,0,4),a.setHours(0,0,0,0),startOfISOWeek(a)}}class ExtendedYearParser extends Parser{constructor(){super(...arguments);F(this,"priority",130);F(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,i){return parseNDigitsSigned(i==="u"?4:i.length,e)}set(e,i,r){return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}}class QuarterParser extends Parser{constructor(){super(...arguments);F(this,"priority",120);F(this,"incompatibleTokens",["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,i,r){switch(i){case"Q":case"QQ":return parseNDigits(i.length,e);case"Qo":return r.ordinalNumber(e,{unit:"quarter"});case"QQQ":return r.quarter(e,{width:"abbreviated",context:"formatting"})||r.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return r.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return r.quarter(e,{width:"wide",context:"formatting"})||r.quarter(e,{width:"abbreviated",context:"formatting"})||r.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,i){return i>=1&&i<=4}set(e,i,r){return e.setMonth((r-1)*3,1),e.setHours(0,0,0,0),e}}class StandAloneQuarterParser extends Parser{constructor(){super(...arguments);F(this,"priority",120);F(this,"incompatibleTokens",["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,i,r){switch(i){case"q":case"qq":return parseNDigits(i.length,e);case"qo":return r.ordinalNumber(e,{unit:"quarter"});case"qqq":return r.quarter(e,{width:"abbreviated",context:"standalone"})||r.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return r.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return r.quarter(e,{width:"wide",context:"standalone"})||r.quarter(e,{width:"abbreviated",context:"standalone"})||r.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,i){return i>=1&&i<=4}set(e,i,r){return e.setMonth((r-1)*3,1),e.setHours(0,0,0,0),e}}class MonthParser extends Parser{constructor(){super(...arguments);F(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]);F(this,"priority",110)}parse(e,i,r){const a=o=>o-1;switch(i){case"M":return mapValue(parseNumericPattern(numericPatterns.month,e),a);case"MM":return mapValue(parseNDigits(2,e),a);case"Mo":return mapValue(r.ordinalNumber(e,{unit:"month"}),a);case"MMM":return r.month(e,{width:"abbreviated",context:"formatting"})||r.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return r.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return r.month(e,{width:"wide",context:"formatting"})||r.month(e,{width:"abbreviated",context:"formatting"})||r.month(e,{width:"narrow",context:"formatting"})}}validate(e,i){return i>=0&&i<=11}set(e,i,r){return e.setMonth(r,1),e.setHours(0,0,0,0),e}}class StandAloneMonthParser extends Parser{constructor(){super(...arguments);F(this,"priority",110);F(this,"incompatibleTokens",["Y","R","q","Q","M","w","I","D","i","e","c","t","T"])}parse(e,i,r){const a=o=>o-1;switch(i){case"L":return mapValue(parseNumericPattern(numericPatterns.month,e),a);case"LL":return mapValue(parseNDigits(2,e),a);case"Lo":return mapValue(r.ordinalNumber(e,{unit:"month"}),a);case"LLL":return r.month(e,{width:"abbreviated",context:"standalone"})||r.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return r.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return r.month(e,{width:"wide",context:"standalone"})||r.month(e,{width:"abbreviated",context:"standalone"})||r.month(e,{width:"narrow",context:"standalone"})}}validate(e,i){return i>=0&&i<=11}set(e,i,r){return e.setMonth(r,1),e.setHours(0,0,0,0),e}}function setWeek(n,t,e){const i=toDate(n),r=getWeek(i,e)-t;return i.setDate(i.getDate()-r*7),i}class LocalWeekParser extends Parser{constructor(){super(...arguments);F(this,"priority",100);F(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,i,r){switch(i){case"w":return parseNumericPattern(numericPatterns.week,e);case"wo":return r.ordinalNumber(e,{unit:"week"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=1&&i<=53}set(e,i,r,a){return startOfWeek(setWeek(e,r,a),a)}}function setISOWeek(n,t){const e=toDate(n),i=getISOWeek(e)-t;return e.setDate(e.getDate()-i*7),e}class ISOWeekParser extends Parser{constructor(){super(...arguments);F(this,"priority",100);F(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"])}parse(e,i,r){switch(i){case"I":return parseNumericPattern(numericPatterns.week,e);case"Io":return r.ordinalNumber(e,{unit:"week"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=1&&i<=53}set(e,i,r){return startOfISOWeek(setISOWeek(e,r))}}const DAYS_IN_MONTH=[31,28,31,30,31,30,31,31,30,31,30,31],DAYS_IN_MONTH_LEAP_YEAR=[31,29,31,30,31,30,31,31,30,31,30,31];class DateParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"subPriority",1);F(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,i,r){switch(i){case"d":return parseNumericPattern(numericPatterns.date,e);case"do":return r.ordinalNumber(e,{unit:"date"});default:return parseNDigits(i.length,e)}}validate(e,i){const r=e.getFullYear(),a=isLeapYearIndex$1(r),o=e.getMonth();return a?i>=1&&i<=DAYS_IN_MONTH_LEAP_YEAR[o]:i>=1&&i<=DAYS_IN_MONTH[o]}set(e,i,r){return e.setDate(r),e.setHours(0,0,0,0),e}}class DayOfYearParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"subpriority",1);F(this,"incompatibleTokens",["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"])}parse(e,i,r){switch(i){case"D":case"DD":return parseNumericPattern(numericPatterns.dayOfYear,e);case"Do":return r.ordinalNumber(e,{unit:"date"});default:return parseNDigits(i.length,e)}}validate(e,i){const r=e.getFullYear();return isLeapYearIndex$1(r)?i>=1&&i<=366:i>=1&&i<=365}set(e,i,r){return e.setMonth(0,r),e.setHours(0,0,0,0),e}}function setDay(n,t,e){var p,_,y,w;const i=getDefaultOptions$1(),r=(e==null?void 0:e.weekStartsOn)??((_=(p=e==null?void 0:e.locale)==null?void 0:p.options)==null?void 0:_.weekStartsOn)??i.weekStartsOn??((w=(y=i.locale)==null?void 0:y.options)==null?void 0:w.weekStartsOn)??0,a=toDate(n),o=a.getDay(),u=(t%7+7)%7,d=7-r,m=t<0||t>6?t-(o+d)%7:(u+d)%7-(o+d)%7;return addDays(a,m)}class DayParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"incompatibleTokens",["D","i","e","c","t","T"])}parse(e,i,r){switch(i){case"E":case"EE":case"EEE":return r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return r.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"})}}validate(e,i){return i>=0&&i<=6}set(e,i,r,a){return e=setDay(e,r,a),e.setHours(0,0,0,0),e}}class LocalDayParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"])}parse(e,i,r,a){const o=l=>{const u=Math.floor((l-1)/7)*7;return(l+a.weekStartsOn+6)%7+u};switch(i){case"e":case"ee":return mapValue(parseNDigits(i.length,e),o);case"eo":return mapValue(r.ordinalNumber(e,{unit:"day"}),o);case"eee":return r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"eeeee":return r.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"})}}validate(e,i){return i>=0&&i<=6}set(e,i,r,a){return e=setDay(e,r,a),e.setHours(0,0,0,0),e}}class StandAloneLocalDayParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"])}parse(e,i,r,a){const o=l=>{const u=Math.floor((l-1)/7)*7;return(l+a.weekStartsOn+6)%7+u};switch(i){case"c":case"cc":return mapValue(parseNDigits(i.length,e),o);case"co":return mapValue(r.ordinalNumber(e,{unit:"day"}),o);case"ccc":return r.day(e,{width:"abbreviated",context:"standalone"})||r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"});case"ccccc":return r.day(e,{width:"narrow",context:"standalone"});case"cccccc":return r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return r.day(e,{width:"wide",context:"standalone"})||r.day(e,{width:"abbreviated",context:"standalone"})||r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"})}}validate(e,i){return i>=0&&i<=6}set(e,i,r,a){return e=setDay(e,r,a),e.setHours(0,0,0,0),e}}function setISODay(n,t){const e=toDate(n),i=getISODay(e),r=t-i;return addDays(e,r)}class ISODayParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"])}parse(e,i,r){const a=o=>o===0?7:o;switch(i){case"i":case"ii":return parseNDigits(i.length,e);case"io":return r.ordinalNumber(e,{unit:"day"});case"iii":return mapValue(r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a);case"iiiii":return mapValue(r.day(e,{width:"narrow",context:"formatting"}),a);case"iiiiii":return mapValue(r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a);case"iiii":default:return mapValue(r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a)}}validate(e,i){return i>=1&&i<=7}set(e,i,r){return e=setISODay(e,r),e.setHours(0,0,0,0),e}}class AMPMParser extends Parser{constructor(){super(...arguments);F(this,"priority",80);F(this,"incompatibleTokens",["b","B","H","k","t","T"])}parse(e,i,r){switch(i){case"a":case"aa":case"aaa":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,i,r){return e.setHours(dayPeriodEnumToHours(r),0,0,0),e}}class AMPMMidnightParser extends Parser{constructor(){super(...arguments);F(this,"priority",80);F(this,"incompatibleTokens",["a","B","H","k","t","T"])}parse(e,i,r){switch(i){case"b":case"bb":case"bbb":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,i,r){return e.setHours(dayPeriodEnumToHours(r),0,0,0),e}}class DayPeriodParser extends Parser{constructor(){super(...arguments);F(this,"priority",80);F(this,"incompatibleTokens",["a","b","t","T"])}parse(e,i,r){switch(i){case"B":case"BB":case"BBB":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,i,r){return e.setHours(dayPeriodEnumToHours(r),0,0,0),e}}class Hour1to12Parser extends Parser{constructor(){super(...arguments);F(this,"priority",70);F(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,i,r){switch(i){case"h":return parseNumericPattern(numericPatterns.hour12h,e);case"ho":return r.ordinalNumber(e,{unit:"hour"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=1&&i<=12}set(e,i,r){const a=e.getHours()>=12;return a&&r<12?e.setHours(r+12,0,0,0):!a&&r===12?e.setHours(0,0,0,0):e.setHours(r,0,0,0),e}}class Hour0to23Parser extends Parser{constructor(){super(...arguments);F(this,"priority",70);F(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,i,r){switch(i){case"H":return parseNumericPattern(numericPatterns.hour23h,e);case"Ho":return r.ordinalNumber(e,{unit:"hour"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=0&&i<=23}set(e,i,r){return e.setHours(r,0,0,0),e}}class Hour0To11Parser extends Parser{constructor(){super(...arguments);F(this,"priority",70);F(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,i,r){switch(i){case"K":return parseNumericPattern(numericPatterns.hour11h,e);case"Ko":return r.ordinalNumber(e,{unit:"hour"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=0&&i<=11}set(e,i,r){return e.getHours()>=12&&r<12?e.setHours(r+12,0,0,0):e.setHours(r,0,0,0),e}}class Hour1To24Parser extends Parser{constructor(){super(...arguments);F(this,"priority",70);F(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,i,r){switch(i){case"k":return parseNumericPattern(numericPatterns.hour24h,e);case"ko":return r.ordinalNumber(e,{unit:"hour"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=1&&i<=24}set(e,i,r){const a=r<=24?r%24:r;return e.setHours(a,0,0,0),e}}class MinuteParser extends Parser{constructor(){super(...arguments);F(this,"priority",60);F(this,"incompatibleTokens",["t","T"])}parse(e,i,r){switch(i){case"m":return parseNumericPattern(numericPatterns.minute,e);case"mo":return r.ordinalNumber(e,{unit:"minute"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=0&&i<=59}set(e,i,r){return e.setMinutes(r,0,0),e}}class SecondParser extends Parser{constructor(){super(...arguments);F(this,"priority",50);F(this,"incompatibleTokens",["t","T"])}parse(e,i,r){switch(i){case"s":return parseNumericPattern(numericPatterns.second,e);case"so":return r.ordinalNumber(e,{unit:"second"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=0&&i<=59}set(e,i,r){return e.setSeconds(r,0),e}}class FractionOfSecondParser extends Parser{constructor(){super(...arguments);F(this,"priority",30);F(this,"incompatibleTokens",["t","T"])}parse(e,i){const r=a=>Math.floor(a*Math.pow(10,-i.length+3));return mapValue(parseNDigits(i.length,e),r)}set(e,i,r){return e.setMilliseconds(r),e}}class ISOTimezoneWithZParser extends Parser{constructor(){super(...arguments);F(this,"priority",10);F(this,"incompatibleTokens",["t","T","x"])}parse(e,i){switch(i){case"X":return parseTimezonePattern(timezonePatterns.basicOptionalMinutes,e);case"XX":return parseTimezonePattern(timezonePatterns.basic,e);case"XXXX":return parseTimezonePattern(timezonePatterns.basicOptionalSeconds,e);case"XXXXX":return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds,e);case"XXX":default:return parseTimezonePattern(timezonePatterns.extended,e)}}set(e,i,r){return i.timestampIsSet?e:constructFrom(e,e.getTime()-getTimezoneOffsetInMilliseconds(e)-r)}}class ISOTimezoneParser extends Parser{constructor(){super(...arguments);F(this,"priority",10);F(this,"incompatibleTokens",["t","T","X"])}parse(e,i){switch(i){case"x":return parseTimezonePattern(timezonePatterns.basicOptionalMinutes,e);case"xx":return parseTimezonePattern(timezonePatterns.basic,e);case"xxxx":return parseTimezonePattern(timezonePatterns.basicOptionalSeconds,e);case"xxxxx":return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds,e);case"xxx":default:return parseTimezonePattern(timezonePatterns.extended,e)}}set(e,i,r){return i.timestampIsSet?e:constructFrom(e,e.getTime()-getTimezoneOffsetInMilliseconds(e)-r)}}class TimestampSecondsParser extends Parser{constructor(){super(...arguments);F(this,"priority",40);F(this,"incompatibleTokens","*")}parse(e){return parseAnyDigitsSigned(e)}set(e,i,r){return[constructFrom(e,r*1e3),{timestampIsSet:!0}]}}class TimestampMillisecondsParser extends Parser{constructor(){super(...arguments);F(this,"priority",20);F(this,"incompatibleTokens","*")}parse(e){return parseAnyDigitsSigned(e)}set(e,i,r){return[constructFrom(e,r),{timestampIsSet:!0}]}}const parsers={G:new EraParser,y:new YearParser,Y:new LocalWeekYearParser,R:new ISOWeekYearParser,u:new ExtendedYearParser,Q:new QuarterParser,q:new StandAloneQuarterParser,M:new MonthParser,L:new StandAloneMonthParser,w:new LocalWeekParser,I:new ISOWeekParser,d:new DateParser,D:new DayOfYearParser,E:new DayParser,e:new LocalDayParser,c:new StandAloneLocalDayParser,i:new ISODayParser,a:new AMPMParser,b:new AMPMMidnightParser,B:new DayPeriodParser,h:new Hour1to12Parser,H:new Hour0to23Parser,K:new Hour0To11Parser,k:new Hour1To24Parser,m:new MinuteParser,s:new SecondParser,S:new FractionOfSecondParser,X:new ISOTimezoneWithZParser,x:new ISOTimezoneParser,t:new TimestampSecondsParser,T:new TimestampMillisecondsParser},formattingTokensRegExp=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,longFormattingTokensRegExp=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,escapedStringRegExp=/^'([^]*?)'?$/,doubleQuoteRegExp=/''/g,notWhitespaceRegExp=/\S/,unescapedLatinCharacterRegExp=/[a-zA-Z]/;function parse$1(n,t,e,i){var v,E,x,S,M,k,A,I;const r=getDefaultOptions(),a=(i==null?void 0:i.locale)??r.locale??enUS,o=(i==null?void 0:i.firstWeekContainsDate)??((E=(v=i==null?void 0:i.locale)==null?void 0:v.options)==null?void 0:E.firstWeekContainsDate)??r.firstWeekContainsDate??((S=(x=r.locale)==null?void 0:x.options)==null?void 0:S.firstWeekContainsDate)??1,l=(i==null?void 0:i.weekStartsOn)??((k=(M=i==null?void 0:i.locale)==null?void 0:M.options)==null?void 0:k.weekStartsOn)??r.weekStartsOn??((I=(A=r.locale)==null?void 0:A.options)==null?void 0:I.weekStartsOn)??0;if(t==="")return n===""?toDate(e):constructFrom(e,NaN);const u={firstWeekContainsDate:o,weekStartsOn:l,locale:a},d=[new DateToSystemTimezoneSetter],m=t.match(longFormattingTokensRegExp).map(C=>{const R=C[0];if(R in longFormatters){const W=longFormatters[R];return W(C,a.formatLong)}return C}).join("").match(formattingTokensRegExp),p=[];for(let C of m){!(i!=null&&i.useAdditionalWeekYearTokens)&&isProtectedWeekYearToken(C)&&warnOrThrowProtectedError(C,t,n),!(i!=null&&i.useAdditionalDayOfYearTokens)&&isProtectedDayOfYearToken(C)&&warnOrThrowProtectedError(C,t,n);const R=C[0],W=parsers[R];if(W){const{incompatibleTokens:K}=W;if(Array.isArray(K)){const q=p.find(J=>K.includes(J.token)||J.token===R);if(q)throw new RangeError(`The format string mustn't contain \`${q.fullToken}\` and \`${C}\` at the same time`)}else if(W.incompatibleTokens==="*"&&p.length>0)throw new RangeError(`The format string mustn't contain \`${C}\` and any other token at the same time`);p.push({token:R,fullToken:C});const Y=W.run(n,C,a.match,u);if(!Y)return constructFrom(e,NaN);d.push(Y.setter),n=Y.rest}else{if(R.match(unescapedLatinCharacterRegExp))throw new RangeError("Format string contains an unescaped latin alphabet character `"+R+"`");if(C==="''"?C="'":R==="'"&&(C=cleanEscapedString(C)),n.indexOf(C)===0)n=n.slice(C.length);else return constructFrom(e,NaN)}}if(n.length>0&¬WhitespaceRegExp.test(n))return constructFrom(e,NaN);const _=d.map(C=>C.priority).sort((C,R)=>R-C).filter((C,R,W)=>W.indexOf(C)===R).map(C=>d.filter(R=>R.priority===C).sort((R,W)=>W.subPriority-R.subPriority)).map(C=>C[0]);let y=toDate(e);if(isNaN(y.getTime()))return constructFrom(e,NaN);const w={};for(const C of _){if(!C.validate(y,u))return constructFrom(e,NaN);const R=C.set(y,w,u);Array.isArray(R)?(y=R[0],Object.assign(w,R[1])):y=R}return constructFrom(e,y)}function cleanEscapedString(n){return n.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp,"'")}function startOfHour(n){const t=toDate(n);return t.setMinutes(0,0,0),t}function isSameWeek(n,t,e){const i=startOfWeek(n,e),r=startOfWeek(t,e);return+i==+r}function startOfSecond(n){const t=toDate(n);return t.setMilliseconds(0),t}function subDays(n,t){return addDays(n,-t)}function parseISO(n,t){const e=(t==null?void 0:t.additionalDigits)??2,i=splitDateString(n);let r;if(i.date){const u=parseYear(i.date,e);r=parseDate(u.restDateString,u.year)}if(!r||isNaN(r.getTime()))return new Date(NaN);const a=r.getTime();let o=0,l;if(i.time&&(o=parseTime(i.time),isNaN(o)))return new Date(NaN);if(i.timezone){if(l=parseTimezone(i.timezone),isNaN(l))return new Date(NaN)}else{const u=new Date(a+o),d=new Date(0);return d.setFullYear(u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()),d.setHours(u.getUTCHours(),u.getUTCMinutes(),u.getUTCSeconds(),u.getUTCMilliseconds()),d}return new Date(a+o+l)}const patterns={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},dateRegex=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,timeRegex=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,timezoneRegex=/^([+-])(\d{2})(?::?(\d{2}))?$/;function splitDateString(n){const t={},e=n.split(patterns.dateTimeDelimiter);let i;if(e.length>2)return t;if(/:/.test(e[0])?i=e[0]:(t.date=e[0],i=e[1],patterns.timeZoneDelimiter.test(t.date)&&(t.date=n.split(patterns.timeZoneDelimiter)[0],i=n.substr(t.date.length,n.length))),i){const r=patterns.timezone.exec(i);r?(t.time=i.replace(r[1],""),t.timezone=r[1]):t.time=i}return t}function parseYear(n,t){const e=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+t)+"})|(\\d{2}|[+-]\\d{"+(2+t)+"})$)"),i=n.match(e);if(!i)return{year:NaN,restDateString:""};const r=i[1]?parseInt(i[1]):null,a=i[2]?parseInt(i[2]):null;return{year:a===null?r:a*100,restDateString:n.slice((i[1]||i[2]).length)}}function parseDate(n,t){if(t===null)return new Date(NaN);const e=n.match(dateRegex);if(!e)return new Date(NaN);const i=!!e[4],r=parseDateUnit(e[1]),a=parseDateUnit(e[2])-1,o=parseDateUnit(e[3]),l=parseDateUnit(e[4]),u=parseDateUnit(e[5])-1;if(i)return validateWeekDate(t,l,u)?dayOfISOWeekYear(t,l,u):new Date(NaN);{const d=new Date(0);return!validateDate(t,a,o)||!validateDayOfYearDate(t,r)?new Date(NaN):(d.setUTCFullYear(t,a,Math.max(r,o)),d)}}function parseDateUnit(n){return n?parseInt(n):1}function parseTime(n){const t=n.match(timeRegex);if(!t)return NaN;const e=parseTimeUnit(t[1]),i=parseTimeUnit(t[2]),r=parseTimeUnit(t[3]);return validateTime(e,i,r)?e*millisecondsInHour+i*millisecondsInMinute+r*1e3:NaN}function parseTimeUnit(n){return n&&parseFloat(n.replace(",","."))||0}function parseTimezone(n){if(n==="Z")return 0;const t=n.match(timezoneRegex);if(!t)return 0;const e=t[1]==="+"?-1:1,i=parseInt(t[2]),r=t[3]&&parseInt(t[3])||0;return validateTimezone(i,r)?e*(i*millisecondsInHour+r*millisecondsInMinute):NaN}function dayOfISOWeekYear(n,t,e){const i=new Date(0);i.setUTCFullYear(n,0,4);const r=i.getUTCDay()||7,a=(t-1)*7+e+1-r;return i.setUTCDate(i.getUTCDate()+a),i}const daysInMonths=[31,null,31,30,31,30,31,31,30,31,30,31];function isLeapYearIndex(n){return n%400===0||n%4===0&&n%100!==0}function validateDate(n,t,e){return t>=0&&t<=11&&e>=1&&e<=(daysInMonths[t]||(isLeapYearIndex(n)?29:28))}function validateDayOfYearDate(n,t){return t>=1&&t<=(isLeapYearIndex(n)?366:365)}function validateWeekDate(n,t,e){return t>=1&&t<=53&&e>=0&&e<=6}function validateTime(n,t,e){return n===24?t===0&&e===0:e>=0&&e<60&&t>=0&&t<60&&n>=0&&n<25}function validateTimezone(n,t){return t>=0&&t<=59}function subMonths(n,t){return addMonths(n,-t)}const consoleLogger={type:"logger",log(n){this.output("log",n)},warn(n){this.output("warn",n)},error(n){this.output("error",n)},output(n,t){console&&console[n]&&console[n].apply(console,t)}};class Logger{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,e)}init(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=e.prefix||"i18next:",this.logger=t||consoleLogger,this.options=e,this.debug=e.debug}log(){for(var t=arguments.length,e=new Array(t),i=0;i{this.observers[i]=this.observers[i]||[],this.observers[i].push(e)}),this}off(t,e){if(this.observers[t]){if(!e){delete this.observers[t];return}this.observers[t]=this.observers[t].filter(i=>i!==e)}}emit(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),r=1;r{o(...i)}),this.observers["*"]&&[].concat(this.observers["*"]).forEach(o=>{o.apply(o,[t,...i])})}}function defer(){let n,t;const e=new Promise((i,r)=>{n=i,t=r});return e.resolve=n,e.reject=t,e}function makeString(n){return n==null?"":""+n}function copy(n,t,e){n.forEach(i=>{t[i]&&(e[i]=t[i])})}function getLastOfPath(n,t,e){function i(o){return o&&o.indexOf("###")>-1?o.replace(/###/g,"."):o}function r(){return!n||typeof n=="string"}const a=typeof t!="string"?[].concat(t):t.split(".");for(;a.length>1;){if(r())return{};const o=i(a.shift());!n[o]&&e&&(n[o]=new e),Object.prototype.hasOwnProperty.call(n,o)?n=n[o]:n={}}return r()?{}:{obj:n,k:i(a.shift())}}function setPath(n,t,e){const{obj:i,k:r}=getLastOfPath(n,t,Object);i[r]=e}function pushPath(n,t,e,i){const{obj:r,k:a}=getLastOfPath(n,t,Object);r[a]=r[a]||[],i&&(r[a]=r[a].concat(e)),i||r[a].push(e)}function getPath(n,t){const{obj:e,k:i}=getLastOfPath(n,t);if(e)return e[i]}function getPathWithDefaults(n,t,e){const i=getPath(n,e);return i!==void 0?i:getPath(t,e)}function deepExtend(n,t,e){for(const i in t)i!=="__proto__"&&i!=="constructor"&&(i in n?typeof n[i]=="string"||n[i]instanceof String||typeof t[i]=="string"||t[i]instanceof String?e&&(n[i]=t[i]):deepExtend(n[i],t[i],e):n[i]=t[i]);return n}function regexEscape(n){return n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var _entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function escape$1(n){return typeof n=="string"?n.replace(/[&<>"'\/]/g,t=>_entityMap[t]):n}const chars=[" ",",","?","!",";"];function looksLikeObjectPath(n,t,e){t=t||"",e=e||"";const i=chars.filter(o=>t.indexOf(o)<0&&e.indexOf(o)<0);if(i.length===0)return!0;const r=new RegExp(`(${i.map(o=>o==="?"?"\\?":o).join("|")})`);let a=!r.test(n);if(!a){const o=n.indexOf(e);o>0&&!r.test(n.substring(0,o))&&(a=!0)}return a}function deepFind(n,t){let e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!n)return;if(n[t])return n[t];const i=t.split(e);let r=n;for(let a=0;aa+o;)o++,l=i.slice(a,a+o).join(e),u=r[l];if(u===void 0)return;if(u===null)return null;if(t.endsWith(l)){if(typeof u=="string")return u;if(l&&typeof u[l]=="string")return u[l]}const d=i.slice(a+o).join(e);return d?deepFind(u,d,e):void 0}r=r[i[a]]}return r}function getCleanedCode(n){return n&&n.indexOf("_")>0?n.replace("_","-"):n}class ResourceStore extends EventEmitter{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=e,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const e=this.options.ns.indexOf(t);e>-1&&this.options.ns.splice(e,1)}getResource(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,o=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let l=[t,e];i&&typeof i!="string"&&(l=l.concat(i)),i&&typeof i=="string"&&(l=l.concat(a?i.split(a):i)),t.indexOf(".")>-1&&(l=t.split("."));const u=getPath(this.data,l);return u||!o||typeof i!="string"?u:deepFind(this.data&&this.data[t]&&this.data[t][e],i,a)}addResource(t,e,i,r){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const o=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let l=[t,e];i&&(l=l.concat(o?i.split(o):i)),t.indexOf(".")>-1&&(l=t.split("."),r=e,e=l[1]),this.addNamespaces(e),setPath(this.data,l,r),a.silent||this.emit("added",t,e,i,r)}addResources(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const a in i)(typeof i[a]=="string"||Object.prototype.toString.apply(i[a])==="[object Array]")&&this.addResource(t,e,a,i[a],{silent:!0});r.silent||this.emit("added",t,e,i)}addResourceBundle(t,e,i,r,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},l=[t,e];t.indexOf(".")>-1&&(l=t.split("."),r=i,i=e,e=l[1]),this.addNamespaces(e);let u=getPath(this.data,l)||{};r?deepExtend(u,i,a):u={...u,...i},setPath(this.data,l,u),o.silent||this.emit("added",t,e,i)}removeResourceBundle(t,e){this.hasResourceBundle(t,e)&&delete this.data[t][e],this.removeNamespaces(e),this.emit("removed",t,e)}hasResourceBundle(t,e){return this.getResource(t,e)!==void 0}getResourceBundle(t,e){return e||(e=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,e)}:this.getResource(t,e)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const e=this.getDataByLanguage(t);return!!(e&&Object.keys(e)||[]).find(r=>e[r]&&Object.keys(e[r]).length>0)}toJSON(){return this.data}}var postProcessor={processors:{},addPostProcessor(n){this.processors[n.name]=n},handle(n,t,e,i,r){return n.forEach(a=>{this.processors[a]&&(t=this.processors[a].process(t,e,i,r))}),t}};const checkedLoadedFor={};class Translator extends EventEmitter{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),copy(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=e,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=baseLogger.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const i=this.resolve(t,e);return i&&i.res!==void 0}extractFromKey(t,e){let i=e.nsSeparator!==void 0?e.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=e.keySeparator!==void 0?e.keySeparator:this.options.keySeparator;let a=e.ns||this.options.defaultNS||[];const o=i&&t.indexOf(i)>-1,l=!this.options.userDefinedKeySeparator&&!e.keySeparator&&!this.options.userDefinedNsSeparator&&!e.nsSeparator&&!looksLikeObjectPath(t,i,r);if(o&&!l){const u=t.match(this.interpolator.nestingRegexp);if(u&&u.length>0)return{key:t,namespaces:a};const d=t.split(i);(i!==r||i===r&&this.options.ns.indexOf(d[0])>-1)&&(a=d.shift()),t=d.join(r)}return typeof a=="string"&&(a=[a]),{key:t,namespaces:a}}translate(t,e,i){if(typeof e!="object"&&this.options.overloadTranslationOptionHandler&&(e=this.options.overloadTranslationOptionHandler(arguments)),typeof e=="object"&&(e={...e}),e||(e={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const r=e.returnDetails!==void 0?e.returnDetails:this.options.returnDetails,a=e.keySeparator!==void 0?e.keySeparator:this.options.keySeparator,{key:o,namespaces:l}=this.extractFromKey(t[t.length-1],e),u=l[l.length-1],d=e.lng||this.language,m=e.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d&&d.toLowerCase()==="cimode"){if(m){const k=e.nsSeparator||this.options.nsSeparator;return r?{res:`${u}${k}${o}`,usedKey:o,exactUsedKey:o,usedLng:d,usedNS:u,usedParams:this.getUsedParamsDetails(e)}:`${u}${k}${o}`}return r?{res:o,usedKey:o,exactUsedKey:o,usedLng:d,usedNS:u,usedParams:this.getUsedParamsDetails(e)}:o}const p=this.resolve(t,e);let _=p&&p.res;const y=p&&p.usedKey||o,w=p&&p.exactUsedKey||o,v=Object.prototype.toString.apply(_),E=["[object Number]","[object Function]","[object RegExp]"],x=e.joinArrays!==void 0?e.joinArrays:this.options.joinArrays,S=!this.i18nFormat||this.i18nFormat.handleAsObject;if(S&&_&&(typeof _!="string"&&typeof _!="boolean"&&typeof _!="number")&&E.indexOf(v)<0&&!(typeof x=="string"&&v==="[object Array]")){if(!e.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const k=this.options.returnedObjectHandler?this.options.returnedObjectHandler(y,_,{...e,ns:l}):`key '${o} (${this.language})' returned an object instead of string.`;return r?(p.res=k,p.usedParams=this.getUsedParamsDetails(e),p):k}if(a){const k=v==="[object Array]",A=k?[]:{},I=k?w:y;for(const C in _)if(Object.prototype.hasOwnProperty.call(_,C)){const R=`${I}${a}${C}`;A[C]=this.translate(R,{...e,joinArrays:!1,ns:l}),A[C]===R&&(A[C]=_[C])}_=A}}else if(S&&typeof x=="string"&&v==="[object Array]")_=_.join(x),_&&(_=this.extendTranslation(_,t,e,i));else{let k=!1,A=!1;const I=e.count!==void 0&&typeof e.count!="string",C=Translator.hasDefaultValue(e),R=I?this.pluralResolver.getSuffix(d,e.count,e):"",W=e.ordinal&&I?this.pluralResolver.getSuffix(d,e.count,{ordinal:!1}):"",K=e[`defaultValue${R}`]||e[`defaultValue${W}`]||e.defaultValue;!this.isValidLookup(_)&&C&&(k=!0,_=K),this.isValidLookup(_)||(A=!0,_=o);const q=(e.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&A?void 0:_,J=C&&K!==_&&this.options.updateMissing;if(A||k||J){if(this.logger.log(J?"updateKey":"missingKey",d,u,o,J?K:_),a){const V=this.resolve(o,{...e,keySeparator:!1});V&&V.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let nt=[];const $=this.languageUtils.getFallbackCodes(this.options.fallbackLng,e.lng||this.language);if(this.options.saveMissingTo==="fallback"&&$&&$[0])for(let V=0;V<$.length;V++)nt.push($[V]);else this.options.saveMissingTo==="all"?nt=this.languageUtils.toResolveHierarchy(e.lng||this.language):nt.push(e.lng||this.language);const N=(V,H,X)=>{const B=C&&X!==_?X:q;this.options.missingKeyHandler?this.options.missingKeyHandler(V,u,H,B,J,e):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(V,u,H,B,J,e),this.emit("missingKey",V,u,H,_)};this.options.saveMissing&&(this.options.saveMissingPlurals&&I?nt.forEach(V=>{this.pluralResolver.getSuffixes(V,e).forEach(H=>{N([V],o+H,e[`defaultValue${H}`]||K)})}):N(nt,o,K))}_=this.extendTranslation(_,t,e,p,i),A&&_===o&&this.options.appendNamespaceToMissingKey&&(_=`${u}:${o}`),(A||k)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?_=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${u}:${o}`:o,k?_:void 0):_=this.options.parseMissingKeyHandler(_))}return r?(p.res=_,p.usedParams=this.getUsedParamsDetails(e),p):_}extendTranslation(t,e,i,r,a){var o=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const d=typeof t=="string"&&(i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let m;if(d){const _=t.match(this.interpolator.nestingRegexp);m=_&&_.length}let p=i.replace&&typeof i.replace!="string"?i.replace:i;if(this.options.interpolation.defaultVariables&&(p={...this.options.interpolation.defaultVariables,...p}),t=this.interpolator.interpolate(t,p,i.lng||this.language,i),d){const _=t.match(this.interpolator.nestingRegexp),y=_&&_.length;m1&&arguments[1]!==void 0?arguments[1]:{},i,r,a,o,l;return typeof t=="string"&&(t=[t]),t.forEach(u=>{if(this.isValidLookup(i))return;const d=this.extractFromKey(u,e),m=d.key;r=m;let p=d.namespaces;this.options.fallbackNS&&(p=p.concat(this.options.fallbackNS));const _=e.count!==void 0&&typeof e.count!="string",y=_&&!e.ordinal&&e.count===0&&this.pluralResolver.shouldUseIntlApi(),w=e.context!==void 0&&(typeof e.context=="string"||typeof e.context=="number")&&e.context!=="",v=e.lngs?e.lngs:this.languageUtils.toResolveHierarchy(e.lng||this.language,e.fallbackLng);p.forEach(E=>{this.isValidLookup(i)||(l=E,!checkedLoadedFor[`${v[0]}-${E}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(l)&&(checkedLoadedFor[`${v[0]}-${E}`]=!0,this.logger.warn(`key "${r}" for languages "${v.join(", ")}" won't get resolved as namespace "${l}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),v.forEach(x=>{if(this.isValidLookup(i))return;o=x;const S=[m];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(S,m,x,E,e);else{let k;_&&(k=this.pluralResolver.getSuffix(x,e.count,e));const A=`${this.options.pluralSeparator}zero`,I=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(_&&(S.push(m+k),e.ordinal&&k.indexOf(I)===0&&S.push(m+k.replace(I,this.options.pluralSeparator)),y&&S.push(m+A)),w){const C=`${m}${this.options.contextSeparator}${e.context}`;S.push(C),_&&(S.push(C+k),e.ordinal&&k.indexOf(I)===0&&S.push(C+k.replace(I,this.options.pluralSeparator)),y&&S.push(C+A))}}let M;for(;M=S.pop();)this.isValidLookup(i)||(a=M,i=this.getResource(x,E,M,e))}))})}),{res:i,usedKey:r,exactUsedKey:a,usedLng:o,usedNS:l}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,e,i,r):this.resourceStore.getResource(t,e,i,r)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const e=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=t.replace&&typeof t.replace!="string";let r=i?t.replace:t;if(i&&typeof t.count<"u"&&(r.count=t.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const a of e)delete r[a]}return r}static hasDefaultValue(t){const e="defaultValue";for(const i in t)if(Object.prototype.hasOwnProperty.call(t,i)&&e===i.substring(0,e.length)&&t[i]!==void 0)return!0;return!1}}function capitalize(n){return n.charAt(0).toUpperCase()+n.slice(1)}class LanguageUtil{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=baseLogger.create("languageUtils")}getScriptPartFromCode(t){if(t=getCleanedCode(t),!t||t.indexOf("-")<0)return null;const e=t.split("-");return e.length===2||(e.pop(),e[e.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(e.join("-"))}getLanguagePartFromCode(t){if(t=getCleanedCode(t),!t||t.indexOf("-")<0)return t;const e=t.split("-");return this.formatLanguageCode(e[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const e=["hans","hant","latn","cyrl","cans","mong","arab"];let i=t.split("-");return this.options.lowerCaseLng?i=i.map(r=>r.toLowerCase()):i.length===2?(i[0]=i[0].toLowerCase(),i[1]=i[1].toUpperCase(),e.indexOf(i[1].toLowerCase())>-1&&(i[1]=capitalize(i[1].toLowerCase()))):i.length===3&&(i[0]=i[0].toLowerCase(),i[1].length===2&&(i[1]=i[1].toUpperCase()),i[0]!=="sgn"&&i[2].length===2&&(i[2]=i[2].toUpperCase()),e.indexOf(i[1].toLowerCase())>-1&&(i[1]=capitalize(i[1].toLowerCase())),e.indexOf(i[2].toLowerCase())>-1&&(i[2]=capitalize(i[2].toLowerCase()))),i.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let e;return t.forEach(i=>{if(e)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(e=r)}),!e&&this.options.supportedLngs&&t.forEach(i=>{if(e)return;const r=this.getLanguagePartFromCode(i);if(this.isSupportedCode(r))return e=r;e=this.options.supportedLngs.find(a=>{if(a===r)return a;if(!(a.indexOf("-")<0&&r.indexOf("-")<0)&&a.indexOf(r)===0)return a})}),e||(e=this.getFallbackCodes(this.options.fallbackLng)[0]),e}getFallbackCodes(t,e){if(!t)return[];if(typeof t=="function"&&(t=t(e)),typeof t=="string"&&(t=[t]),Object.prototype.toString.apply(t)==="[object Array]")return t;if(!e)return t.default||[];let i=t[e];return i||(i=t[this.getScriptPartFromCode(e)]),i||(i=t[this.formatLanguageCode(e)]),i||(i=t[this.getLanguagePartFromCode(e)]),i||(i=t.default),i||[]}toResolveHierarchy(t,e){const i=this.getFallbackCodes(e||this.options.fallbackLng||[],t),r=[],a=o=>{o&&(this.isSupportedCode(o)?r.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(t))):typeof t=="string"&&a(this.formatLanguageCode(t)),i.forEach(o=>{r.indexOf(o)<0&&a(this.formatLanguageCode(o))}),r}}let sets=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],_rulesPluralsTypes={1:function(n){return+(n>1)},2:function(n){return+(n!=1)},3:function(n){return 0},4:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2},5:function(n){return n==0?0:n==1?1:n==2?2:n%100>=3&&n%100<=10?3:n%100>=11?4:5},6:function(n){return n==1?0:n>=2&&n<=4?1:2},7:function(n){return n==1?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2},8:function(n){return n==1?0:n==2?1:n!=8&&n!=11?2:3},9:function(n){return+(n>=2)},10:function(n){return n==1?0:n==2?1:n<7?2:n<11?3:4},11:function(n){return n==1||n==11?0:n==2||n==12?1:n>2&&n<20?2:3},12:function(n){return+(n%10!=1||n%100==11)},13:function(n){return+(n!==0)},14:function(n){return n==1?0:n==2?1:n==3?2:3},15:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&(n%100<10||n%100>=20)?1:2},16:function(n){return n%10==1&&n%100!=11?0:n!==0?1:2},17:function(n){return n==1||n%10==1&&n%100!=11?0:1},18:function(n){return n==0?0:n==1?1:2},19:function(n){return n==1?0:n==0||n%100>1&&n%100<11?1:n%100>10&&n%100<20?2:3},20:function(n){return n==1?0:n==0||n%100>0&&n%100<20?1:2},21:function(n){return n%100==1?1:n%100==2?2:n%100==3||n%100==4?3:0},22:function(n){return n==1?0:n==2?1:(n<0||n>10)&&n%10==0?2:3}};const nonIntlVersions=["v1","v2","v3"],intlVersions=["v4"],suffixesOrder={zero:0,one:1,two:2,few:3,many:4,other:5};function createRules(){const n={};return sets.forEach(t=>{t.lngs.forEach(e=>{n[e]={numbers:t.nr,plurals:_rulesPluralsTypes[t.fc]}})}),n}class PluralResolver{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=e,this.logger=baseLogger.create("pluralResolver"),(!this.options.compatibilityJSON||intlVersions.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=createRules()}addRule(t,e){this.rules[t]=e}getRule(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(getCleanedCode(t),{type:e.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i=this.getRule(t,e);return this.shouldUseIntlApi()?i&&i.resolvedOptions().pluralCategories.length>1:i&&i.numbers.length>1}getPluralFormsOfKey(t,e){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,i).map(r=>`${e}${r}`)}getSuffixes(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i=this.getRule(t,e);return i?this.shouldUseIntlApi()?i.resolvedOptions().pluralCategories.sort((r,a)=>suffixesOrder[r]-suffixesOrder[a]).map(r=>`${this.options.prepend}${e.ordinal?`ordinal${this.options.prepend}`:""}${r}`):i.numbers.map(r=>this.getSuffix(t,r,e)):[]}getSuffix(t,e){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const r=this.getRule(t,i);return r?this.shouldUseIntlApi()?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(e)}`:this.getSuffixRetroCompatible(r,e):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,e){const i=t.noAbs?t.plurals(e):t.plurals(Math.abs(e));let r=t.numbers[i];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(r===2?r="plural":r===1&&(r=""));const a=()=>this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString();return this.options.compatibilityJSON==="v1"?r===1?"":typeof r=="number"?`_plural_${r.toString()}`:a():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?a():this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString()}shouldUseIntlApi(){return!nonIntlVersions.includes(this.options.compatibilityJSON)}}function deepFindWithDefaults(n,t,e){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=getPathWithDefaults(n,t,e);return!a&&r&&typeof e=="string"&&(a=deepFind(n,e,i),a===void 0&&(a=deepFind(t,e,i))),a}class Interpolator{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=baseLogger.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(e=>e),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const e=t.interpolation;this.escape=e.escape!==void 0?e.escape:escape$1,this.escapeValue=e.escapeValue!==void 0?e.escapeValue:!0,this.useRawValueToEscape=e.useRawValueToEscape!==void 0?e.useRawValueToEscape:!1,this.prefix=e.prefix?regexEscape(e.prefix):e.prefixEscaped||"{{",this.suffix=e.suffix?regexEscape(e.suffix):e.suffixEscaped||"}}",this.formatSeparator=e.formatSeparator?e.formatSeparator:e.formatSeparator||",",this.unescapePrefix=e.unescapeSuffix?"":e.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":e.unescapeSuffix||"",this.nestingPrefix=e.nestingPrefix?regexEscape(e.nestingPrefix):e.nestingPrefixEscaped||regexEscape("$t("),this.nestingSuffix=e.nestingSuffix?regexEscape(e.nestingSuffix):e.nestingSuffixEscaped||regexEscape(")"),this.nestingOptionsSeparator=e.nestingOptionsSeparator?e.nestingOptionsSeparator:e.nestingOptionsSeparator||",",this.maxReplaces=e.maxReplaces?e.maxReplaces:1e3,this.alwaysFormat=e.alwaysFormat!==void 0?e.alwaysFormat:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=`${this.prefix}(.+?)${this.suffix}`;this.regexp=new RegExp(t,"g");const e=`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;this.regexpUnescape=new RegExp(e,"g");const i=`${this.nestingPrefix}(.+?)${this.nestingSuffix}`;this.nestingRegexp=new RegExp(i,"g")}interpolate(t,e,i,r){let a,o,l;const u=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function d(w){return w.replace(/\$/g,"$$$$")}const m=w=>{if(w.indexOf(this.formatSeparator)<0){const S=deepFindWithDefaults(e,u,w,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(S,void 0,i,{...r,...e,interpolationkey:w}):S}const v=w.split(this.formatSeparator),E=v.shift().trim(),x=v.join(this.formatSeparator).trim();return this.format(deepFindWithDefaults(e,u,E,this.options.keySeparator,this.options.ignoreJSONStructure),x,i,{...r,...e,interpolationkey:E})};this.resetRegExp();const p=r&&r.missingInterpolationHandler||this.options.missingInterpolationHandler,_=r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:w=>d(w)},{regex:this.regexp,safeValue:w=>this.escapeValue?d(this.escape(w)):d(w)}].forEach(w=>{for(l=0;a=w.regex.exec(t);){const v=a[1].trim();if(o=m(v),o===void 0)if(typeof p=="function"){const x=p(t,a,r);o=typeof x=="string"?x:""}else if(r&&Object.prototype.hasOwnProperty.call(r,v))o="";else if(_){o=a[0];continue}else this.logger.warn(`missed to pass in variable ${v} for interpolating ${t}`),o="";else typeof o!="string"&&!this.useRawValueToEscape&&(o=makeString(o));const E=w.safeValue(o);if(t=t.replace(a[0],E),_?(w.regex.lastIndex+=o.length,w.regex.lastIndex-=a[0].length):w.regex.lastIndex=0,l++,l>=this.maxReplaces)break}}),t}nest(t,e){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r,a,o;function l(u,d){const m=this.nestingOptionsSeparator;if(u.indexOf(m)<0)return u;const p=u.split(new RegExp(`${m}[ ]*{`));let _=`{${p[1]}`;u=p[0],_=this.interpolate(_,o);const y=_.match(/'/g),w=_.match(/"/g);(y&&y.length%2===0&&!w||w.length%2!==0)&&(_=_.replace(/'/g,'"'));try{o=JSON.parse(_),d&&(o={...d,...o})}catch(v){return this.logger.warn(`failed parsing options string in nesting for key ${u}`,v),`${u}${m}${_}`}return delete o.defaultValue,u}for(;r=this.nestingRegexp.exec(t);){let u=[];o={...i},o=o.replace&&typeof o.replace!="string"?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let d=!1;if(r[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(r[1])){const m=r[1].split(this.formatSeparator).map(p=>p.trim());r[1]=m.shift(),u=m,d=!0}if(a=e(l.call(this,r[1].trim(),o),o),a&&r[0]===t&&typeof a!="string")return a;typeof a!="string"&&(a=makeString(a)),a||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${t}`),a=""),d&&(a=u.reduce((m,p)=>this.format(m,p,i.lng,{...i,interpolationkey:r[1].trim()}),a.trim())),t=t.replace(r[0],a),this.regexp.lastIndex=0}return t}}function parseFormatStr(n){let t=n.toLowerCase().trim();const e={};if(n.indexOf("(")>-1){const i=n.split("(");t=i[0].toLowerCase().trim();const r=i[1].substring(0,i[1].length-1);t==="currency"&&r.indexOf(":")<0?e.currency||(e.currency=r.trim()):t==="relativetime"&&r.indexOf(":")<0?e.range||(e.range=r.trim()):r.split(";").forEach(o=>{if(!o)return;const[l,...u]=o.split(":"),d=u.join(":").trim().replace(/^'+|'+$/g,"");e[l.trim()]||(e[l.trim()]=d),d==="false"&&(e[l.trim()]=!1),d==="true"&&(e[l.trim()]=!0),isNaN(d)||(e[l.trim()]=parseInt(d,10))})}return{formatName:t,formatOptions:e}}function createCachedFormatter(n){const t={};return function(i,r,a){const o=r+JSON.stringify(a);let l=t[o];return l||(l=n(getCleanedCode(r),a),t[o]=l),l(i)}}class Formatter{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=baseLogger.create("formatter"),this.options=t,this.formats={number:createCachedFormatter((e,i)=>{const r=new Intl.NumberFormat(e,{...i});return a=>r.format(a)}),currency:createCachedFormatter((e,i)=>{const r=new Intl.NumberFormat(e,{...i,style:"currency"});return a=>r.format(a)}),datetime:createCachedFormatter((e,i)=>{const r=new Intl.DateTimeFormat(e,{...i});return a=>r.format(a)}),relativetime:createCachedFormatter((e,i)=>{const r=new Intl.RelativeTimeFormat(e,{...i});return a=>r.format(a,i.range||"day")}),list:createCachedFormatter((e,i)=>{const r=new Intl.ListFormat(e,{...i});return a=>r.format(a)})},this.init(t)}init(t){const i=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=i.formatSeparator?i.formatSeparator:i.formatSeparator||","}add(t,e){this.formats[t.toLowerCase().trim()]=e}addCached(t,e){this.formats[t.toLowerCase().trim()]=createCachedFormatter(e)}format(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return e.split(this.formatSeparator).reduce((l,u)=>{const{formatName:d,formatOptions:m}=parseFormatStr(u);if(this.formats[d]){let p=l;try{const _=r&&r.formatParams&&r.formatParams[r.interpolationkey]||{},y=_.locale||_.lng||r.locale||r.lng||i;p=this.formats[d](l,y,{...m,...r,..._})}catch(_){this.logger.warn(_)}return p}else this.logger.warn(`there was no format function for ${d}`);return l},t)}}function removePending(n,t){n.pending[t]!==void 0&&(delete n.pending[t],n.pendingCount--)}class Connector extends EventEmitter{constructor(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=e,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=baseLogger.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(i,r.backend,r)}queueLoad(t,e,i,r){const a={},o={},l={},u={};return t.forEach(d=>{let m=!0;e.forEach(p=>{const _=`${d}|${p}`;!i.reload&&this.store.hasResourceBundle(d,p)?this.state[_]=2:this.state[_]<0||(this.state[_]===1?o[_]===void 0&&(o[_]=!0):(this.state[_]=1,m=!1,o[_]===void 0&&(o[_]=!0),a[_]===void 0&&(a[_]=!0),u[p]===void 0&&(u[p]=!0)))}),m||(l[d]=!0)}),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(l),toLoadNamespaces:Object.keys(u)}}loaded(t,e,i){const r=t.split("|"),a=r[0],o=r[1];e&&this.emit("failedLoading",a,o,e),i&&this.store.addResourceBundle(a,o,i),this.state[t]=e?-1:2;const l={};this.queue.forEach(u=>{pushPath(u.loaded,[a],o),removePending(u,t),e&&u.errors.push(e),u.pendingCount===0&&!u.done&&(Object.keys(u.loaded).forEach(d=>{l[d]||(l[d]={});const m=u.loaded[d];m.length&&m.forEach(p=>{l[d][p]===void 0&&(l[d][p]=!0)})}),u.done=!0,u.errors.length?u.callback(u.errors):u.callback())}),this.emit("loaded",l),this.queue=this.queue.filter(u=>!u.done)}read(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:e,fcName:i,tried:r,wait:a,callback:o});return}this.readingCalls++;const l=(d,m)=>{if(this.readingCalls--,this.waitingReads.length>0){const p=this.waitingReads.shift();this.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(d&&m&&r{this.read.call(this,t,e,i,r+1,a*2,o)},a);return}o(d,m)},u=this.backend[i].bind(this.backend);if(u.length===2){try{const d=u(t,e);d&&typeof d.then=="function"?d.then(m=>l(null,m)).catch(l):l(null,d)}catch(d){l(d)}return}return u(t,e,l)}prepareLoading(t,e){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof e=="string"&&(e=[e]);const a=this.queueLoad(t,e,i,r);if(!a.toLoad.length)return a.pending.length||r(),null;a.toLoad.forEach(o=>{this.loadOne(o)})}load(t,e,i){this.prepareLoading(t,e,{},i)}reload(t,e,i){this.prepareLoading(t,e,{reload:!0},i)}loadOne(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const i=t.split("|"),r=i[0],a=i[1];this.read(r,a,"read",void 0,void 0,(o,l)=>{o&&this.logger.warn(`${e}loading namespace ${a} for language ${r} failed`,o),!o&&l&&this.logger.log(`${e}loaded namespace ${a} for language ${r}`,l),this.loaded(t,o,l)})}saveMissing(t,e,i,r,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},l=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(e)){this.logger.warn(`did not save key "${i}" as the namespace "${e}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if(this.backend&&this.backend.create){const u={...o,isUpdate:a},d=this.backend.create.bind(this.backend);if(d.length<6)try{let m;d.length===5?m=d(t,e,i,r,u):m=d(t,e,i,r),m&&typeof m.then=="function"?m.then(p=>l(null,p)).catch(l):l(null,m)}catch(m){l(m)}else d(t,e,i,r,l,u)}!t||!t[0]||this.store.addResource(t[0],e,i,r)}}}function get(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){let e={};if(typeof t[1]=="object"&&(e=t[1]),typeof t[1]=="string"&&(e.defaultValue=t[1]),typeof t[2]=="string"&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const i=t[3]||t[2];Object.keys(i).forEach(r=>{e[r]=i[r]})}return e},interpolation:{escapeValue:!0,format:n=>n,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function transformOptions(n){return typeof n.ns=="string"&&(n.ns=[n.ns]),typeof n.fallbackLng=="string"&&(n.fallbackLng=[n.fallbackLng]),typeof n.fallbackNS=="string"&&(n.fallbackNS=[n.fallbackNS]),n.supportedLngs&&n.supportedLngs.indexOf("cimode")<0&&(n.supportedLngs=n.supportedLngs.concat(["cimode"])),n}function noop$1(){}function bindMemberFunctions(n){Object.getOwnPropertyNames(Object.getPrototypeOf(n)).forEach(e=>{typeof n[e]=="function"&&(n[e]=n[e].bind(n))})}class I18n extends EventEmitter{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;if(super(),this.options=transformOptions(t),this.services={},this.logger=baseLogger,this.modules={external:[]},bindMemberFunctions(this),e&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,e),this;setTimeout(()=>{this.init(t,e)},0)}}init(){var t=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;typeof e=="function"&&(i=e,e={}),!e.defaultNS&&e.defaultNS!==!1&&e.ns&&(typeof e.ns=="string"?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=get();this.options={...r,...this.options,...transformOptions(e)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...r.interpolation,...this.options.interpolation}),e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator);function a(m){return m?typeof m=="function"?new m:m:null}if(!this.options.isClone){this.modules.logger?baseLogger.init(a(this.modules.logger),this.options):baseLogger.init(null,this.options);let m;this.modules.formatter?m=this.modules.formatter:typeof Intl<"u"&&(m=Formatter);const p=new LanguageUtil(this.options);this.store=new ResourceStore(this.options.resources,this.options);const _=this.services;_.logger=baseLogger,_.resourceStore=this.store,_.languageUtils=p,_.pluralResolver=new PluralResolver(p,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),m&&(!this.options.interpolation.format||this.options.interpolation.format===r.interpolation.format)&&(_.formatter=a(m),_.formatter.init(_,this.options),this.options.interpolation.format=_.formatter.format.bind(_.formatter)),_.interpolator=new Interpolator(this.options),_.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},_.backendConnector=new Connector(a(this.modules.backend),_.resourceStore,_,this.options),_.backendConnector.on("*",function(y){for(var w=arguments.length,v=new Array(w>1?w-1:0),E=1;E1?w-1:0),E=1;E{y.init&&y.init(this)})}if(this.format=this.options.interpolation.format,i||(i=noop$1),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const m=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);m.length>0&&m[0]!=="dev"&&(this.options.lng=m[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(m=>{this[m]=function(){return t.store[m](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(m=>{this[m]=function(){return t.store[m](...arguments),t}});const u=defer(),d=()=>{const m=(p,_)=>{this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),u.resolve(_),i(p,_)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return m(null,this.t.bind(this));this.changeLanguage(this.options.lng,m)};return this.options.resources||!this.options.initImmediate?d():setTimeout(d,0),u}loadResources(t){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:noop$1;const r=typeof t=="string"?t:this.language;if(typeof t=="function"&&(i=t),!this.options.resources||this.options.partialBundledLanguages){if(r&&r.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const a=[],o=l=>{if(!l||l==="cimode")return;this.services.languageUtils.toResolveHierarchy(l).forEach(d=>{d!=="cimode"&&a.indexOf(d)<0&&a.push(d)})};r?o(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(u=>o(u)),this.options.preload&&this.options.preload.forEach(l=>o(l)),this.services.backendConnector.load(a,this.options.ns,l=>{!l&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(l)})}else i(null)}reloadResources(t,e,i){const r=defer();return t||(t=this.languages),e||(e=this.options.ns),i||(i=noop$1),this.services.backendConnector.reload(t,e,a=>{r.resolve(),i(a)}),r}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&postProcessor.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}}changeLanguage(t,e){var i=this;this.isLanguageChangingTo=t;const r=defer();this.emit("languageChanging",t);const a=u=>{this.language=u,this.languages=this.services.languageUtils.toResolveHierarchy(u),this.resolvedLanguage=void 0,this.setResolvedLanguage(u)},o=(u,d)=>{d?(a(d),this.translator.changeLanguage(d),this.isLanguageChangingTo=void 0,this.emit("languageChanged",d),this.logger.log("languageChanged",d)):this.isLanguageChangingTo=void 0,r.resolve(function(){return i.t(...arguments)}),e&&e(u,function(){return i.t(...arguments)})},l=u=>{!t&&!u&&this.services.languageDetector&&(u=[]);const d=typeof u=="string"?u:this.services.languageUtils.getBestMatchFromCodes(u);d&&(this.language||a(d),this.translator.language||this.translator.changeLanguage(d),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(d)),this.loadResources(d,m=>{o(m,d)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?l(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(l):this.services.languageDetector.detect(l):l(t),r}getFixedT(t,e,i){var r=this;const a=function(o,l){let u;if(typeof l!="object"){for(var d=arguments.length,m=new Array(d>2?d-2:0),p=2;p`${u.keyPrefix}${_}${w}`):y=u.keyPrefix?`${u.keyPrefix}${_}${o}`:o,r.t(y,u)};return typeof t=="string"?a.lng=t:a.lngs=t,a.ns=e,a.keyPrefix=i,a}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=e.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const o=(l,u)=>{const d=this.services.backendConnector.state[`${l}|${u}`];return d===-1||d===2};if(e.precheck){const l=e.precheck(this,o);if(l!==void 0)return l}return!!(this.hasResourceBundle(i,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(i,t)&&(!r||o(a,t)))}loadNamespaces(t,e){const i=defer();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),e&&e(r)}),i):(e&&e(),Promise.resolve())}loadLanguages(t,e){const i=defer();typeof t=="string"&&(t=[t]);const r=this.options.preload||[],a=t.filter(o=>r.indexOf(o)<0);return a.length?(this.options.preload=r.concat(a),this.loadResources(o=>{i.resolve(),e&&e(o)}),i):(e&&e(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const e=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=this.services&&this.services.languageUtils||new LanguageUtil(get());return e.indexOf(i.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;return new I18n(t,e)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:noop$1;const i=t.forkResourceStore;i&&delete t.forkResourceStore;const r={...this.options,...t,isClone:!0},a=new I18n(r);return(t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),["store","services","language"].forEach(l=>{a[l]=this[l]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},i&&(a.store=new ResourceStore(this.store.data,r),a.services.resourceStore=a.store),a.translator=new Translator(a.services,r),a.translator.on("*",function(l){for(var u=arguments.length,d=new Array(u>1?u-1:0),m=1;m1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};_classCallCheck$1(this,n),this.backends=[],this.type="backend",this.allOptions=i,this.init(t,e)}return _createClass$1(n,[{key:"init",value:function(e){var i=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=defaults$2(r,this.options||{},getDefaults$2()),this.allOptions=a,this.options.backends&&this.options.backends.forEach(function(o,l){i.backends[l]=i.backends[l]||createClassOnDemand(o),i.backends[l].init(e,i.options.backendOptions&&i.options.backendOptions[l]||{},a)}),this.services&&this.options.reloadInterval&&setInterval(function(){return i.reload()},this.options.reloadInterval)}},{key:"read",value:function(e,i,r){var a=this,o=this.backends.length,l=function d(m){if(m>=o)return r(new Error("non of the backend loaded data",!0));var p=m===o-1,_=a.options.handleEmptyResourcesAsFailed&&!p?0:-1,y=a.backends[m];y.read?handleCorrectReadFunction(y,e,i,function(w,v,E){if(!w&&v&&Object.keys(v).length>_){if(r(null,v,m),u(m-1,v),y.save&&a.options.cacheHitMode&&["refresh","refreshAndUpdateStore"].indexOf(a.options.cacheHitMode)>-1){if(E&&a.options.refreshExpirationTime&&E+a.options.refreshExpirationTime>Date.now())return;var x=a.backends[m+1];x&&x.read&&handleCorrectReadFunction(x,e,i,function(S,M){S||M&&(Object.keys(M).length<=_||(u(m,M),a.options.cacheHitMode==="refreshAndUpdateStore"&&a.services&&a.services.resourceStore&&a.services.resourceStore.addResourceBundle(e,i,M)))})}}else d(m+1)}):d(m+1)},u=function d(m,p){if(!(m<0)){var _=a.backends[m];_.save&&_.save(e,i,p),d(m-1,p)}};l(0)}},{key:"create",value:function(e,i,r,a){var o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:function(){},l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};this.backends.forEach(function(u){if(u.create){var d=u.create.bind(u);if(d.length<6){try{var m;d.length===5?m=d(e,i,r,a,l):m=d(e,i,r,a),m&&typeof m.then=="function"?m.then(function(p){return o(null,p)}).catch(o):o(null,m)}catch(p){o(p)}return}d(e,i,r,a,o,l)}})}},{key:"reload",value:function(){var e=this,i=this.services,r=i.backendConnector,a=i.languageUtils,o=i.logger,l=r.language;if(!(l&&l.toLowerCase()==="cimode")){var u=[],d=function(p){var _=a.toResolveHierarchy(p);_.forEach(function(y){u.indexOf(y)<0&&u.push(y)})};d(l),this.allOptions.preload&&this.allOptions.preload.forEach(function(m){return d(m)}),u.forEach(function(m){e.allOptions.ns.forEach(function(p){r.read(m,p,"read",null,null,function(_,y){_&&o.warn("loading namespace ".concat(p," for language ").concat(m," failed"),_),!_&&y&&o.log("loaded namespace ".concat(p," for language ").concat(m),y),r.loaded("".concat(m,"|").concat(p),_,y)})})})}}}]),n}();Backend$1.type="backend";function _typeof$2(n){"@babel/helpers - typeof";return _typeof$2=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$2(n)}var arr=[],each$1=arr.forEach,slice=arr.slice;function defaults$1(n){return each$1.call(slice.call(arguments,1),function(t){if(t)for(var e in t)n[e]===void 0&&(n[e]=t[e])}),n}function hasXMLHttpRequest(){return typeof XMLHttpRequest=="function"||(typeof XMLHttpRequest>"u"?"undefined":_typeof$2(XMLHttpRequest))==="object"}function isPromise(n){return!!n&&typeof n.then=="function"}function makePromise(n){return isPromise(n)?n:Promise.resolve(n)}function commonjsRequire(n){throw new Error('Could not dynamically require "'+n+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var getFetch$1={exports:{}},browserPonyfill={exports:{}},hasRequiredBrowserPonyfill;function requireBrowserPonyfill(){return hasRequiredBrowserPonyfill||(hasRequiredBrowserPonyfill=1,function(n,t){var e=typeof globalThis<"u"&&globalThis||typeof self<"u"&&self||typeof commonjsGlobal<"u"&&commonjsGlobal,i=function(){function a(){this.fetch=!1,this.DOMException=e.DOMException}return a.prototype=e,new a}();(function(a){(function(o){var l=typeof a<"u"&&a||typeof self<"u"&&self||typeof l<"u"&&l,u={searchParams:"URLSearchParams"in l,iterable:"Symbol"in l&&"iterator"in Symbol,blob:"FileReader"in l&&"Blob"in l&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in l,arrayBuffer:"ArrayBuffer"in l};function d($){return $&&DataView.prototype.isPrototypeOf($)}if(u.arrayBuffer)var m=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],p=ArrayBuffer.isView||function($){return $&&m.indexOf(Object.prototype.toString.call($))>-1};function _($){if(typeof $!="string"&&($=String($)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test($)||$==="")throw new TypeError('Invalid character in header field name: "'+$+'"');return $.toLowerCase()}function y($){return typeof $!="string"&&($=String($)),$}function w($){var N={next:function(){var V=$.shift();return{done:V===void 0,value:V}}};return u.iterable&&(N[Symbol.iterator]=function(){return N}),N}function v($){this.map={},$ instanceof v?$.forEach(function(N,V){this.append(V,N)},this):Array.isArray($)?$.forEach(function(N){this.append(N[0],N[1])},this):$&&Object.getOwnPropertyNames($).forEach(function(N){this.append(N,$[N])},this)}v.prototype.append=function($,N){$=_($),N=y(N);var V=this.map[$];this.map[$]=V?V+", "+N:N},v.prototype.delete=function($){delete this.map[_($)]},v.prototype.get=function($){return $=_($),this.has($)?this.map[$]:null},v.prototype.has=function($){return this.map.hasOwnProperty(_($))},v.prototype.set=function($,N){this.map[_($)]=y(N)},v.prototype.forEach=function($,N){for(var V in this.map)this.map.hasOwnProperty(V)&&$.call(N,this.map[V],V,this)},v.prototype.keys=function(){var $=[];return this.forEach(function(N,V){$.push(V)}),w($)},v.prototype.values=function(){var $=[];return this.forEach(function(N){$.push(N)}),w($)},v.prototype.entries=function(){var $=[];return this.forEach(function(N,V){$.push([V,N])}),w($)},u.iterable&&(v.prototype[Symbol.iterator]=v.prototype.entries);function E($){if($.bodyUsed)return Promise.reject(new TypeError("Already read"));$.bodyUsed=!0}function x($){return new Promise(function(N,V){$.onload=function(){N($.result)},$.onerror=function(){V($.error)}})}function S($){var N=new FileReader,V=x(N);return N.readAsArrayBuffer($),V}function M($){var N=new FileReader,V=x(N);return N.readAsText($),V}function k($){for(var N=new Uint8Array($),V=new Array(N.length),H=0;H-1?N:$}function W($,N){if(!(this instanceof W))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');N=N||{};var V=N.body;if($ instanceof W){if($.bodyUsed)throw new TypeError("Already read");this.url=$.url,this.credentials=$.credentials,N.headers||(this.headers=new v($.headers)),this.method=$.method,this.mode=$.mode,this.signal=$.signal,!V&&$._bodyInit!=null&&(V=$._bodyInit,$.bodyUsed=!0)}else this.url=String($);if(this.credentials=N.credentials||this.credentials||"same-origin",(N.headers||!this.headers)&&(this.headers=new v(N.headers)),this.method=R(N.method||this.method||"GET"),this.mode=N.mode||this.mode||null,this.signal=N.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&V)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(V),(this.method==="GET"||this.method==="HEAD")&&(N.cache==="no-store"||N.cache==="no-cache")){var H=/([?&])_=[^&]*/;if(H.test(this.url))this.url=this.url.replace(H,"$1_="+new Date().getTime());else{var X=/\?/;this.url+=(X.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}W.prototype.clone=function(){return new W(this,{body:this._bodyInit})};function K($){var N=new FormData;return $.trim().split("&").forEach(function(V){if(V){var H=V.split("="),X=H.shift().replace(/\+/g," "),B=H.join("=").replace(/\+/g," ");N.append(decodeURIComponent(X),decodeURIComponent(B))}}),N}function Y($){var N=new v,V=$.replace(/\r?\n[\t ]+/g," ");return V.split("\r").map(function(H){return H.indexOf(` + */const elementMap=new Map,Data={set(n,t,e){elementMap.has(n)||elementMap.set(n,new Map);const i=elementMap.get(n);if(!i.has(t)&&i.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`);return}i.set(t,e)},get(n,t){return elementMap.has(n)&&elementMap.get(n).get(t)||null},remove(n,t){if(!elementMap.has(n))return;const e=elementMap.get(n);e.delete(t),e.size===0&&elementMap.delete(n)}},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=n=>(n&&window.CSS&&window.CSS.escape&&(n=n.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),n),toType=n=>n==null?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=n=>{do n+=Math.floor(Math.random()*MAX_UID);while(document.getElementById(n));return n},getTransitionDurationFromElement=n=>{if(!n)return 0;let{transitionDuration:t,transitionDelay:e}=window.getComputedStyle(n);const i=Number.parseFloat(t),r=Number.parseFloat(e);return!i&&!r?0:(t=t.split(",")[0],e=e.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(e))*MILLISECONDS_MULTIPLIER)},triggerTransitionEnd=n=>{n.dispatchEvent(new Event(TRANSITION_END))},isElement=n=>!n||typeof n!="object"?!1:(typeof n.jquery<"u"&&(n=n[0]),typeof n.nodeType<"u"),getElement=n=>isElement(n)?n.jquery?n[0]:n:typeof n=="string"&&n.length>0?document.querySelector(parseSelector(n)):null,isVisible=n=>{if(!isElement(n)||n.getClientRects().length===0)return!1;const t=getComputedStyle(n).getPropertyValue("visibility")==="visible",e=n.closest("details:not([open])");if(!e)return t;if(e!==n){const i=n.closest("summary");if(i&&i.parentNode!==e||i===null)return!1}return t},isDisabled=n=>!n||n.nodeType!==Node.ELEMENT_NODE||n.classList.contains("disabled")?!0:typeof n.disabled<"u"?n.disabled:n.hasAttribute("disabled")&&n.getAttribute("disabled")!=="false",findShadowRoot=n=>{if(!document.documentElement.attachShadow)return null;if(typeof n.getRootNode=="function"){const t=n.getRootNode();return t instanceof ShadowRoot?t:null}return n instanceof ShadowRoot?n:n.parentNode?findShadowRoot(n.parentNode):null},noop$2=()=>{},reflow=n=>{n.offsetHeight},getjQuery=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,DOMContentLoadedCallbacks=[],onDOMContentLoaded=n=>{document.readyState==="loading"?(DOMContentLoadedCallbacks.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of DOMContentLoadedCallbacks)t()}),DOMContentLoadedCallbacks.push(n)):n()},isRTL=()=>document.documentElement.dir==="rtl",defineJQueryPlugin=n=>{onDOMContentLoaded(()=>{const t=getjQuery();if(t){const e=n.NAME,i=t.fn[e];t.fn[e]=n.jQueryInterface,t.fn[e].Constructor=n,t.fn[e].noConflict=()=>(t.fn[e]=i,n.jQueryInterface)}})},execute=(n,t=[],e=n)=>typeof n=="function"?n(...t):e,executeAfterTransition=(n,t,e=!0)=>{if(!e){execute(n);return}const i=5,r=getTransitionDurationFromElement(t)+i;let a=!1;const o=({target:l})=>{l===t&&(a=!0,t.removeEventListener(TRANSITION_END,o),execute(n))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{a||triggerTransitionEnd(t)},r)},getNextActiveElement=(n,t,e,i)=>{const r=n.length;let a=n.indexOf(t);return a===-1?!e&&i?n[r-1]:n[0]:(a+=e?1:-1,i&&(a=(a+r)%r),n[Math.max(0,Math.min(a,r-1))])},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function makeEventUid(n,t){return t&&`${t}::${uidEvent++}`||n.uidEvent||uidEvent++}function getElementEvents(n){const t=makeEventUid(n);return n.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(n,t){return function e(i){return hydrateObj(i,{delegateTarget:n}),e.oneOff&&EventHandler.off(n,i.type,t),t.apply(n,[i])}}function bootstrapDelegationHandler(n,t,e){return function i(r){const a=n.querySelectorAll(t);for(let{target:o}=r;o&&o!==this;o=o.parentNode)for(const l of a)if(l===o)return hydrateObj(r,{delegateTarget:o}),i.oneOff&&EventHandler.off(n,r.type,t,e),e.apply(o,[r])}}function findHandler(n,t,e=null){return Object.values(n).find(i=>i.callable===t&&i.delegationSelector===e)}function normalizeParameters(n,t,e){const i=typeof t=="string",r=i?e:t||e;let a=getTypeEvent(n);return nativeEvents.has(a)||(a=n),[i,r,a]}function addHandler(n,t,e,i,r){if(typeof t!="string"||!n)return;let[a,o,l]=normalizeParameters(t,e,i);t in customEvents&&(o=(w=>function(v){if(!v.relatedTarget||v.relatedTarget!==v.delegateTarget&&!v.delegateTarget.contains(v.relatedTarget))return w.call(this,v)})(o));const u=getElementEvents(n),d=u[l]||(u[l]={}),m=findHandler(d,o,a?e:null);if(m){m.oneOff=m.oneOff&&r;return}const p=makeEventUid(o,t.replace(namespaceRegex,"")),_=a?bootstrapDelegationHandler(n,e,o):bootstrapHandler(n,o);_.delegationSelector=a?e:null,_.callable=o,_.oneOff=r,_.uidEvent=p,d[p]=_,n.addEventListener(l,_,a)}function removeHandler(n,t,e,i,r){const a=findHandler(t[e],i,r);a&&(n.removeEventListener(e,a,!!r),delete t[e][a.uidEvent])}function removeNamespacedHandlers(n,t,e,i){const r=t[e]||{};for(const[a,o]of Object.entries(r))a.includes(i)&&removeHandler(n,t,e,o.callable,o.delegationSelector)}function getTypeEvent(n){return n=n.replace(stripNameRegex,""),customEvents[n]||n}const EventHandler={on(n,t,e,i){addHandler(n,t,e,i,!1)},one(n,t,e,i){addHandler(n,t,e,i,!0)},off(n,t,e,i){if(typeof t!="string"||!n)return;const[r,a,o]=normalizeParameters(t,e,i),l=o!==t,u=getElementEvents(n),d=u[o]||{},m=t.startsWith(".");if(typeof a<"u"){if(!Object.keys(d).length)return;removeHandler(n,u,o,a,r?e:null);return}if(m)for(const p of Object.keys(u))removeNamespacedHandlers(n,u,p,t.slice(1));for(const[p,_]of Object.entries(d)){const y=p.replace(stripUidRegex,"");(!l||t.includes(y))&&removeHandler(n,u,o,_.callable,_.delegationSelector)}},trigger(n,t,e){if(typeof t!="string"||!n)return null;const i=getjQuery(),r=getTypeEvent(t),a=t!==r;let o=null,l=!0,u=!0,d=!1;a&&i&&(o=i.Event(t,e),i(n).trigger(o),l=!o.isPropagationStopped(),u=!o.isImmediatePropagationStopped(),d=o.isDefaultPrevented());const m=hydrateObj(new Event(t,{bubbles:l,cancelable:!0}),e);return d&&m.preventDefault(),u&&n.dispatchEvent(m),m.defaultPrevented&&o&&o.preventDefault(),m}};function hydrateObj(n,t={}){for(const[e,i]of Object.entries(t))try{n[e]=i}catch{Object.defineProperty(n,e,{configurable:!0,get(){return i}})}return n}function normalizeData(n){if(n==="true")return!0;if(n==="false")return!1;if(n===Number(n).toString())return Number(n);if(n===""||n==="null")return null;if(typeof n!="string")return n;try{return JSON.parse(decodeURIComponent(n))}catch{return n}}function normalizeDataKey(n){return n.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const Manipulator={setDataAttribute(n,t,e){n.setAttribute(`data-bs-${normalizeDataKey(t)}`,e)},removeDataAttribute(n,t){n.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(n){if(!n)return{};const t={},e=Object.keys(n.dataset).filter(i=>i.startsWith("bs")&&!i.startsWith("bsConfig"));for(const i of e){let r=i.replace(/^bs/,"");r=r.charAt(0).toLowerCase()+r.slice(1,r.length),t[r]=normalizeData(n.dataset[i])}return t},getDataAttribute(n,t){return normalizeData(n.getAttribute(`data-bs-${normalizeDataKey(t)}`))}};let Config$1=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=isElement(e)?Manipulator.getDataAttribute(e,"config"):{};return{...this.constructor.Default,...typeof i=="object"?i:{},...isElement(e)?Manipulator.getDataAttributes(e):{},...typeof t=="object"?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,r]of Object.entries(e)){const a=t[i],o=isElement(a)?"element":toType(a);if(!new RegExp(r).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${o}" but expected type "${r}".`)}}};const VERSION="5.3.2";class BaseComponent extends Config$1{constructor(t,e){super(),t=getElement(t),t&&(this._element=t,this._config=this._getConfig(e),Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){executeAfterTransition(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Data.get(getElement(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,typeof e=="object"?e:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const getSelector=n=>{let t=n.getAttribute("data-bs-target");if(!t||t==="#"){let e=n.getAttribute("href");if(!e||!e.includes("#")&&!e.startsWith("."))return null;e.includes("#")&&!e.startsWith("#")&&(e=`#${e.split("#")[1]}`),t=e&&e!=="#"?parseSelector(e.trim()):null}return t},SelectorEngine={find(n,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,n))},findOne(n,t=document.documentElement){return Element.prototype.querySelector.call(t,n)},children(n,t){return[].concat(...n.children).filter(e=>e.matches(t))},parents(n,t){const e=[];let i=n.parentNode.closest(t);for(;i;)e.push(i),i=i.parentNode.closest(t);return e},prev(n,t){let e=n.previousElementSibling;for(;e;){if(e.matches(t))return[e];e=e.previousElementSibling}return[]},next(n,t){let e=n.nextElementSibling;for(;e;){if(e.matches(t))return[e];e=e.nextElementSibling}return[]},focusableChildren(n){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,n).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(n){const t=getSelector(n);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(n){const t=getSelector(n);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(n){const t=getSelector(n);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(n,t="hide")=>{const e=`click.dismiss${n.EVENT_KEY}`,i=n.NAME;EventHandler.on(document,e,`[data-bs-dismiss="${i}"]`,function(r){if(["A","AREA"].includes(this.tagName)&&r.preventDefault(),isDisabled(this))return;const a=SelectorEngine.getElementFromSelector(this)||this.closest(`.${i}`);n.getOrCreateInstance(a)[t]()})},NAME$f="alert",DATA_KEY$a="bs.alert",EVENT_KEY$b=`.${DATA_KEY$a}`,EVENT_CLOSE=`close${EVENT_KEY$b}`,EVENT_CLOSED=`closed${EVENT_KEY$b}`,CLASS_NAME_FADE$5="fade",CLASS_NAME_SHOW$8="show";class Alert extends BaseComponent{static get NAME(){return NAME$f}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove(CLASS_NAME_SHOW$8);const e=this._element.classList.contains(CLASS_NAME_FADE$5);this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}static jQueryInterface(t){return this.each(function(){const e=Alert.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}enableDismissTrigger(Alert,"close");defineJQueryPlugin(Alert);const NAME$e="button",DATA_KEY$9="bs.button",EVENT_KEY$a=`.${DATA_KEY$9}`,DATA_API_KEY$6=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$a}${DATA_API_KEY$6}`;class Button extends BaseComponent{static get NAME(){return NAME$e}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(CLASS_NAME_ACTIVE$3))}static jQueryInterface(t){return this.each(function(){const e=Button.getOrCreateInstance(this);t==="toggle"&&e[t]()})}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$5,n=>{n.preventDefault();const t=n.target.closest(SELECTOR_DATA_TOGGLE$5);Button.getOrCreateInstance(t).toggle()});defineJQueryPlugin(Button);const NAME$d="swipe",EVENT_KEY$9=".bs.swipe",EVENT_TOUCHSTART=`touchstart${EVENT_KEY$9}`,EVENT_TOUCHMOVE=`touchmove${EVENT_KEY$9}`,EVENT_TOUCHEND=`touchend${EVENT_KEY$9}`,EVENT_POINTERDOWN=`pointerdown${EVENT_KEY$9}`,EVENT_POINTERUP=`pointerup${EVENT_KEY$9}`,POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$c={endCallback:null,leftCallback:null,rightCallback:null},DefaultType$c={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Swipe extends Config$1{constructor(t,e){super(),this._element=t,!(!t||!Swipe.isSupported())&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}dispose(){EventHandler.off(this._element,EVENT_KEY$9)}_start(t){if(!this._supportPointerEvents){this._deltaX=t.touches[0].clientX;return}this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX)}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),execute(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=SWIPE_THRESHOLD)return;const e=t/this._deltaX;this._deltaX=0,e&&execute(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,t=>this._start(t)),EventHandler.on(this._element,EVENT_POINTERUP,t=>this._end(t)),this._element.classList.add(CLASS_NAME_POINTER_EVENT)):(EventHandler.on(this._element,EVENT_TOUCHSTART,t=>this._start(t)),EventHandler.on(this._element,EVENT_TOUCHMOVE,t=>this._move(t)),EventHandler.on(this._element,EVENT_TOUCHEND,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(t.pointerType===POINTER_TYPE_PEN||t.pointerType===POINTER_TYPE_TOUCH)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$c="carousel",DATA_KEY$8="bs.carousel",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$8}`,EVENT_SLID=`slid${EVENT_KEY$8}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$8}`,EVENT_MOUSEENTER$1=`mouseenter${EVENT_KEY$8}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$8}`,EVENT_DRAG_START=`dragstart${EVENT_KEY$8}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$8}${DATA_API_KEY$5}`,EVENT_CLICK_DATA_API$5=`click${EVENT_KEY$8}${DATA_API_KEY$5}`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",SELECTOR_ACTIVE=".active",SELECTOR_ITEM=".carousel-item",SELECTOR_ACTIVE_ITEM=SELECTOR_ACTIVE+SELECTOR_ITEM,SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$1]:DIRECTION_RIGHT,[ARROW_RIGHT_KEY$1]:DIRECTION_LEFT},Default$b={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},DefaultType$b={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Carousel extends BaseComponent{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._addEventListeners(),this._config.ride===CLASS_NAME_CAROUSEL&&this.cycle()}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}next(){this._slide(ORDER_NEXT)}nextWhenVisible(){!document.hidden&&isVisible(this._element)&&this.next()}prev(){this._slide(ORDER_PREV)}pause(){this._isSliding&&triggerTransitionEnd(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(this._config.ride){if(this._isSliding){EventHandler.one(this._element,EVENT_SLID,()=>this.cycle());return}this.cycle()}}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding){EventHandler.one(this._element,EVENT_SLID,()=>this.to(t));return}const i=this._getItemIndex(this._getActive());if(i===t)return;const r=t>i?ORDER_NEXT:ORDER_PREV;this._slide(r,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$1,t=>this._keydown(t)),this._config.pause==="hover"&&(EventHandler.on(this._element,EVENT_MOUSEENTER$1,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),this._config.touch&&Swipe.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const i of SelectorEngine.find(SELECTOR_ITEM_IMG,this._element))EventHandler.on(i,EVENT_DRAG_START,r=>r.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder(DIRECTION_LEFT)),rightCallback:()=>this._slide(this._directionToOrder(DIRECTION_RIGHT)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),TOUCHEVENT_COMPAT_WAIT+this._config.interval))}};this._swipeHelper=new Swipe(this._element,e)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=KEY_TO_DIRECTION[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=SelectorEngine.findOne(SELECTOR_ACTIVE,this._indicatorsElement);e.classList.remove(CLASS_NAME_ACTIVE$2),e.removeAttribute("aria-current");const i=SelectorEngine.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(CLASS_NAME_ACTIVE$2),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),r=t===ORDER_NEXT,a=e||getNextActiveElement(this._getItems(),i,r,this._config.wrap);if(a===i)return;const o=this._getItemIndex(a),l=y=>EventHandler.trigger(this._element,y,{relatedTarget:a,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(l(EVENT_SLIDE).defaultPrevented||!i||!a)return;const d=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=a;const m=r?CLASS_NAME_START:CLASS_NAME_END,p=r?CLASS_NAME_NEXT:CLASS_NAME_PREV;a.classList.add(p),reflow(a),i.classList.add(m),a.classList.add(m);const _=()=>{a.classList.remove(m,p),a.classList.add(CLASS_NAME_ACTIVE$2),i.classList.remove(CLASS_NAME_ACTIVE$2,p,m),this._isSliding=!1,l(EVENT_SLID)};this._queueCallback(_,i,this._isAnimated()),d&&this.cycle()}_isAnimated(){return this._element.classList.contains(CLASS_NAME_SLIDE)}_getActive(){return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element)}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return isRTL()?t===DIRECTION_LEFT?ORDER_PREV:ORDER_NEXT:t===DIRECTION_LEFT?ORDER_NEXT:ORDER_PREV}_orderToDirection(t){return isRTL()?t===ORDER_PREV?DIRECTION_LEFT:DIRECTION_RIGHT:t===ORDER_PREV?DIRECTION_RIGHT:DIRECTION_LEFT}static jQueryInterface(t){return this.each(function(){const e=Carousel.getOrCreateInstance(this,t);if(typeof t=="number"){e.to(t);return}if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_SLIDE,function(n){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains(CLASS_NAME_CAROUSEL))return;n.preventDefault();const e=Carousel.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");if(i){e.to(i),e._maybeEnableCycle();return}if(Manipulator.getDataAttribute(this,"slide")==="next"){e.next(),e._maybeEnableCycle();return}e.prev(),e._maybeEnableCycle()});EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const n=SelectorEngine.find(SELECTOR_DATA_RIDE);for(const t of n)Carousel.getOrCreateInstance(t)});defineJQueryPlugin(Carousel);const NAME$b="collapse",DATA_KEY$7="bs.collapse",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_SHOW$6=`show${EVENT_KEY$7}`,EVENT_SHOWN$6=`shown${EVENT_KEY$7}`,EVENT_HIDE$6=`hide${EVENT_KEY$7}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$7}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$7}${DATA_API_KEY$4}`,CLASS_NAME_SHOW$7="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=`:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`,CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="collapse"]',Default$a={parent:null,toggle:!0},DefaultType$a={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);for(const r of i){const a=SelectorEngine.getSelectorFromElement(r),o=SelectorEngine.find(a).filter(l=>l===this._element);a!==null&&o.length&&this._triggerArray.push(r)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(l=>l!==this._element).map(l=>Collapse.getOrCreateInstance(l,{toggle:!1}))),t.length&&t[0]._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$6).defaultPrevented)return;for(const l of t)l.hide();const i=this._getDimension();this._element.classList.remove(CLASS_NAME_COLLAPSE),this._element.classList.add(CLASS_NAME_COLLAPSING),this._element.style[i]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const r=()=>{this._isTransitioning=!1,this._element.classList.remove(CLASS_NAME_COLLAPSING),this._element.classList.add(CLASS_NAME_COLLAPSE,CLASS_NAME_SHOW$7),this._element.style[i]="",EventHandler.trigger(this._element,EVENT_SHOWN$6)},o=`scroll${i[0].toUpperCase()+i.slice(1)}`;this._queueCallback(r,this._element,!0),this._element.style[i]=`${this._element[o]}px`}hide(){if(this._isTransitioning||!this._isShown()||EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add(CLASS_NAME_COLLAPSING),this._element.classList.remove(CLASS_NAME_COLLAPSE,CLASS_NAME_SHOW$7);for(const r of this._triggerArray){const a=SelectorEngine.getElementFromSelector(r);a&&!this._isShown(a)&&this._addAriaAndCollapsedClass([r],!1)}this._isTransitioning=!0;const i=()=>{this._isTransitioning=!1,this._element.classList.remove(CLASS_NAME_COLLAPSING),this._element.classList.add(CLASS_NAME_COLLAPSE),EventHandler.trigger(this._element,EVENT_HIDDEN$6)};this._element.style[e]="",this._queueCallback(i,this._element,!0)}_isShown(t=this._element){return t.classList.contains(CLASS_NAME_SHOW$7)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=getElement(t.parent),t}_getDimension(){return this._element.classList.contains(CLASS_NAME_HORIZONTAL)?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);for(const e of t){const i=SelectorEngine.getElementFromSelector(e);i&&this._addAriaAndCollapsedClass([e],this._isShown(i))}}_getFirstLevelChildren(t){const e=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(t,this._config.parent).filter(i=>!e.includes(i))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle(CLASS_NAME_COLLAPSED,!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return typeof t=="string"&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const i=Collapse.getOrCreateInstance(this,e);if(typeof t=="string"){if(typeof i[t]>"u")throw new TypeError(`No method named "${t}"`);i[t]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$4,function(n){(n.target.tagName==="A"||n.delegateTarget&&n.delegateTarget.tagName==="A")&&n.preventDefault();for(const t of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(t,{toggle:!1}).toggle()});defineJQueryPlugin(Collapse);const NAME$a="dropdown",DATA_KEY$6="bs.dropdown",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",RIGHT_MOUSE_BUTTON=2,EVENT_HIDE$5=`hide${EVENT_KEY$6}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$6}`,EVENT_SHOW$5=`show${EVENT_KEY$6}`,EVENT_SHOWN$5=`shown${EVENT_KEY$6}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$6}${DATA_API_KEY$3}`,EVENT_KEYDOWN_DATA_API=`keydown${EVENT_KEY$6}${DATA_API_KEY$3}`,EVENT_KEYUP_DATA_API=`keyup${EVENT_KEY$6}${DATA_API_KEY$3}`,CLASS_NAME_SHOW$6="show",CLASS_NAME_DROPUP="dropup",CLASS_NAME_DROPEND="dropend",CLASS_NAME_DROPSTART="dropstart",CLASS_NAME_DROPUP_CENTER="dropup-center",CLASS_NAME_DROPDOWN_CENTER="dropdown-center",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',SELECTOR_DATA_TOGGLE_SHOWN=`${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`,SELECTOR_MENU=".dropdown-menu",SELECTOR_NAVBAR=".navbar",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",PLACEMENT_TOP=isRTL()?"top-end":"top-start",PLACEMENT_TOPEND=isRTL()?"top-start":"top-end",PLACEMENT_BOTTOM=isRTL()?"bottom-end":"bottom-start",PLACEMENT_BOTTOMEND=isRTL()?"bottom-start":"bottom-end",PLACEMENT_RIGHT=isRTL()?"left-start":"right-start",PLACEMENT_LEFT=isRTL()?"right-start":"left-start",PLACEMENT_TOPCENTER="top",PLACEMENT_BOTTOMCENTER="bottom",Default$9={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},DefaultType$9={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Dropdown extends BaseComponent{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=SelectorEngine.next(this._element,SELECTOR_MENU)[0]||SelectorEngine.prev(this._element,SELECTOR_MENU)[0]||SelectorEngine.findOne(SELECTOR_MENU,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$5,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(SELECTOR_NAVBAR_NAV))for(const i of[].concat(...document.body.children))EventHandler.on(i,"mouseover",noop$2);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(CLASS_NAME_SHOW$6),this._element.classList.add(CLASS_NAME_SHOW$6),EventHandler.trigger(this._element,EVENT_SHOWN$5,t)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const i of[].concat(...document.body.children))EventHandler.off(i,"mouseover",noop$2);this._popper&&this._popper.destroy(),this._menu.classList.remove(CLASS_NAME_SHOW$6),this._element.classList.remove(CLASS_NAME_SHOW$6),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"popper"),EventHandler.trigger(this._element,EVENT_HIDDEN$5,t)}}_getConfig(t){if(t=super._getConfig(t),typeof t.reference=="object"&&!isElement(t.reference)&&typeof t.reference.getBoundingClientRect!="function")throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(typeof Popper>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;this._config.reference==="parent"?t=this._parent:isElement(this._config.reference)?t=getElement(this._config.reference):typeof this._config.reference=="object"&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=createPopper(t,this._menu,e)}_isShown(){return this._menu.classList.contains(CLASS_NAME_SHOW$6)}_getPlacement(){const t=this._parent;if(t.classList.contains(CLASS_NAME_DROPEND))return PLACEMENT_RIGHT;if(t.classList.contains(CLASS_NAME_DROPSTART))return PLACEMENT_LEFT;if(t.classList.contains(CLASS_NAME_DROPUP_CENTER))return PLACEMENT_TOPCENTER;if(t.classList.contains(CLASS_NAME_DROPDOWN_CENTER))return PLACEMENT_BOTTOMCENTER;const e=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return t.classList.contains(CLASS_NAME_DROPUP)?e?PLACEMENT_TOPEND:PLACEMENT_TOP:e?PLACEMENT_BOTTOMEND:PLACEMENT_BOTTOM}_detectNavbar(){return this._element.closest(SELECTOR_NAVBAR)!==null}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(Manipulator.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...execute(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(r=>isVisible(r));i.length&&getNextActiveElement(i,e,t===ARROW_DOWN_KEY$1,!i.includes(e)).focus()}static jQueryInterface(t){return this.each(function(){const e=Dropdown.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}static clearMenus(t){if(t.button===RIGHT_MOUSE_BUTTON||t.type==="keyup"&&t.key!==TAB_KEY$1)return;const e=SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);for(const i of e){const r=Dropdown.getInstance(i);if(!r||r._config.autoClose===!1)continue;const a=t.composedPath(),o=a.includes(r._menu);if(a.includes(r._element)||r._config.autoClose==="inside"&&!o||r._config.autoClose==="outside"&&o||r._menu.contains(t.target)&&(t.type==="keyup"&&t.key===TAB_KEY$1||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const l={relatedTarget:r._element};t.type==="click"&&(l.clickEvent=t),r._completeHide(l)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i=t.key===ESCAPE_KEY$2,r=[ARROW_UP_KEY$1,ARROW_DOWN_KEY$1].includes(t.key);if(!r&&!i||e&&!i)return;t.preventDefault();const a=this.matches(SELECTOR_DATA_TOGGLE$3)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$3)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$3)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3,t.delegateTarget.parentNode),o=Dropdown.getOrCreateInstance(a);if(r){t.stopPropagation(),o.show(),o._selectMenuItem(t);return}o._isShown()&&(t.stopPropagation(),o.hide(),a.focus())}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$3,Dropdown.dataApiKeydownHandler);EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_MENU,Dropdown.dataApiKeydownHandler);EventHandler.on(document,EVENT_CLICK_DATA_API$3,Dropdown.clearMenus);EventHandler.on(document,EVENT_KEYUP_DATA_API,Dropdown.clearMenus);EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$3,function(n){n.preventDefault(),Dropdown.getOrCreateInstance(this).toggle()});defineJQueryPlugin(Dropdown);const NAME$9="backdrop",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$5="show",EVENT_MOUSEDOWN=`mousedown.bs.${NAME$9}`,Default$8={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},DefaultType$8={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Backdrop extends Config$1{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}show(t){if(!this._config.isVisible){execute(t);return}this._append();const e=this._getElement();this._config.isAnimated&&reflow(e),e.classList.add(CLASS_NAME_SHOW$5),this._emulateAnimation(()=>{execute(t)})}hide(t){if(!this._config.isVisible){execute(t);return}this._getElement().classList.remove(CLASS_NAME_SHOW$5),this._emulateAnimation(()=>{this.dispose(),execute(t)})}dispose(){this._isAppended&&(EventHandler.off(this._element,EVENT_MOUSEDOWN),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add(CLASS_NAME_FADE$4),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=getElement(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),EventHandler.on(t,EVENT_MOUSEDOWN,()=>{execute(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){executeAfterTransition(t,this._getElement(),this._config.isAnimated)}}const NAME$8="focustrap",DATA_KEY$5="bs.focustrap",EVENT_KEY$5=`.${DATA_KEY$5}`,EVENT_FOCUSIN$2=`focusin${EVENT_KEY$5}`,EVENT_KEYDOWN_TAB=`keydown.tab${EVENT_KEY$5}`,TAB_KEY="Tab",TAB_NAV_FORWARD="forward",TAB_NAV_BACKWARD="backward",Default$7={autofocus:!0,trapElement:null},DefaultType$7={autofocus:"boolean",trapElement:"element"};class FocusTrap extends Config$1{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),EventHandler.off(document,EVENT_KEY$5),EventHandler.on(document,EVENT_FOCUSIN$2,t=>this._handleFocusin(t)),EventHandler.on(document,EVENT_KEYDOWN_TAB,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,EventHandler.off(document,EVENT_KEY$5))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=SelectorEngine.focusableChildren(e);i.length===0?e.focus():this._lastTabNavDirection===TAB_NAV_BACKWARD?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){t.key===TAB_KEY&&(this._lastTabNavDirection=t.shiftKey?TAB_NAV_BACKWARD:TAB_NAV_FORWARD)}}const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",SELECTOR_STICKY_CONTENT=".sticky-top",PROPERTY_PADDING="padding-right",PROPERTY_MARGIN="margin-right";class ScrollBarHelper{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,PROPERTY_PADDING,e=>e+t),this._setElementAttributes(SELECTOR_FIXED_CONTENT,PROPERTY_PADDING,e=>e+t),this._setElementAttributes(SELECTOR_STICKY_CONTENT,PROPERTY_MARGIN,e=>e-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,PROPERTY_PADDING),this._resetElementAttributes(SELECTOR_FIXED_CONTENT,PROPERTY_PADDING),this._resetElementAttributes(SELECTOR_STICKY_CONTENT,PROPERTY_MARGIN)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const r=this.getWidth(),a=o=>{if(o!==this._element&&window.innerWidth>o.clientWidth+r)return;this._saveInitialAttribute(o,e);const l=window.getComputedStyle(o).getPropertyValue(e);o.style.setProperty(e,`${i(Number.parseFloat(l))}px`)};this._applyManipulationCallback(t,a)}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&Manipulator.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){const i=r=>{const a=Manipulator.getDataAttribute(r,e);if(a===null){r.style.removeProperty(e);return}Manipulator.removeDataAttribute(r,e),r.style.setProperty(e,a)};this._applyManipulationCallback(t,i)}_applyManipulationCallback(t,e){if(isElement(t)){e(t);return}for(const i of SelectorEngine.find(t,this._element))e(i)}}const NAME$7="modal",DATA_KEY$4="bs.modal",EVENT_KEY$4=`.${DATA_KEY$4}`,DATA_API_KEY$2=".data-api",ESCAPE_KEY$1="Escape",EVENT_HIDE$4=`hide${EVENT_KEY$4}`,EVENT_HIDE_PREVENTED$1=`hidePrevented${EVENT_KEY$4}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$4}`,EVENT_SHOW$4=`show${EVENT_KEY$4}`,EVENT_SHOWN$4=`shown${EVENT_KEY$4}`,EVENT_RESIZE$1=`resize${EVENT_KEY$4}`,EVENT_CLICK_DISMISS=`click.dismiss${EVENT_KEY$4}`,EVENT_MOUSEDOWN_DISMISS=`mousedown.dismiss${EVENT_KEY$4}`,EVENT_KEYDOWN_DISMISS$1=`keydown.dismiss${EVENT_KEY$4}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$4}${DATA_API_KEY$2}`,CLASS_NAME_OPEN="modal-open",CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$4="show",CLASS_NAME_STATIC="modal-static",OPEN_SELECTOR$1=".modal.show",SELECTOR_DIALOG=".modal-dialog",SELECTOR_MODAL_BODY=".modal-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="modal"]',Default$6={backdrop:!0,focus:!0,keyboard:!0},DefaultType$6={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Modal extends BaseComponent{constructor(t,e){super(t,e),this._dialog=SelectorEngine.findOne(SELECTOR_DIALOG,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new ScrollBarHelper,this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$4,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(CLASS_NAME_OPEN),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||EventHandler.trigger(this._element,EVENT_HIDE$4).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(CLASS_NAME_SHOW$4),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){EventHandler.off(window,EVENT_KEY$4),EventHandler.off(this._dialog,EVENT_KEY$4),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Backdrop({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=SelectorEngine.findOne(SELECTOR_MODAL_BODY,this._dialog);e&&(e.scrollTop=0),reflow(this._element),this._element.classList.add(CLASS_NAME_SHOW$4);const i=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$4,{relatedTarget:t})};this._queueCallback(i,this._dialog,this._isAnimated())}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS$1,t=>{if(t.key===ESCAPE_KEY$1){if(this._config.keyboard){this.hide();return}this._triggerBackdropTransition()}}),EventHandler.on(window,EVENT_RESIZE$1,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),EventHandler.on(this._element,EVENT_MOUSEDOWN_DISMISS,t=>{EventHandler.one(this._element,EVENT_CLICK_DISMISS,e=>{if(!(this._element!==t.target||this._element!==e.target)){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(CLASS_NAME_OPEN),this._resetAdjustments(),this._scrollBar.reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$4)})}_isAnimated(){return this._element.classList.contains(CLASS_NAME_FADE$3)}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED$1).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,i=this._element.style.overflowY;i==="hidden"||this._element.classList.contains(CLASS_NAME_STATIC)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add(CLASS_NAME_STATIC),this._queueCallback(()=>{this._element.classList.remove(CLASS_NAME_STATIC),this._queueCallback(()=>{this._element.style.overflowY=i},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const r=isRTL()?"paddingLeft":"paddingRight";this._element.style[r]=`${e}px`}if(!i&&t){const r=isRTL()?"paddingRight":"paddingLeft";this._element.style[r]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each(function(){const i=Modal.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof i[t]>"u")throw new TypeError(`No method named "${t}"`);i[t](e)}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$2,function(n){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&n.preventDefault(),EventHandler.one(t,EVENT_SHOW$4,r=>{r.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,()=>{isVisible(this)&&this.focus()})});const e=SelectorEngine.findOne(OPEN_SELECTOR$1);e&&Modal.getInstance(e).hide(),Modal.getOrCreateInstance(t).toggle(this)});enableDismissTrigger(Modal);defineJQueryPlugin(Modal);const NAME$6="offcanvas",DATA_KEY$3="bs.offcanvas",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY$1=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$3}${DATA_API_KEY$1}`,ESCAPE_KEY="Escape",CLASS_NAME_SHOW$3="show",CLASS_NAME_SHOWING$1="showing",CLASS_NAME_HIDING="hiding",CLASS_NAME_BACKDROP="offcanvas-backdrop",OPEN_SELECTOR=".offcanvas.show",EVENT_SHOW$3=`show${EVENT_KEY$3}`,EVENT_SHOWN$3=`shown${EVENT_KEY$3}`,EVENT_HIDE$3=`hide${EVENT_KEY$3}`,EVENT_HIDE_PREVENTED=`hidePrevented${EVENT_KEY$3}`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$3}`,EVENT_RESIZE=`resize${EVENT_KEY$3}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$3}${DATA_API_KEY$1}`,EVENT_KEYDOWN_DISMISS=`keydown.dismiss${EVENT_KEY$3}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="offcanvas"]',Default$5={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$5={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Offcanvas extends BaseComponent{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new ScrollBarHelper().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(CLASS_NAME_SHOWING$1);const i=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(CLASS_NAME_SHOW$3),this._element.classList.remove(CLASS_NAME_SHOWING$1),EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:t})};this._queueCallback(i,this._element,!0)}hide(){if(!this._isShown||EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(CLASS_NAME_HIDING),this._backdrop.hide();const e=()=>{this._element.classList.remove(CLASS_NAME_SHOW$3,CLASS_NAME_HIDING),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new ScrollBarHelper().reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)};this._queueCallback(e,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=()=>{if(this._config.backdrop==="static"){EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED);return}this.hide()},e=!!this._config.backdrop;return new Backdrop({className:CLASS_NAME_BACKDROP,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?t:null})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,t=>{if(t.key===ESCAPE_KEY){if(this._config.keyboard){this.hide();return}EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED)}})}static jQueryInterface(t){return this.each(function(){const e=Offcanvas.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$1,function(n){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus()});const e=SelectorEngine.findOne(OPEN_SELECTOR);e&&e!==t&&Offcanvas.getInstance(e).hide(),Offcanvas.getOrCreateInstance(t).toggle(this)});EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const n of SelectorEngine.find(OPEN_SELECTOR))Offcanvas.getOrCreateInstance(n).show()});EventHandler.on(window,EVENT_RESIZE,()=>{for(const n of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(n).position!=="fixed"&&Offcanvas.getOrCreateInstance(n).hide()});enableDismissTrigger(Offcanvas);defineJQueryPlugin(Offcanvas);const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,allowedAttribute=(n,t)=>{const e=n.nodeName.toLowerCase();return t.includes(e)?uriAttributes.has(e)?!!SAFE_URL_PATTERN.test(n.nodeValue):!0:t.filter(i=>i instanceof RegExp).some(i=>i.test(e))};function sanitizeHtml(n,t,e){if(!n.length)return n;if(e&&typeof e=="function")return e(n);const r=new window.DOMParser().parseFromString(n,"text/html"),a=[].concat(...r.body.querySelectorAll("*"));for(const o of a){const l=o.nodeName.toLowerCase();if(!Object.keys(t).includes(l)){o.remove();continue}const u=[].concat(...o.attributes),d=[].concat(t["*"]||[],t[l]||[]);for(const m of u)allowedAttribute(m,d)||o.removeAttribute(m.nodeName)}return r.body.innerHTML}const NAME$5="TemplateFactory",Default$4={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},DefaultType$4={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config$1{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[r,a]of Object.entries(this._config.content))this._setContent(t,a,r);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},DefaultContentType)}_setContent(t,e,i){const r=SelectorEngine.findOne(i,t);if(r){if(e=this._resolvePossibleFunction(e),!e){r.remove();return}if(isElement(e)){this._putElementInTemplate(getElement(e),r);return}if(this._config.html){r.innerHTML=this._maybeSanitize(e);return}r.textContent=e}}_maybeSanitize(t){return this._config.sanitize?sanitizeHtml(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return execute(t,[this])}_putElementInTemplate(t,e){if(this._config.html){e.innerHTML="",e.append(t);return}e.textContent=t.textContent}}const NAME$4="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=`.${CLASS_NAME_MODAL}`,EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$1="click",EVENT_FOCUSIN$1="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER="mouseenter",EVENT_MOUSELEAVE="mouseleave",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$3={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},DefaultType$3={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};let Tooltip$1=class Di extends BaseComponent{constructor(t,e){if(typeof Popper>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),EventHandler.off(this._element.closest(SELECTOR_MODAL),EVENT_MODAL_HIDE,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const t=EventHandler.trigger(this._element,this.constructor.eventName(EVENT_SHOW$2)),i=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!i)return;this._disposePopper();const r=this._getTipElement();this._element.setAttribute("aria-describedby",r.getAttribute("id"));const{container:a}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(r),EventHandler.trigger(this._element,this.constructor.eventName(EVENT_INSERTED))),this._popper=this._createPopper(r),r.classList.add(CLASS_NAME_SHOW$2),"ontouchstart"in document.documentElement)for(const l of[].concat(...document.body.children))EventHandler.on(l,"mouseover",noop$2);const o=()=>{EventHandler.trigger(this._element,this.constructor.eventName(EVENT_SHOWN$2)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(o,this.tip,this._isAnimated())}hide(){if(!this._isShown()||EventHandler.trigger(this._element,this.constructor.eventName(EVENT_HIDE$2)).defaultPrevented)return;if(this._getTipElement().classList.remove(CLASS_NAME_SHOW$2),"ontouchstart"in document.documentElement)for(const r of[].concat(...document.body.children))EventHandler.off(r,"mouseover",noop$2);this._activeTrigger[TRIGGER_CLICK]=!1,this._activeTrigger[TRIGGER_FOCUS]=!1,this._activeTrigger[TRIGGER_HOVER]=!1,this._isHovered=null;const i=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName(EVENT_HIDDEN$2)))};this._queueCallback(i,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(CLASS_NAME_FADE$2,CLASS_NAME_SHOW$2),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=getUID(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(CLASS_NAME_FADE$2),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new TemplateFactory({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(CLASS_NAME_FADE$2)}_isShown(){return this.tip&&this.tip.classList.contains(CLASS_NAME_SHOW$2)}_createPopper(t){const e=execute(this._config.placement,[this,t,this._element]),i=AttachmentMap[e.toUpperCase()];return createPopper(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return typeof t=="string"?t.split(",").map(e=>Number.parseInt(e,10)):typeof t=="function"?e=>t(e,this._element):t}_resolvePossibleFunction(t){return execute(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:i=>{this._getTipElement().setAttribute("data-popper-placement",i.state.placement)}}]};return{...e,...execute(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if(e==="click")EventHandler.on(this._element,this.constructor.eventName(EVENT_CLICK$1),this._config.selector,i=>{this._initializeOnDelegatedTarget(i).toggle()});else if(e!==TRIGGER_MANUAL){const i=e===TRIGGER_HOVER?this.constructor.eventName(EVENT_MOUSEENTER):this.constructor.eventName(EVENT_FOCUSIN$1),r=e===TRIGGER_HOVER?this.constructor.eventName(EVENT_MOUSELEAVE):this.constructor.eventName(EVENT_FOCUSOUT$1);EventHandler.on(this._element,i,this._config.selector,a=>{const o=this._initializeOnDelegatedTarget(a);o._activeTrigger[a.type==="focusin"?TRIGGER_FOCUS:TRIGGER_HOVER]=!0,o._enter()}),EventHandler.on(this._element,r,this._config.selector,a=>{const o=this._initializeOnDelegatedTarget(a);o._activeTrigger[a.type==="focusout"?TRIGGER_FOCUS:TRIGGER_HOVER]=o._element.contains(a.relatedTarget),o._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(SELECTOR_MODAL),EVENT_MODAL_HIDE,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=Manipulator.getDataAttributes(this._element);for(const i of Object.keys(e))DISALLOWED_ATTRIBUTES.has(i)&&delete e[i];return t={...e,...typeof t=="object"&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:getElement(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const e=Di.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}};defineJQueryPlugin(Tooltip$1);const NAME$3="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",Default$2={...Tooltip$1.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},DefaultType$2={...Tooltip$1.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip$1{static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const e=Popover.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t]()}})}}defineJQueryPlugin(Popover);const NAME$2="scrollspy",DATA_KEY$2="bs.scrollspy",EVENT_KEY$2=`.${DATA_KEY$2}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$2}`,EVENT_CLICK=`click${EVENT_KEY$2}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$2}${DATA_API_KEY}`,CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=`${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`,SELECTOR_DROPDOWN=".dropdown",SELECTOR_DROPDOWN_TOGGLE$1=".dropdown-toggle",Default$1={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},DefaultType$1={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ScrollSpy extends BaseComponent{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$2}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=getElement(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,typeof t.threshold=="string"&&(t.threshold=t.threshold.split(",").map(e=>Number.parseFloat(e))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK),EventHandler.on(this._config.target,EVENT_CLICK,SELECTOR_TARGET_LINKS,t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,r=e.offsetTop-this._element.offsetTop;if(i.scrollTo){i.scrollTo({top:r,behavior:"smooth"});return}i.scrollTop=r}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),t)}_observerCallback(t){const e=o=>this._targetLinks.get(`#${o.target.id}`),i=o=>{this._previousScrollData.visibleEntryTop=o.target.offsetTop,this._process(e(o))},r=(this._rootElement||document.documentElement).scrollTop,a=r>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=r;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const l=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(a&&l){if(i(o),!r)return;continue}!a&&!l&&i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=SelectorEngine.find(SELECTOR_TARGET_LINKS,this._config.target);for(const e of t){if(!e.hash||isDisabled(e))continue;const i=SelectorEngine.findOne(decodeURI(e.hash),this._element);isVisible(i)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,i))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(CLASS_NAME_ACTIVE$1),this._activateParents(t),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(CLASS_NAME_DROPDOWN_ITEM)){SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1,t.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);return}for(const e of SelectorEngine.parents(t,SELECTOR_NAV_LIST_GROUP))for(const i of SelectorEngine.prev(e,SELECTOR_LINK_ITEMS))i.classList.add(CLASS_NAME_ACTIVE$1)}_clearActiveClass(t){t.classList.remove(CLASS_NAME_ACTIVE$1);const e=SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`,t);for(const i of e)i.classList.remove(CLASS_NAME_ACTIVE$1)}static jQueryInterface(t){return this.each(function(){const e=ScrollSpy.getOrCreateInstance(this,t);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const n of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(n)});defineJQueryPlugin(ScrollSpy);const NAME$1="tab",DATA_KEY$1="bs.tab",EVENT_KEY$1=`.${DATA_KEY$1}`,EVENT_HIDE$1=`hide${EVENT_KEY$1}`,EVENT_HIDDEN$1=`hidden${EVENT_KEY$1}`,EVENT_SHOW$1=`show${EVENT_KEY$1}`,EVENT_SHOWN$1=`shown${EVENT_KEY$1}`,EVENT_CLICK_DATA_API=`click${EVENT_KEY$1}`,EVENT_KEYDOWN=`keydown${EVENT_KEY$1}`,EVENT_LOAD_DATA_API=`load${EVENT_KEY$1}`,ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",CLASS_DROPDOWN="dropdown",SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",SELECTOR_DROPDOWN_MENU=".dropdown-menu",NOT_SELECTOR_DROPDOWN_TOGGLE=`:not(${SELECTOR_DROPDOWN_TOGGLE})`,SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER=`.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`,SELECTOR_DATA_TOGGLE='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`,SELECTOR_DATA_TOGGLE_ACTIVE=`.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;class Tab extends BaseComponent{constructor(t){super(t),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return NAME$1}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?EventHandler.trigger(e,EVENT_HIDE$1,{relatedTarget:t}):null;EventHandler.trigger(t,EVENT_SHOW$1,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){if(!t)return;t.classList.add(CLASS_NAME_ACTIVE),this._activate(SelectorEngine.getElementFromSelector(t));const i=()=>{if(t.getAttribute("role")!=="tab"){t.classList.add(CLASS_NAME_SHOW$1);return}t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),EventHandler.trigger(t,EVENT_SHOWN$1,{relatedTarget:e})};this._queueCallback(i,t,t.classList.contains(CLASS_NAME_FADE$1))}_deactivate(t,e){if(!t)return;t.classList.remove(CLASS_NAME_ACTIVE),t.blur(),this._deactivate(SelectorEngine.getElementFromSelector(t));const i=()=>{if(t.getAttribute("role")!=="tab"){t.classList.remove(CLASS_NAME_SHOW$1);return}t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),EventHandler.trigger(t,EVENT_HIDDEN$1,{relatedTarget:e})};this._queueCallback(i,t,t.classList.contains(CLASS_NAME_FADE$1))}_keydown(t){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter(r=>!isDisabled(r));let i;if([HOME_KEY,END_KEY].includes(t.key))i=e[t.key===HOME_KEY?0:e.length-1];else{const r=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(t.key);i=getNextActiveElement(e,t.target,r,!0)}i&&(i.focus({preventScroll:!0}),Tab.getOrCreateInstance(i).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const i of e)this._setInitialAttributesOnChild(i)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=SelectorEngine.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains(CLASS_DROPDOWN))return;const r=(a,o)=>{const l=SelectorEngine.findOne(a,i);l&&l.classList.toggle(o,e)};r(SELECTOR_DROPDOWN_TOGGLE,CLASS_NAME_ACTIVE),r(SELECTOR_DROPDOWN_MENU,CLASS_NAME_SHOW$1),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(CLASS_NAME_ACTIVE)}_getInnerElement(t){return t.matches(SELECTOR_INNER_ELEM)?t:SelectorEngine.findOne(SELECTOR_INNER_ELEM,t)}_getOuterElement(t){return t.closest(SELECTOR_OUTER)||t}static jQueryInterface(t){return this.each(function(){const e=Tab.getOrCreateInstance(this);if(typeof t=="string"){if(e[t]===void 0||t.startsWith("_")||t==="constructor")throw new TypeError(`No method named "${t}"`);e[t]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API,SELECTOR_DATA_TOGGLE,function(n){["A","AREA"].includes(this.tagName)&&n.preventDefault(),!isDisabled(this)&&Tab.getOrCreateInstance(this).show()});EventHandler.on(window,EVENT_LOAD_DATA_API,()=>{for(const n of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(n)});defineJQueryPlugin(Tab);const NAME="toast",DATA_KEY="bs.toast",EVENT_KEY=`.${DATA_KEY}`,EVENT_MOUSEOVER=`mouseover${EVENT_KEY}`,EVENT_MOUSEOUT=`mouseout${EVENT_KEY}`,EVENT_FOCUSIN=`focusin${EVENT_KEY}`,EVENT_FOCUSOUT=`focusout${EVENT_KEY}`,EVENT_HIDE=`hide${EVENT_KEY}`,EVENT_HIDDEN=`hidden${EVENT_KEY}`,EVENT_SHOW=`show${EVENT_KEY}`,EVENT_SHOWN=`shown${EVENT_KEY}`,CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType={animation:"boolean",autohide:"boolean",delay:"number"},Default={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}show(){if(EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(CLASS_NAME_FADE);const e=()=>{this._element.classList.remove(CLASS_NAME_SHOWING),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()};this._element.classList.remove(CLASS_NAME_HIDE),reflow(this._element),this._element.classList.add(CLASS_NAME_SHOW,CLASS_NAME_SHOWING),this._queueCallback(e,this._element,this._config.animation)}hide(){if(!this.isShown()||EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented)return;const e=()=>{this._element.classList.add(CLASS_NAME_HIDE),this._element.classList.remove(CLASS_NAME_SHOWING,CLASS_NAME_SHOW),EventHandler.trigger(this._element,EVENT_HIDDEN)};this._element.classList.add(CLASS_NAME_SHOWING),this._queueCallback(e,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(CLASS_NAME_SHOW),super.dispose()}isShown(){return this._element.classList.contains(CLASS_NAME_SHOW)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":{this._hasMouseInteraction=e;break}case"focusin":case"focusout":{this._hasKeyboardInteraction=e;break}}if(e){this._clearTimeout();return}const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,t=>this._onInteraction(t,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,t=>this._onInteraction(t,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,t=>this._onInteraction(t,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const e=Toast.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof e[t]>"u")throw new TypeError(`No method named "${t}"`);e[t](this)}})}}enableDismissTrigger(Toast);defineJQueryPlugin(Toast);function toDate(n){const t=Object.prototype.toString.call(n);return n instanceof Date||typeof n=="object"&&t==="[object Date]"?new n.constructor(+n):typeof n=="number"||t==="[object Number]"||typeof n=="string"||t==="[object String]"?new Date(n):new Date(NaN)}function constructFrom(n,t){return n instanceof Date?new n.constructor(t):new Date(t)}function addDays(n,t){const e=toDate(n);return isNaN(t)?constructFrom(n,NaN):(t&&e.setDate(e.getDate()+t),e)}function addMonths(n,t){const e=toDate(n);if(isNaN(t))return constructFrom(n,NaN);if(!t)return e;const i=e.getDate(),r=constructFrom(n,e.getTime());r.setMonth(e.getMonth()+t+1,0);const a=r.getDate();return i>=a?r:(e.setFullYear(r.getFullYear(),r.getMonth(),i),e)}function addMilliseconds(n,t){const e=+toDate(n);return constructFrom(n,e+t)}const millisecondsInWeek=6048e5,millisecondsInDay=864e5,millisecondsInMinute=6e4,millisecondsInHour=36e5,millisecondsInSecond=1e3;function addHours(n,t){return addMilliseconds(n,t*millisecondsInHour)}let defaultOptions={};function getDefaultOptions$1(){return defaultOptions}function startOfWeek(n,t){var l,u,d,m;const e=getDefaultOptions$1(),i=(t==null?void 0:t.weekStartsOn)??((u=(l=t==null?void 0:t.locale)==null?void 0:l.options)==null?void 0:u.weekStartsOn)??e.weekStartsOn??((m=(d=e.locale)==null?void 0:d.options)==null?void 0:m.weekStartsOn)??0,r=toDate(n),a=r.getDay(),o=(a=r.getTime()?e+1:t.getTime()>=o.getTime()?e:e-1}function startOfDay(n){const t=toDate(n);return t.setHours(0,0,0,0),t}function getTimezoneOffsetInMilliseconds(n){const t=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return t.setUTCFullYear(n.getFullYear()),n.getTime()-t.getTime()}function differenceInCalendarDays(n,t){const e=startOfDay(n),i=startOfDay(t),r=e.getTime()-getTimezoneOffsetInMilliseconds(e),a=i.getTime()-getTimezoneOffsetInMilliseconds(i);return Math.round((r-a)/millisecondsInDay)}function startOfISOWeekYear(n){const t=getISOWeekYear(n),e=constructFrom(n,0);return e.setFullYear(t,0,4),e.setHours(0,0,0,0),startOfISOWeek(e)}function addMinutes(n,t){return addMilliseconds(n,t*millisecondsInMinute)}function addQuarters(n,t){const e=t*3;return addMonths(n,e)}function addSeconds(n,t){return addMilliseconds(n,t*1e3)}function addWeeks(n,t){const e=t*7;return addDays(n,e)}function addYears(n,t){return addMonths(n,t*12)}function compareAsc(n,t){const e=toDate(n),i=toDate(t),r=e.getTime()-i.getTime();return r<0?-1:r>0?1:r}function isDate(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}function isValid(n){if(!isDate(n)&&typeof n!="number")return!1;const t=toDate(n);return!isNaN(Number(t))}function differenceInCalendarMonths(n,t){const e=toDate(n),i=toDate(t),r=e.getFullYear()-i.getFullYear(),a=e.getMonth()-i.getMonth();return r*12+a}function differenceInCalendarYears(n,t){const e=toDate(n),i=toDate(t);return e.getFullYear()-i.getFullYear()}function differenceInDays(n,t){const e=toDate(n),i=toDate(t),r=compareLocalAsc(e,i),a=Math.abs(differenceInCalendarDays(e,i));e.setDate(e.getDate()-r*a);const o=+(compareLocalAsc(e,i)===-r),l=r*(a-o);return l===0?0:l}function compareLocalAsc(n,t){const e=n.getFullYear()-t.getFullYear()||n.getMonth()-t.getMonth()||n.getDate()-t.getDate()||n.getHours()-t.getHours()||n.getMinutes()-t.getMinutes()||n.getSeconds()-t.getSeconds()||n.getMilliseconds()-t.getMilliseconds();return e<0?-1:e>0?1:e}function getRoundingMethod(n){return n?Math[n]:Math.trunc}function differenceInMilliseconds(n,t){return toDate(n).getTime()-toDate(t).getTime()}function differenceInHours(n,t,e){const i=differenceInMilliseconds(n,t)/millisecondsInHour;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function differenceInMinutes(n,t,e){const i=differenceInMilliseconds(n,t)/millisecondsInMinute;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function endOfDay(n){const t=toDate(n);return t.setHours(23,59,59,999),t}function endOfMonth(n){const t=toDate(n),e=t.getMonth();return t.setFullYear(t.getFullYear(),e+1,0),t.setHours(23,59,59,999),t}function isLastDayOfMonth(n){const t=toDate(n);return+endOfDay(t)==+endOfMonth(t)}function differenceInMonths(n,t){const e=toDate(n),i=toDate(t),r=compareAsc(e,i),a=Math.abs(differenceInCalendarMonths(e,i));let o;if(a<1)o=0;else{e.getMonth()===1&&e.getDate()>27&&e.setDate(30),e.setMonth(e.getMonth()-r*a);let l=compareAsc(e,i)===-r;isLastDayOfMonth(toDate(n))&&a===1&&compareAsc(n,i)===1&&(l=!1),o=r*(a-Number(l))}return o===0?0:o}function differenceInQuarters(n,t,e){const i=differenceInMonths(n,t)/3;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function differenceInSeconds(n,t,e){const i=differenceInMilliseconds(n,t)/1e3;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function differenceInWeeks(n,t,e){const i=differenceInDays(n,t)/7;return getRoundingMethod(e==null?void 0:e.roundingMethod)(i)}function differenceInYears(n,t){const e=toDate(n),i=toDate(t),r=compareAsc(e,i),a=Math.abs(differenceInCalendarYears(e,i));e.setFullYear(1584),i.setFullYear(1584);const o=compareAsc(e,i)===-r,l=r*(a-+o);return l===0?0:l}function startOfMinute(n){const t=toDate(n);return t.setSeconds(0,0),t}function startOfQuarter(n){const t=toDate(n),e=t.getMonth(),i=e-e%3;return t.setMonth(i,1),t.setHours(0,0,0,0),t}function startOfMonth(n){const t=toDate(n);return t.setDate(1),t.setHours(0,0,0,0),t}function endOfYear(n){const t=toDate(n),e=t.getFullYear();return t.setFullYear(e+1,0,0),t.setHours(23,59,59,999),t}function startOfYear(n){const t=toDate(n),e=constructFrom(n,0);return e.setFullYear(t.getFullYear(),0,1),e.setHours(0,0,0,0),e}function endOfHour(n){const t=toDate(n);return t.setMinutes(59,59,999),t}function endOfWeek(n,t){var l,u,d,m;const e=getDefaultOptions$1(),i=(t==null?void 0:t.weekStartsOn)??((u=(l=t==null?void 0:t.locale)==null?void 0:l.options)==null?void 0:u.weekStartsOn)??e.weekStartsOn??((m=(d=e.locale)==null?void 0:d.options)==null?void 0:m.weekStartsOn)??0,r=toDate(n),a=r.getDay(),o=(a{let i;const r=formatDistanceLocale$t[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"in "+i:i+" ago":i};function buildFormatLongFn(n){return(t={})=>{const e=t.width?String(t.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}const dateFormats$v={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},timeFormats$v={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},dateTimeFormats$v={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$v={date:buildFormatLongFn({formats:dateFormats$v,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$v,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$v,defaultWidth:"full"})},formatRelativeLocale$u={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},formatRelative$u=(n,t,e,i)=>formatRelativeLocale$u[n];function buildLocalizeFn(n){return(t,e)=>{const i=e!=null&&e.context?String(e.context):"standalone";let r;if(i==="formatting"&&n.formattingValues){const o=n.defaultFormattingWidth||n.defaultWidth,l=e!=null&&e.width?String(e.width):o;r=n.formattingValues[l]||n.formattingValues[o]}else{const o=n.defaultWidth,l=e!=null&&e.width?String(e.width):n.defaultWidth;r=n.values[l]||n.values[o]}const a=n.argumentCallback?n.argumentCallback(t):t;return r[a]}}const eraValues$u={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},quarterValues$u={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},monthValues$u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},dayValues$u={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},dayPeriodValues$u={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},formattingDayPeriodValues$l={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},ordinalNumber$u=(n,t)=>{const e=Number(n),i=e%100;if(i>20||i<10)switch(i%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},localize$u={ordinalNumber:ordinalNumber$u,era:buildLocalizeFn({values:eraValues$u,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$u,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$u,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$u,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$u,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$l,defaultFormattingWidth:"wide"})};function buildMatchFn(n){return(t,e={})=>{const i=e.width,r=i&&n.matchPatterns[i]||n.matchPatterns[n.defaultMatchWidth],a=t.match(r);if(!a)return null;const o=a[0],l=i&&n.parsePatterns[i]||n.parsePatterns[n.defaultParseWidth],u=Array.isArray(l)?findIndex(l,p=>p.test(o)):findKey(l,p=>p.test(o));let d;d=n.valueCallback?n.valueCallback(u):u,d=e.valueCallback?e.valueCallback(d):d;const m=t.slice(o.length);return{value:d,rest:m}}}function findKey(n,t){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)&&t(n[e]))return e}function findIndex(n,t){for(let e=0;e{const i=t.match(n.matchPattern);if(!i)return null;const r=i[0],a=t.match(n.parsePattern);if(!a)return null;let o=n.valueCallback?n.valueCallback(a[0]):a[0];o=e.valueCallback?e.valueCallback(o):o;const l=t.slice(r.length);return{value:o,rest:l}}}const matchOrdinalNumberPattern$u=/^(\d+)(th|st|nd|rd)?/i,parseOrdinalNumberPattern$u=/\d+/i,matchEraPatterns$u={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},parseEraPatterns$u={any:[/^b/i,/^(a|c)/i]},matchQuarterPatterns$u={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},parseQuarterPatterns$u={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$u={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},parseMonthPatterns$u={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$u={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},parseDayPatterns$u={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},matchDayPeriodPatterns$u={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},parseDayPeriodPatterns$u={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},match$u={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$u,parsePattern:parseOrdinalNumberPattern$u,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$u,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$u,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$u,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$u,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$u,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$u,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$u,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$u,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$u,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$u,defaultParseWidth:"any"})},enUS={code:"en-US",formatDistance:formatDistance$u,formatLong:formatLong$v,formatRelative:formatRelative$u,localize:localize$u,match:match$u,options:{weekStartsOn:0,firstWeekContainsDate:1}};function getDayOfYear(n){const t=toDate(n);return differenceInCalendarDays(t,startOfYear(t))+1}function getISOWeek(n){const t=toDate(n),e=startOfISOWeek(t).getTime()-startOfISOWeekYear(t).getTime();return Math.round(e/millisecondsInWeek)+1}function getWeekYear(n,t){var m,p,_,y;const e=toDate(n),i=e.getFullYear(),r=getDefaultOptions$1(),a=(t==null?void 0:t.firstWeekContainsDate)??((p=(m=t==null?void 0:t.locale)==null?void 0:m.options)==null?void 0:p.firstWeekContainsDate)??r.firstWeekContainsDate??((y=(_=r.locale)==null?void 0:_.options)==null?void 0:y.firstWeekContainsDate)??1,o=constructFrom(n,0);o.setFullYear(i+1,0,a),o.setHours(0,0,0,0);const l=startOfWeek(o,t),u=constructFrom(n,0);u.setFullYear(i,0,a),u.setHours(0,0,0,0);const d=startOfWeek(u,t);return e.getTime()>=l.getTime()?i+1:e.getTime()>=d.getTime()?i:i-1}function startOfWeekYear(n,t){var l,u,d,m;const e=getDefaultOptions$1(),i=(t==null?void 0:t.firstWeekContainsDate)??((u=(l=t==null?void 0:t.locale)==null?void 0:l.options)==null?void 0:u.firstWeekContainsDate)??e.firstWeekContainsDate??((m=(d=e.locale)==null?void 0:d.options)==null?void 0:m.firstWeekContainsDate)??1,r=getWeekYear(n,t),a=constructFrom(n,0);return a.setFullYear(r,0,i),a.setHours(0,0,0,0),startOfWeek(a,t)}function getWeek(n,t){const e=toDate(n),i=startOfWeek(e,t).getTime()-startOfWeekYear(e,t).getTime();return Math.round(i/millisecondsInWeek)+1}function addLeadingZeros(n,t){const e=n<0?"-":"",i=Math.abs(n).toString().padStart(t,"0");return e+i}const lightFormatters={y(n,t){const e=n.getFullYear(),i=e>0?e:1-e;return addLeadingZeros(t==="yy"?i%100:i,t.length)},M(n,t){const e=n.getMonth();return t==="M"?String(e+1):addLeadingZeros(e+1,2)},d(n,t){return addLeadingZeros(n.getDate(),t.length)},a(n,t){const e=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.toUpperCase();case"aaa":return e;case"aaaaa":return e[0];case"aaaa":default:return e==="am"?"a.m.":"p.m."}},h(n,t){return addLeadingZeros(n.getHours()%12||12,t.length)},H(n,t){return addLeadingZeros(n.getHours(),t.length)},m(n,t){return addLeadingZeros(n.getMinutes(),t.length)},s(n,t){return addLeadingZeros(n.getSeconds(),t.length)},S(n,t){const e=t.length,i=n.getMilliseconds(),r=Math.floor(i*Math.pow(10,e-3));return addLeadingZeros(r,t.length)}},dayPeriodEnum={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},formatters$1={G:function(n,t,e){const i=n.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return e.era(i,{width:"abbreviated"});case"GGGGG":return e.era(i,{width:"narrow"});case"GGGG":default:return e.era(i,{width:"wide"})}},y:function(n,t,e){if(t==="yo"){const i=n.getFullYear(),r=i>0?i:1-i;return e.ordinalNumber(r,{unit:"year"})}return lightFormatters.y(n,t)},Y:function(n,t,e,i){const r=getWeekYear(n,i),a=r>0?r:1-r;if(t==="YY"){const o=a%100;return addLeadingZeros(o,2)}return t==="Yo"?e.ordinalNumber(a,{unit:"year"}):addLeadingZeros(a,t.length)},R:function(n,t){const e=getISOWeekYear(n);return addLeadingZeros(e,t.length)},u:function(n,t){const e=n.getFullYear();return addLeadingZeros(e,t.length)},Q:function(n,t,e){const i=Math.ceil((n.getMonth()+1)/3);switch(t){case"Q":return String(i);case"QQ":return addLeadingZeros(i,2);case"Qo":return e.ordinalNumber(i,{unit:"quarter"});case"QQQ":return e.quarter(i,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(i,{width:"narrow",context:"formatting"});case"QQQQ":default:return e.quarter(i,{width:"wide",context:"formatting"})}},q:function(n,t,e){const i=Math.ceil((n.getMonth()+1)/3);switch(t){case"q":return String(i);case"qq":return addLeadingZeros(i,2);case"qo":return e.ordinalNumber(i,{unit:"quarter"});case"qqq":return e.quarter(i,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(i,{width:"narrow",context:"standalone"});case"qqqq":default:return e.quarter(i,{width:"wide",context:"standalone"})}},M:function(n,t,e){const i=n.getMonth();switch(t){case"M":case"MM":return lightFormatters.M(n,t);case"Mo":return e.ordinalNumber(i+1,{unit:"month"});case"MMM":return e.month(i,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(i,{width:"narrow",context:"formatting"});case"MMMM":default:return e.month(i,{width:"wide",context:"formatting"})}},L:function(n,t,e){const i=n.getMonth();switch(t){case"L":return String(i+1);case"LL":return addLeadingZeros(i+1,2);case"Lo":return e.ordinalNumber(i+1,{unit:"month"});case"LLL":return e.month(i,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(i,{width:"narrow",context:"standalone"});case"LLLL":default:return e.month(i,{width:"wide",context:"standalone"})}},w:function(n,t,e,i){const r=getWeek(n,i);return t==="wo"?e.ordinalNumber(r,{unit:"week"}):addLeadingZeros(r,t.length)},I:function(n,t,e){const i=getISOWeek(n);return t==="Io"?e.ordinalNumber(i,{unit:"week"}):addLeadingZeros(i,t.length)},d:function(n,t,e){return t==="do"?e.ordinalNumber(n.getDate(),{unit:"date"}):lightFormatters.d(n,t)},D:function(n,t,e){const i=getDayOfYear(n);return t==="Do"?e.ordinalNumber(i,{unit:"dayOfYear"}):addLeadingZeros(i,t.length)},E:function(n,t,e){const i=n.getDay();switch(t){case"E":case"EE":case"EEE":return e.day(i,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(i,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(i,{width:"short",context:"formatting"});case"EEEE":default:return e.day(i,{width:"wide",context:"formatting"})}},e:function(n,t,e,i){const r=n.getDay(),a=(r-i.weekStartsOn+8)%7||7;switch(t){case"e":return String(a);case"ee":return addLeadingZeros(a,2);case"eo":return e.ordinalNumber(a,{unit:"day"});case"eee":return e.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(r,{width:"short",context:"formatting"});case"eeee":default:return e.day(r,{width:"wide",context:"formatting"})}},c:function(n,t,e,i){const r=n.getDay(),a=(r-i.weekStartsOn+8)%7||7;switch(t){case"c":return String(a);case"cc":return addLeadingZeros(a,t.length);case"co":return e.ordinalNumber(a,{unit:"day"});case"ccc":return e.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(r,{width:"narrow",context:"standalone"});case"cccccc":return e.day(r,{width:"short",context:"standalone"});case"cccc":default:return e.day(r,{width:"wide",context:"standalone"})}},i:function(n,t,e){const i=n.getDay(),r=i===0?7:i;switch(t){case"i":return String(r);case"ii":return addLeadingZeros(r,t.length);case"io":return e.ordinalNumber(r,{unit:"day"});case"iii":return e.day(i,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(i,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(i,{width:"short",context:"formatting"});case"iiii":default:return e.day(i,{width:"wide",context:"formatting"})}},a:function(n,t,e){const r=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(n,t,e){const i=n.getHours();let r;switch(i===12?r=dayPeriodEnum.noon:i===0?r=dayPeriodEnum.midnight:r=i/12>=1?"pm":"am",t){case"b":case"bb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"bbbb":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(n,t,e){const i=n.getHours();let r;switch(i>=17?r=dayPeriodEnum.evening:i>=12?r=dayPeriodEnum.afternoon:i>=4?r=dayPeriodEnum.morning:r=dayPeriodEnum.night,t){case"B":case"BB":case"BBB":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"BBBB":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(n,t,e){if(t==="ho"){let i=n.getHours()%12;return i===0&&(i=12),e.ordinalNumber(i,{unit:"hour"})}return lightFormatters.h(n,t)},H:function(n,t,e){return t==="Ho"?e.ordinalNumber(n.getHours(),{unit:"hour"}):lightFormatters.H(n,t)},K:function(n,t,e){const i=n.getHours()%12;return t==="Ko"?e.ordinalNumber(i,{unit:"hour"}):addLeadingZeros(i,t.length)},k:function(n,t,e){let i=n.getHours();return i===0&&(i=24),t==="ko"?e.ordinalNumber(i,{unit:"hour"}):addLeadingZeros(i,t.length)},m:function(n,t,e){return t==="mo"?e.ordinalNumber(n.getMinutes(),{unit:"minute"}):lightFormatters.m(n,t)},s:function(n,t,e){return t==="so"?e.ordinalNumber(n.getSeconds(),{unit:"second"}):lightFormatters.s(n,t)},S:function(n,t){return lightFormatters.S(n,t)},X:function(n,t,e,i){const a=(i._originalDate||n).getTimezoneOffset();if(a===0)return"Z";switch(t){case"X":return formatTimezoneWithOptionalMinutes(a);case"XXXX":case"XX":return formatTimezone(a);case"XXXXX":case"XXX":default:return formatTimezone(a,":")}},x:function(n,t,e,i){const a=(i._originalDate||n).getTimezoneOffset();switch(t){case"x":return formatTimezoneWithOptionalMinutes(a);case"xxxx":case"xx":return formatTimezone(a);case"xxxxx":case"xxx":default:return formatTimezone(a,":")}},O:function(n,t,e,i){const a=(i._originalDate||n).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+formatTimezoneShort(a,":");case"OOOO":default:return"GMT"+formatTimezone(a,":")}},z:function(n,t,e,i){const a=(i._originalDate||n).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+formatTimezoneShort(a,":");case"zzzz":default:return"GMT"+formatTimezone(a,":")}},t:function(n,t,e,i){const r=i._originalDate||n,a=Math.floor(r.getTime()/1e3);return addLeadingZeros(a,t.length)},T:function(n,t,e,i){const a=(i._originalDate||n).getTime();return addLeadingZeros(a,t.length)}};function formatTimezoneShort(n,t=""){const e=n>0?"-":"+",i=Math.abs(n),r=Math.floor(i/60),a=i%60;return a===0?e+String(r):e+String(r)+t+addLeadingZeros(a,2)}function formatTimezoneWithOptionalMinutes(n,t){return n%60===0?(n>0?"-":"+")+addLeadingZeros(Math.abs(n)/60,2):formatTimezone(n,t)}function formatTimezone(n,t=""){const e=n>0?"-":"+",i=Math.abs(n),r=addLeadingZeros(Math.floor(i/60),2),a=addLeadingZeros(i%60,2);return e+r+t+a}const dateLongFormatter=(n,t)=>{switch(n){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},timeLongFormatter=(n,t)=>{switch(n){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},dateTimeLongFormatter=(n,t)=>{const e=n.match(/(P+)(p+)?/)||[],i=e[1],r=e[2];if(!r)return dateLongFormatter(n,t);let a;switch(i){case"P":a=t.dateTime({width:"short"});break;case"PP":a=t.dateTime({width:"medium"});break;case"PPP":a=t.dateTime({width:"long"});break;case"PPPP":default:a=t.dateTime({width:"full"});break}return a.replace("{{date}}",dateLongFormatter(i,t)).replace("{{time}}",timeLongFormatter(r,t))},longFormatters={p:timeLongFormatter,P:dateTimeLongFormatter},dayOfYearTokenRE=/^D+$/,weekYearTokenRE=/^Y+$/,throwTokens=["D","DD","YY","YYYY"];function isProtectedDayOfYearToken(n){return dayOfYearTokenRE.test(n)}function isProtectedWeekYearToken(n){return weekYearTokenRE.test(n)}function warnOrThrowProtectedError(n,t,e){const i=message(n,t,e);if(console.warn(i),throwTokens.includes(n))throw new RangeError(i)}function message(n,t,e){const i=n[0]==="Y"?"years":"days of the month";return`Use \`${n.toLowerCase()}\` instead of \`${n}\` (in \`${t}\`) for formatting ${i} to the input \`${e}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const formattingTokensRegExp$1=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,longFormattingTokensRegExp$1=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,escapedStringRegExp$1=/^'([^]*?)'?$/,doubleQuoteRegExp$1=/''/g,unescapedLatinCharacterRegExp$1=/[a-zA-Z]/;function format(n,t,e){var m,p,_,y,w,v,E,x;const i=getDefaultOptions$1(),r=(e==null?void 0:e.locale)??i.locale??enUS,a=(e==null?void 0:e.firstWeekContainsDate)??((p=(m=e==null?void 0:e.locale)==null?void 0:m.options)==null?void 0:p.firstWeekContainsDate)??i.firstWeekContainsDate??((y=(_=i.locale)==null?void 0:_.options)==null?void 0:y.firstWeekContainsDate)??1,o=(e==null?void 0:e.weekStartsOn)??((v=(w=e==null?void 0:e.locale)==null?void 0:w.options)==null?void 0:v.weekStartsOn)??i.weekStartsOn??((x=(E=i.locale)==null?void 0:E.options)==null?void 0:x.weekStartsOn)??0,l=toDate(n);if(!isValid(l))throw new RangeError("Invalid time value");const u={firstWeekContainsDate:a,weekStartsOn:o,locale:r,_originalDate:l};return t.match(longFormattingTokensRegExp$1).map(function(S){const M=S[0];if(M==="p"||M==="P"){const k=longFormatters[M];return k(S,r.formatLong)}return S}).join("").match(formattingTokensRegExp$1).map(function(S){if(S==="''")return"'";const M=S[0];if(M==="'")return cleanEscapedString$1(S);const k=formatters$1[M];if(k)return!(e!=null&&e.useAdditionalWeekYearTokens)&&isProtectedWeekYearToken(S)&&warnOrThrowProtectedError(S,t,String(n)),!(e!=null&&e.useAdditionalDayOfYearTokens)&&isProtectedDayOfYearToken(S)&&warnOrThrowProtectedError(S,t,String(n)),k(l,S,r.localize,u);if(M.match(unescapedLatinCharacterRegExp$1))throw new RangeError("Format string contains an unescaped latin alphabet character `"+M+"`");return S}).join("")}function cleanEscapedString$1(n){const t=n.match(escapedStringRegExp$1);return t?t[1].replace(doubleQuoteRegExp$1,"'"):n}function getDefaultOptions(){return Object.assign({},getDefaultOptions$1())}function getISODay(n){let e=toDate(n).getDay();return e===0&&(e=7),e}function transpose(n,t){const e=t instanceof Date?constructFrom(t,0):new t(0);return e.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),e.setHours(n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()),e}const TIMEZONE_UNIT_PRIORITY=10;class Setter{constructor(){F(this,"subPriority",0)}validate(t,e){return!0}}class ValueSetter extends Setter{constructor(t,e,i,r,a){super(),this.value=t,this.validateValue=e,this.setValue=i,this.priority=r,a&&(this.subPriority=a)}validate(t,e){return this.validateValue(t,this.value,e)}set(t,e,i){return this.setValue(t,e,this.value,i)}}class DateToSystemTimezoneSetter extends Setter{constructor(){super(...arguments);F(this,"priority",TIMEZONE_UNIT_PRIORITY);F(this,"subPriority",-1)}set(e,i){return i.timestampIsSet?e:constructFrom(e,transpose(e,Date))}}class Parser{run(t,e,i,r){const a=this.parse(t,e,i,r);return a?{setter:new ValueSetter(a.value,this.validate,this.set,this.priority,this.subPriority),rest:a.rest}:null}validate(t,e,i){return!0}}class EraParser extends Parser{constructor(){super(...arguments);F(this,"priority",140);F(this,"incompatibleTokens",["R","u","t","T"])}parse(e,i,r){switch(i){case"G":case"GG":case"GGG":return r.era(e,{width:"abbreviated"})||r.era(e,{width:"narrow"});case"GGGGG":return r.era(e,{width:"narrow"});case"GGGG":default:return r.era(e,{width:"wide"})||r.era(e,{width:"abbreviated"})||r.era(e,{width:"narrow"})}}set(e,i,r){return i.era=r,e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}}const numericPatterns={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},timezonePatterns={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/};function mapValue(n,t){return n&&{value:t(n.value),rest:n.rest}}function parseNumericPattern(n,t){const e=t.match(n);return e?{value:parseInt(e[0],10),rest:t.slice(e[0].length)}:null}function parseTimezonePattern(n,t){const e=t.match(n);if(!e)return null;if(e[0]==="Z")return{value:0,rest:t.slice(1)};const i=e[1]==="+"?1:-1,r=e[2]?parseInt(e[2],10):0,a=e[3]?parseInt(e[3],10):0,o=e[5]?parseInt(e[5],10):0;return{value:i*(r*millisecondsInHour+a*millisecondsInMinute+o*millisecondsInSecond),rest:t.slice(e[0].length)}}function parseAnyDigitsSigned(n){return parseNumericPattern(numericPatterns.anyDigitsSigned,n)}function parseNDigits(n,t){switch(n){case 1:return parseNumericPattern(numericPatterns.singleDigit,t);case 2:return parseNumericPattern(numericPatterns.twoDigits,t);case 3:return parseNumericPattern(numericPatterns.threeDigits,t);case 4:return parseNumericPattern(numericPatterns.fourDigits,t);default:return parseNumericPattern(new RegExp("^\\d{1,"+n+"}"),t)}}function parseNDigitsSigned(n,t){switch(n){case 1:return parseNumericPattern(numericPatterns.singleDigitSigned,t);case 2:return parseNumericPattern(numericPatterns.twoDigitsSigned,t);case 3:return parseNumericPattern(numericPatterns.threeDigitsSigned,t);case 4:return parseNumericPattern(numericPatterns.fourDigitsSigned,t);default:return parseNumericPattern(new RegExp("^-?\\d{1,"+n+"}"),t)}}function dayPeriodEnumToHours(n){switch(n){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function normalizeTwoDigitYear(n,t){const e=t>0,i=e?t:1-t;let r;if(i<=50)r=n||100;else{const a=i+50,o=Math.floor(a/100)*100,l=n>=a%100;r=n+o-(l?100:0)}return e?r:1-r}function isLeapYearIndex$1(n){return n%400===0||n%4===0&&n%100!==0}class YearParser extends Parser{constructor(){super(...arguments);F(this,"priority",130);F(this,"incompatibleTokens",["Y","R","u","w","I","i","e","c","t","T"])}parse(e,i,r){const a=o=>({year:o,isTwoDigitYear:i==="yy"});switch(i){case"y":return mapValue(parseNDigits(4,e),a);case"yo":return mapValue(r.ordinalNumber(e,{unit:"year"}),a);default:return mapValue(parseNDigits(i.length,e),a)}}validate(e,i){return i.isTwoDigitYear||i.year>0}set(e,i,r){const a=e.getFullYear();if(r.isTwoDigitYear){const l=normalizeTwoDigitYear(r.year,a);return e.setFullYear(l,0,1),e.setHours(0,0,0,0),e}const o=!("era"in i)||i.era===1?r.year:1-r.year;return e.setFullYear(o,0,1),e.setHours(0,0,0,0),e}}class LocalWeekYearParser extends Parser{constructor(){super(...arguments);F(this,"priority",130);F(this,"incompatibleTokens",["y","R","u","Q","q","M","L","I","d","D","i","t","T"])}parse(e,i,r){const a=o=>({year:o,isTwoDigitYear:i==="YY"});switch(i){case"Y":return mapValue(parseNDigits(4,e),a);case"Yo":return mapValue(r.ordinalNumber(e,{unit:"year"}),a);default:return mapValue(parseNDigits(i.length,e),a)}}validate(e,i){return i.isTwoDigitYear||i.year>0}set(e,i,r,a){const o=getWeekYear(e,a);if(r.isTwoDigitYear){const u=normalizeTwoDigitYear(r.year,o);return e.setFullYear(u,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),startOfWeek(e,a)}const l=!("era"in i)||i.era===1?r.year:1-r.year;return e.setFullYear(l,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),startOfWeek(e,a)}}class ISOWeekYearParser extends Parser{constructor(){super(...arguments);F(this,"priority",130);F(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,i){return parseNDigitsSigned(i==="R"?4:i.length,e)}set(e,i,r){const a=constructFrom(e,0);return a.setFullYear(r,0,4),a.setHours(0,0,0,0),startOfISOWeek(a)}}class ExtendedYearParser extends Parser{constructor(){super(...arguments);F(this,"priority",130);F(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,i){return parseNDigitsSigned(i==="u"?4:i.length,e)}set(e,i,r){return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}}class QuarterParser extends Parser{constructor(){super(...arguments);F(this,"priority",120);F(this,"incompatibleTokens",["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,i,r){switch(i){case"Q":case"QQ":return parseNDigits(i.length,e);case"Qo":return r.ordinalNumber(e,{unit:"quarter"});case"QQQ":return r.quarter(e,{width:"abbreviated",context:"formatting"})||r.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return r.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return r.quarter(e,{width:"wide",context:"formatting"})||r.quarter(e,{width:"abbreviated",context:"formatting"})||r.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,i){return i>=1&&i<=4}set(e,i,r){return e.setMonth((r-1)*3,1),e.setHours(0,0,0,0),e}}class StandAloneQuarterParser extends Parser{constructor(){super(...arguments);F(this,"priority",120);F(this,"incompatibleTokens",["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,i,r){switch(i){case"q":case"qq":return parseNDigits(i.length,e);case"qo":return r.ordinalNumber(e,{unit:"quarter"});case"qqq":return r.quarter(e,{width:"abbreviated",context:"standalone"})||r.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return r.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return r.quarter(e,{width:"wide",context:"standalone"})||r.quarter(e,{width:"abbreviated",context:"standalone"})||r.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,i){return i>=1&&i<=4}set(e,i,r){return e.setMonth((r-1)*3,1),e.setHours(0,0,0,0),e}}class MonthParser extends Parser{constructor(){super(...arguments);F(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]);F(this,"priority",110)}parse(e,i,r){const a=o=>o-1;switch(i){case"M":return mapValue(parseNumericPattern(numericPatterns.month,e),a);case"MM":return mapValue(parseNDigits(2,e),a);case"Mo":return mapValue(r.ordinalNumber(e,{unit:"month"}),a);case"MMM":return r.month(e,{width:"abbreviated",context:"formatting"})||r.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return r.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return r.month(e,{width:"wide",context:"formatting"})||r.month(e,{width:"abbreviated",context:"formatting"})||r.month(e,{width:"narrow",context:"formatting"})}}validate(e,i){return i>=0&&i<=11}set(e,i,r){return e.setMonth(r,1),e.setHours(0,0,0,0),e}}class StandAloneMonthParser extends Parser{constructor(){super(...arguments);F(this,"priority",110);F(this,"incompatibleTokens",["Y","R","q","Q","M","w","I","D","i","e","c","t","T"])}parse(e,i,r){const a=o=>o-1;switch(i){case"L":return mapValue(parseNumericPattern(numericPatterns.month,e),a);case"LL":return mapValue(parseNDigits(2,e),a);case"Lo":return mapValue(r.ordinalNumber(e,{unit:"month"}),a);case"LLL":return r.month(e,{width:"abbreviated",context:"standalone"})||r.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return r.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return r.month(e,{width:"wide",context:"standalone"})||r.month(e,{width:"abbreviated",context:"standalone"})||r.month(e,{width:"narrow",context:"standalone"})}}validate(e,i){return i>=0&&i<=11}set(e,i,r){return e.setMonth(r,1),e.setHours(0,0,0,0),e}}function setWeek(n,t,e){const i=toDate(n),r=getWeek(i,e)-t;return i.setDate(i.getDate()-r*7),i}class LocalWeekParser extends Parser{constructor(){super(...arguments);F(this,"priority",100);F(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,i,r){switch(i){case"w":return parseNumericPattern(numericPatterns.week,e);case"wo":return r.ordinalNumber(e,{unit:"week"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=1&&i<=53}set(e,i,r,a){return startOfWeek(setWeek(e,r,a),a)}}function setISOWeek(n,t){const e=toDate(n),i=getISOWeek(e)-t;return e.setDate(e.getDate()-i*7),e}class ISOWeekParser extends Parser{constructor(){super(...arguments);F(this,"priority",100);F(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"])}parse(e,i,r){switch(i){case"I":return parseNumericPattern(numericPatterns.week,e);case"Io":return r.ordinalNumber(e,{unit:"week"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=1&&i<=53}set(e,i,r){return startOfISOWeek(setISOWeek(e,r))}}const DAYS_IN_MONTH=[31,28,31,30,31,30,31,31,30,31,30,31],DAYS_IN_MONTH_LEAP_YEAR=[31,29,31,30,31,30,31,31,30,31,30,31];class DateParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"subPriority",1);F(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,i,r){switch(i){case"d":return parseNumericPattern(numericPatterns.date,e);case"do":return r.ordinalNumber(e,{unit:"date"});default:return parseNDigits(i.length,e)}}validate(e,i){const r=e.getFullYear(),a=isLeapYearIndex$1(r),o=e.getMonth();return a?i>=1&&i<=DAYS_IN_MONTH_LEAP_YEAR[o]:i>=1&&i<=DAYS_IN_MONTH[o]}set(e,i,r){return e.setDate(r),e.setHours(0,0,0,0),e}}class DayOfYearParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"subpriority",1);F(this,"incompatibleTokens",["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"])}parse(e,i,r){switch(i){case"D":case"DD":return parseNumericPattern(numericPatterns.dayOfYear,e);case"Do":return r.ordinalNumber(e,{unit:"date"});default:return parseNDigits(i.length,e)}}validate(e,i){const r=e.getFullYear();return isLeapYearIndex$1(r)?i>=1&&i<=366:i>=1&&i<=365}set(e,i,r){return e.setMonth(0,r),e.setHours(0,0,0,0),e}}function setDay(n,t,e){var p,_,y,w;const i=getDefaultOptions$1(),r=(e==null?void 0:e.weekStartsOn)??((_=(p=e==null?void 0:e.locale)==null?void 0:p.options)==null?void 0:_.weekStartsOn)??i.weekStartsOn??((w=(y=i.locale)==null?void 0:y.options)==null?void 0:w.weekStartsOn)??0,a=toDate(n),o=a.getDay(),u=(t%7+7)%7,d=7-r,m=t<0||t>6?t-(o+d)%7:(u+d)%7-(o+d)%7;return addDays(a,m)}class DayParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"incompatibleTokens",["D","i","e","c","t","T"])}parse(e,i,r){switch(i){case"E":case"EE":case"EEE":return r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return r.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"})}}validate(e,i){return i>=0&&i<=6}set(e,i,r,a){return e=setDay(e,r,a),e.setHours(0,0,0,0),e}}class LocalDayParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"])}parse(e,i,r,a){const o=l=>{const u=Math.floor((l-1)/7)*7;return(l+a.weekStartsOn+6)%7+u};switch(i){case"e":case"ee":return mapValue(parseNDigits(i.length,e),o);case"eo":return mapValue(r.ordinalNumber(e,{unit:"day"}),o);case"eee":return r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"eeeee":return r.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"})}}validate(e,i){return i>=0&&i<=6}set(e,i,r,a){return e=setDay(e,r,a),e.setHours(0,0,0,0),e}}class StandAloneLocalDayParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"])}parse(e,i,r,a){const o=l=>{const u=Math.floor((l-1)/7)*7;return(l+a.weekStartsOn+6)%7+u};switch(i){case"c":case"cc":return mapValue(parseNDigits(i.length,e),o);case"co":return mapValue(r.ordinalNumber(e,{unit:"day"}),o);case"ccc":return r.day(e,{width:"abbreviated",context:"standalone"})||r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"});case"ccccc":return r.day(e,{width:"narrow",context:"standalone"});case"cccccc":return r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return r.day(e,{width:"wide",context:"standalone"})||r.day(e,{width:"abbreviated",context:"standalone"})||r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"})}}validate(e,i){return i>=0&&i<=6}set(e,i,r,a){return e=setDay(e,r,a),e.setHours(0,0,0,0),e}}function setISODay(n,t){const e=toDate(n),i=getISODay(e),r=t-i;return addDays(e,r)}class ISODayParser extends Parser{constructor(){super(...arguments);F(this,"priority",90);F(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"])}parse(e,i,r){const a=o=>o===0?7:o;switch(i){case"i":case"ii":return parseNDigits(i.length,e);case"io":return r.ordinalNumber(e,{unit:"day"});case"iii":return mapValue(r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a);case"iiiii":return mapValue(r.day(e,{width:"narrow",context:"formatting"}),a);case"iiiiii":return mapValue(r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a);case"iiii":default:return mapValue(r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a)}}validate(e,i){return i>=1&&i<=7}set(e,i,r){return e=setISODay(e,r),e.setHours(0,0,0,0),e}}class AMPMParser extends Parser{constructor(){super(...arguments);F(this,"priority",80);F(this,"incompatibleTokens",["b","B","H","k","t","T"])}parse(e,i,r){switch(i){case"a":case"aa":case"aaa":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,i,r){return e.setHours(dayPeriodEnumToHours(r),0,0,0),e}}class AMPMMidnightParser extends Parser{constructor(){super(...arguments);F(this,"priority",80);F(this,"incompatibleTokens",["a","B","H","k","t","T"])}parse(e,i,r){switch(i){case"b":case"bb":case"bbb":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,i,r){return e.setHours(dayPeriodEnumToHours(r),0,0,0),e}}class DayPeriodParser extends Parser{constructor(){super(...arguments);F(this,"priority",80);F(this,"incompatibleTokens",["a","b","t","T"])}parse(e,i,r){switch(i){case"B":case"BB":case"BBB":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,i,r){return e.setHours(dayPeriodEnumToHours(r),0,0,0),e}}class Hour1to12Parser extends Parser{constructor(){super(...arguments);F(this,"priority",70);F(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,i,r){switch(i){case"h":return parseNumericPattern(numericPatterns.hour12h,e);case"ho":return r.ordinalNumber(e,{unit:"hour"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=1&&i<=12}set(e,i,r){const a=e.getHours()>=12;return a&&r<12?e.setHours(r+12,0,0,0):!a&&r===12?e.setHours(0,0,0,0):e.setHours(r,0,0,0),e}}class Hour0to23Parser extends Parser{constructor(){super(...arguments);F(this,"priority",70);F(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,i,r){switch(i){case"H":return parseNumericPattern(numericPatterns.hour23h,e);case"Ho":return r.ordinalNumber(e,{unit:"hour"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=0&&i<=23}set(e,i,r){return e.setHours(r,0,0,0),e}}class Hour0To11Parser extends Parser{constructor(){super(...arguments);F(this,"priority",70);F(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,i,r){switch(i){case"K":return parseNumericPattern(numericPatterns.hour11h,e);case"Ko":return r.ordinalNumber(e,{unit:"hour"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=0&&i<=11}set(e,i,r){return e.getHours()>=12&&r<12?e.setHours(r+12,0,0,0):e.setHours(r,0,0,0),e}}class Hour1To24Parser extends Parser{constructor(){super(...arguments);F(this,"priority",70);F(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,i,r){switch(i){case"k":return parseNumericPattern(numericPatterns.hour24h,e);case"ko":return r.ordinalNumber(e,{unit:"hour"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=1&&i<=24}set(e,i,r){const a=r<=24?r%24:r;return e.setHours(a,0,0,0),e}}class MinuteParser extends Parser{constructor(){super(...arguments);F(this,"priority",60);F(this,"incompatibleTokens",["t","T"])}parse(e,i,r){switch(i){case"m":return parseNumericPattern(numericPatterns.minute,e);case"mo":return r.ordinalNumber(e,{unit:"minute"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=0&&i<=59}set(e,i,r){return e.setMinutes(r,0,0),e}}class SecondParser extends Parser{constructor(){super(...arguments);F(this,"priority",50);F(this,"incompatibleTokens",["t","T"])}parse(e,i,r){switch(i){case"s":return parseNumericPattern(numericPatterns.second,e);case"so":return r.ordinalNumber(e,{unit:"second"});default:return parseNDigits(i.length,e)}}validate(e,i){return i>=0&&i<=59}set(e,i,r){return e.setSeconds(r,0),e}}class FractionOfSecondParser extends Parser{constructor(){super(...arguments);F(this,"priority",30);F(this,"incompatibleTokens",["t","T"])}parse(e,i){const r=a=>Math.floor(a*Math.pow(10,-i.length+3));return mapValue(parseNDigits(i.length,e),r)}set(e,i,r){return e.setMilliseconds(r),e}}class ISOTimezoneWithZParser extends Parser{constructor(){super(...arguments);F(this,"priority",10);F(this,"incompatibleTokens",["t","T","x"])}parse(e,i){switch(i){case"X":return parseTimezonePattern(timezonePatterns.basicOptionalMinutes,e);case"XX":return parseTimezonePattern(timezonePatterns.basic,e);case"XXXX":return parseTimezonePattern(timezonePatterns.basicOptionalSeconds,e);case"XXXXX":return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds,e);case"XXX":default:return parseTimezonePattern(timezonePatterns.extended,e)}}set(e,i,r){return i.timestampIsSet?e:constructFrom(e,e.getTime()-getTimezoneOffsetInMilliseconds(e)-r)}}class ISOTimezoneParser extends Parser{constructor(){super(...arguments);F(this,"priority",10);F(this,"incompatibleTokens",["t","T","X"])}parse(e,i){switch(i){case"x":return parseTimezonePattern(timezonePatterns.basicOptionalMinutes,e);case"xx":return parseTimezonePattern(timezonePatterns.basic,e);case"xxxx":return parseTimezonePattern(timezonePatterns.basicOptionalSeconds,e);case"xxxxx":return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds,e);case"xxx":default:return parseTimezonePattern(timezonePatterns.extended,e)}}set(e,i,r){return i.timestampIsSet?e:constructFrom(e,e.getTime()-getTimezoneOffsetInMilliseconds(e)-r)}}class TimestampSecondsParser extends Parser{constructor(){super(...arguments);F(this,"priority",40);F(this,"incompatibleTokens","*")}parse(e){return parseAnyDigitsSigned(e)}set(e,i,r){return[constructFrom(e,r*1e3),{timestampIsSet:!0}]}}class TimestampMillisecondsParser extends Parser{constructor(){super(...arguments);F(this,"priority",20);F(this,"incompatibleTokens","*")}parse(e){return parseAnyDigitsSigned(e)}set(e,i,r){return[constructFrom(e,r),{timestampIsSet:!0}]}}const parsers={G:new EraParser,y:new YearParser,Y:new LocalWeekYearParser,R:new ISOWeekYearParser,u:new ExtendedYearParser,Q:new QuarterParser,q:new StandAloneQuarterParser,M:new MonthParser,L:new StandAloneMonthParser,w:new LocalWeekParser,I:new ISOWeekParser,d:new DateParser,D:new DayOfYearParser,E:new DayParser,e:new LocalDayParser,c:new StandAloneLocalDayParser,i:new ISODayParser,a:new AMPMParser,b:new AMPMMidnightParser,B:new DayPeriodParser,h:new Hour1to12Parser,H:new Hour0to23Parser,K:new Hour0To11Parser,k:new Hour1To24Parser,m:new MinuteParser,s:new SecondParser,S:new FractionOfSecondParser,X:new ISOTimezoneWithZParser,x:new ISOTimezoneParser,t:new TimestampSecondsParser,T:new TimestampMillisecondsParser},formattingTokensRegExp=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,longFormattingTokensRegExp=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,escapedStringRegExp=/^'([^]*?)'?$/,doubleQuoteRegExp=/''/g,notWhitespaceRegExp=/\S/,unescapedLatinCharacterRegExp=/[a-zA-Z]/;function parse$1(n,t,e,i){var v,E,x,S,M,k,A,I;const r=getDefaultOptions(),a=(i==null?void 0:i.locale)??r.locale??enUS,o=(i==null?void 0:i.firstWeekContainsDate)??((E=(v=i==null?void 0:i.locale)==null?void 0:v.options)==null?void 0:E.firstWeekContainsDate)??r.firstWeekContainsDate??((S=(x=r.locale)==null?void 0:x.options)==null?void 0:S.firstWeekContainsDate)??1,l=(i==null?void 0:i.weekStartsOn)??((k=(M=i==null?void 0:i.locale)==null?void 0:M.options)==null?void 0:k.weekStartsOn)??r.weekStartsOn??((I=(A=r.locale)==null?void 0:A.options)==null?void 0:I.weekStartsOn)??0;if(t==="")return n===""?toDate(e):constructFrom(e,NaN);const u={firstWeekContainsDate:o,weekStartsOn:l,locale:a},d=[new DateToSystemTimezoneSetter],m=t.match(longFormattingTokensRegExp).map(C=>{const R=C[0];if(R in longFormatters){const W=longFormatters[R];return W(C,a.formatLong)}return C}).join("").match(formattingTokensRegExp),p=[];for(let C of m){!(i!=null&&i.useAdditionalWeekYearTokens)&&isProtectedWeekYearToken(C)&&warnOrThrowProtectedError(C,t,n),!(i!=null&&i.useAdditionalDayOfYearTokens)&&isProtectedDayOfYearToken(C)&&warnOrThrowProtectedError(C,t,n);const R=C[0],W=parsers[R];if(W){const{incompatibleTokens:K}=W;if(Array.isArray(K)){const q=p.find(J=>K.includes(J.token)||J.token===R);if(q)throw new RangeError(`The format string mustn't contain \`${q.fullToken}\` and \`${C}\` at the same time`)}else if(W.incompatibleTokens==="*"&&p.length>0)throw new RangeError(`The format string mustn't contain \`${C}\` and any other token at the same time`);p.push({token:R,fullToken:C});const Y=W.run(n,C,a.match,u);if(!Y)return constructFrom(e,NaN);d.push(Y.setter),n=Y.rest}else{if(R.match(unescapedLatinCharacterRegExp))throw new RangeError("Format string contains an unescaped latin alphabet character `"+R+"`");if(C==="''"?C="'":R==="'"&&(C=cleanEscapedString(C)),n.indexOf(C)===0)n=n.slice(C.length);else return constructFrom(e,NaN)}}if(n.length>0&¬WhitespaceRegExp.test(n))return constructFrom(e,NaN);const _=d.map(C=>C.priority).sort((C,R)=>R-C).filter((C,R,W)=>W.indexOf(C)===R).map(C=>d.filter(R=>R.priority===C).sort((R,W)=>W.subPriority-R.subPriority)).map(C=>C[0]);let y=toDate(e);if(isNaN(y.getTime()))return constructFrom(e,NaN);const w={};for(const C of _){if(!C.validate(y,u))return constructFrom(e,NaN);const R=C.set(y,w,u);Array.isArray(R)?(y=R[0],Object.assign(w,R[1])):y=R}return constructFrom(e,y)}function cleanEscapedString(n){return n.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp,"'")}function startOfHour(n){const t=toDate(n);return t.setMinutes(0,0,0),t}function isSameWeek(n,t,e){const i=startOfWeek(n,e),r=startOfWeek(t,e);return+i==+r}function startOfSecond(n){const t=toDate(n);return t.setMilliseconds(0),t}function subDays(n,t){return addDays(n,-t)}function parseISO(n,t){const e=(t==null?void 0:t.additionalDigits)??2,i=splitDateString(n);let r;if(i.date){const u=parseYear(i.date,e);r=parseDate(u.restDateString,u.year)}if(!r||isNaN(r.getTime()))return new Date(NaN);const a=r.getTime();let o=0,l;if(i.time&&(o=parseTime(i.time),isNaN(o)))return new Date(NaN);if(i.timezone){if(l=parseTimezone(i.timezone),isNaN(l))return new Date(NaN)}else{const u=new Date(a+o),d=new Date(0);return d.setFullYear(u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()),d.setHours(u.getUTCHours(),u.getUTCMinutes(),u.getUTCSeconds(),u.getUTCMilliseconds()),d}return new Date(a+o+l)}const patterns={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},dateRegex=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,timeRegex=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,timezoneRegex=/^([+-])(\d{2})(?::?(\d{2}))?$/;function splitDateString(n){const t={},e=n.split(patterns.dateTimeDelimiter);let i;if(e.length>2)return t;if(/:/.test(e[0])?i=e[0]:(t.date=e[0],i=e[1],patterns.timeZoneDelimiter.test(t.date)&&(t.date=n.split(patterns.timeZoneDelimiter)[0],i=n.substr(t.date.length,n.length))),i){const r=patterns.timezone.exec(i);r?(t.time=i.replace(r[1],""),t.timezone=r[1]):t.time=i}return t}function parseYear(n,t){const e=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+t)+"})|(\\d{2}|[+-]\\d{"+(2+t)+"})$)"),i=n.match(e);if(!i)return{year:NaN,restDateString:""};const r=i[1]?parseInt(i[1]):null,a=i[2]?parseInt(i[2]):null;return{year:a===null?r:a*100,restDateString:n.slice((i[1]||i[2]).length)}}function parseDate(n,t){if(t===null)return new Date(NaN);const e=n.match(dateRegex);if(!e)return new Date(NaN);const i=!!e[4],r=parseDateUnit(e[1]),a=parseDateUnit(e[2])-1,o=parseDateUnit(e[3]),l=parseDateUnit(e[4]),u=parseDateUnit(e[5])-1;if(i)return validateWeekDate(t,l,u)?dayOfISOWeekYear(t,l,u):new Date(NaN);{const d=new Date(0);return!validateDate(t,a,o)||!validateDayOfYearDate(t,r)?new Date(NaN):(d.setUTCFullYear(t,a,Math.max(r,o)),d)}}function parseDateUnit(n){return n?parseInt(n):1}function parseTime(n){const t=n.match(timeRegex);if(!t)return NaN;const e=parseTimeUnit(t[1]),i=parseTimeUnit(t[2]),r=parseTimeUnit(t[3]);return validateTime(e,i,r)?e*millisecondsInHour+i*millisecondsInMinute+r*1e3:NaN}function parseTimeUnit(n){return n&&parseFloat(n.replace(",","."))||0}function parseTimezone(n){if(n==="Z")return 0;const t=n.match(timezoneRegex);if(!t)return 0;const e=t[1]==="+"?-1:1,i=parseInt(t[2]),r=t[3]&&parseInt(t[3])||0;return validateTimezone(i,r)?e*(i*millisecondsInHour+r*millisecondsInMinute):NaN}function dayOfISOWeekYear(n,t,e){const i=new Date(0);i.setUTCFullYear(n,0,4);const r=i.getUTCDay()||7,a=(t-1)*7+e+1-r;return i.setUTCDate(i.getUTCDate()+a),i}const daysInMonths=[31,null,31,30,31,30,31,31,30,31,30,31];function isLeapYearIndex(n){return n%400===0||n%4===0&&n%100!==0}function validateDate(n,t,e){return t>=0&&t<=11&&e>=1&&e<=(daysInMonths[t]||(isLeapYearIndex(n)?29:28))}function validateDayOfYearDate(n,t){return t>=1&&t<=(isLeapYearIndex(n)?366:365)}function validateWeekDate(n,t,e){return t>=1&&t<=53&&e>=0&&e<=6}function validateTime(n,t,e){return n===24?t===0&&e===0:e>=0&&e<60&&t>=0&&t<60&&n>=0&&n<25}function validateTimezone(n,t){return t>=0&&t<=59}function subMonths(n,t){return addMonths(n,-t)}const consoleLogger={type:"logger",log(n){this.output("log",n)},warn(n){this.output("warn",n)},error(n){this.output("error",n)},output(n,t){console&&console[n]&&console[n].apply(console,t)}};class Logger{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,e)}init(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=e.prefix||"i18next:",this.logger=t||consoleLogger,this.options=e,this.debug=e.debug}log(){for(var t=arguments.length,e=new Array(t),i=0;i{this.observers[i]=this.observers[i]||[],this.observers[i].push(e)}),this}off(t,e){if(this.observers[t]){if(!e){delete this.observers[t];return}this.observers[t]=this.observers[t].filter(i=>i!==e)}}emit(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),r=1;r{o(...i)}),this.observers["*"]&&[].concat(this.observers["*"]).forEach(o=>{o.apply(o,[t,...i])})}}function defer(){let n,t;const e=new Promise((i,r)=>{n=i,t=r});return e.resolve=n,e.reject=t,e}function makeString(n){return n==null?"":""+n}function copy(n,t,e){n.forEach(i=>{t[i]&&(e[i]=t[i])})}function getLastOfPath(n,t,e){function i(o){return o&&o.indexOf("###")>-1?o.replace(/###/g,"."):o}function r(){return!n||typeof n=="string"}const a=typeof t!="string"?[].concat(t):t.split(".");for(;a.length>1;){if(r())return{};const o=i(a.shift());!n[o]&&e&&(n[o]=new e),Object.prototype.hasOwnProperty.call(n,o)?n=n[o]:n={}}return r()?{}:{obj:n,k:i(a.shift())}}function setPath(n,t,e){const{obj:i,k:r}=getLastOfPath(n,t,Object);i[r]=e}function pushPath(n,t,e,i){const{obj:r,k:a}=getLastOfPath(n,t,Object);r[a]=r[a]||[],i&&(r[a]=r[a].concat(e)),i||r[a].push(e)}function getPath(n,t){const{obj:e,k:i}=getLastOfPath(n,t);if(e)return e[i]}function getPathWithDefaults(n,t,e){const i=getPath(n,e);return i!==void 0?i:getPath(t,e)}function deepExtend(n,t,e){for(const i in t)i!=="__proto__"&&i!=="constructor"&&(i in n?typeof n[i]=="string"||n[i]instanceof String||typeof t[i]=="string"||t[i]instanceof String?e&&(n[i]=t[i]):deepExtend(n[i],t[i],e):n[i]=t[i]);return n}function regexEscape(n){return n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var _entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function escape$1(n){return typeof n=="string"?n.replace(/[&<>"'\/]/g,t=>_entityMap[t]):n}const chars=[" ",",","?","!",";"];function looksLikeObjectPath(n,t,e){t=t||"",e=e||"";const i=chars.filter(o=>t.indexOf(o)<0&&e.indexOf(o)<0);if(i.length===0)return!0;const r=new RegExp(`(${i.map(o=>o==="?"?"\\?":o).join("|")})`);let a=!r.test(n);if(!a){const o=n.indexOf(e);o>0&&!r.test(n.substring(0,o))&&(a=!0)}return a}function deepFind(n,t){let e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!n)return;if(n[t])return n[t];const i=t.split(e);let r=n;for(let a=0;aa+o;)o++,l=i.slice(a,a+o).join(e),u=r[l];if(u===void 0)return;if(u===null)return null;if(t.endsWith(l)){if(typeof u=="string")return u;if(l&&typeof u[l]=="string")return u[l]}const d=i.slice(a+o).join(e);return d?deepFind(u,d,e):void 0}r=r[i[a]]}return r}function getCleanedCode(n){return n&&n.indexOf("_")>0?n.replace("_","-"):n}class ResourceStore extends EventEmitter{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=e,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const e=this.options.ns.indexOf(t);e>-1&&this.options.ns.splice(e,1)}getResource(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,o=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let l=[t,e];i&&typeof i!="string"&&(l=l.concat(i)),i&&typeof i=="string"&&(l=l.concat(a?i.split(a):i)),t.indexOf(".")>-1&&(l=t.split("."));const u=getPath(this.data,l);return u||!o||typeof i!="string"?u:deepFind(this.data&&this.data[t]&&this.data[t][e],i,a)}addResource(t,e,i,r){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const o=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let l=[t,e];i&&(l=l.concat(o?i.split(o):i)),t.indexOf(".")>-1&&(l=t.split("."),r=e,e=l[1]),this.addNamespaces(e),setPath(this.data,l,r),a.silent||this.emit("added",t,e,i,r)}addResources(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const a in i)(typeof i[a]=="string"||Object.prototype.toString.apply(i[a])==="[object Array]")&&this.addResource(t,e,a,i[a],{silent:!0});r.silent||this.emit("added",t,e,i)}addResourceBundle(t,e,i,r,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},l=[t,e];t.indexOf(".")>-1&&(l=t.split("."),r=i,i=e,e=l[1]),this.addNamespaces(e);let u=getPath(this.data,l)||{};r?deepExtend(u,i,a):u={...u,...i},setPath(this.data,l,u),o.silent||this.emit("added",t,e,i)}removeResourceBundle(t,e){this.hasResourceBundle(t,e)&&delete this.data[t][e],this.removeNamespaces(e),this.emit("removed",t,e)}hasResourceBundle(t,e){return this.getResource(t,e)!==void 0}getResourceBundle(t,e){return e||(e=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,e)}:this.getResource(t,e)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const e=this.getDataByLanguage(t);return!!(e&&Object.keys(e)||[]).find(r=>e[r]&&Object.keys(e[r]).length>0)}toJSON(){return this.data}}var postProcessor={processors:{},addPostProcessor(n){this.processors[n.name]=n},handle(n,t,e,i,r){return n.forEach(a=>{this.processors[a]&&(t=this.processors[a].process(t,e,i,r))}),t}};const checkedLoadedFor={};class Translator extends EventEmitter{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),copy(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=e,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=baseLogger.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const i=this.resolve(t,e);return i&&i.res!==void 0}extractFromKey(t,e){let i=e.nsSeparator!==void 0?e.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=e.keySeparator!==void 0?e.keySeparator:this.options.keySeparator;let a=e.ns||this.options.defaultNS||[];const o=i&&t.indexOf(i)>-1,l=!this.options.userDefinedKeySeparator&&!e.keySeparator&&!this.options.userDefinedNsSeparator&&!e.nsSeparator&&!looksLikeObjectPath(t,i,r);if(o&&!l){const u=t.match(this.interpolator.nestingRegexp);if(u&&u.length>0)return{key:t,namespaces:a};const d=t.split(i);(i!==r||i===r&&this.options.ns.indexOf(d[0])>-1)&&(a=d.shift()),t=d.join(r)}return typeof a=="string"&&(a=[a]),{key:t,namespaces:a}}translate(t,e,i){if(typeof e!="object"&&this.options.overloadTranslationOptionHandler&&(e=this.options.overloadTranslationOptionHandler(arguments)),typeof e=="object"&&(e={...e}),e||(e={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const r=e.returnDetails!==void 0?e.returnDetails:this.options.returnDetails,a=e.keySeparator!==void 0?e.keySeparator:this.options.keySeparator,{key:o,namespaces:l}=this.extractFromKey(t[t.length-1],e),u=l[l.length-1],d=e.lng||this.language,m=e.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d&&d.toLowerCase()==="cimode"){if(m){const k=e.nsSeparator||this.options.nsSeparator;return r?{res:`${u}${k}${o}`,usedKey:o,exactUsedKey:o,usedLng:d,usedNS:u,usedParams:this.getUsedParamsDetails(e)}:`${u}${k}${o}`}return r?{res:o,usedKey:o,exactUsedKey:o,usedLng:d,usedNS:u,usedParams:this.getUsedParamsDetails(e)}:o}const p=this.resolve(t,e);let _=p&&p.res;const y=p&&p.usedKey||o,w=p&&p.exactUsedKey||o,v=Object.prototype.toString.apply(_),E=["[object Number]","[object Function]","[object RegExp]"],x=e.joinArrays!==void 0?e.joinArrays:this.options.joinArrays,S=!this.i18nFormat||this.i18nFormat.handleAsObject;if(S&&_&&(typeof _!="string"&&typeof _!="boolean"&&typeof _!="number")&&E.indexOf(v)<0&&!(typeof x=="string"&&v==="[object Array]")){if(!e.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const k=this.options.returnedObjectHandler?this.options.returnedObjectHandler(y,_,{...e,ns:l}):`key '${o} (${this.language})' returned an object instead of string.`;return r?(p.res=k,p.usedParams=this.getUsedParamsDetails(e),p):k}if(a){const k=v==="[object Array]",A=k?[]:{},I=k?w:y;for(const C in _)if(Object.prototype.hasOwnProperty.call(_,C)){const R=`${I}${a}${C}`;A[C]=this.translate(R,{...e,joinArrays:!1,ns:l}),A[C]===R&&(A[C]=_[C])}_=A}}else if(S&&typeof x=="string"&&v==="[object Array]")_=_.join(x),_&&(_=this.extendTranslation(_,t,e,i));else{let k=!1,A=!1;const I=e.count!==void 0&&typeof e.count!="string",C=Translator.hasDefaultValue(e),R=I?this.pluralResolver.getSuffix(d,e.count,e):"",W=e.ordinal&&I?this.pluralResolver.getSuffix(d,e.count,{ordinal:!1}):"",K=e[`defaultValue${R}`]||e[`defaultValue${W}`]||e.defaultValue;!this.isValidLookup(_)&&C&&(k=!0,_=K),this.isValidLookup(_)||(A=!0,_=o);const q=(e.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&A?void 0:_,J=C&&K!==_&&this.options.updateMissing;if(A||k||J){if(this.logger.log(J?"updateKey":"missingKey",d,u,o,J?K:_),a){const V=this.resolve(o,{...e,keySeparator:!1});V&&V.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let nt=[];const $=this.languageUtils.getFallbackCodes(this.options.fallbackLng,e.lng||this.language);if(this.options.saveMissingTo==="fallback"&&$&&$[0])for(let V=0;V<$.length;V++)nt.push($[V]);else this.options.saveMissingTo==="all"?nt=this.languageUtils.toResolveHierarchy(e.lng||this.language):nt.push(e.lng||this.language);const N=(V,H,X)=>{const B=C&&X!==_?X:q;this.options.missingKeyHandler?this.options.missingKeyHandler(V,u,H,B,J,e):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(V,u,H,B,J,e),this.emit("missingKey",V,u,H,_)};this.options.saveMissing&&(this.options.saveMissingPlurals&&I?nt.forEach(V=>{this.pluralResolver.getSuffixes(V,e).forEach(H=>{N([V],o+H,e[`defaultValue${H}`]||K)})}):N(nt,o,K))}_=this.extendTranslation(_,t,e,p,i),A&&_===o&&this.options.appendNamespaceToMissingKey&&(_=`${u}:${o}`),(A||k)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?_=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${u}:${o}`:o,k?_:void 0):_=this.options.parseMissingKeyHandler(_))}return r?(p.res=_,p.usedParams=this.getUsedParamsDetails(e),p):_}extendTranslation(t,e,i,r,a){var o=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const d=typeof t=="string"&&(i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let m;if(d){const _=t.match(this.interpolator.nestingRegexp);m=_&&_.length}let p=i.replace&&typeof i.replace!="string"?i.replace:i;if(this.options.interpolation.defaultVariables&&(p={...this.options.interpolation.defaultVariables,...p}),t=this.interpolator.interpolate(t,p,i.lng||this.language,i),d){const _=t.match(this.interpolator.nestingRegexp),y=_&&_.length;m1&&arguments[1]!==void 0?arguments[1]:{},i,r,a,o,l;return typeof t=="string"&&(t=[t]),t.forEach(u=>{if(this.isValidLookup(i))return;const d=this.extractFromKey(u,e),m=d.key;r=m;let p=d.namespaces;this.options.fallbackNS&&(p=p.concat(this.options.fallbackNS));const _=e.count!==void 0&&typeof e.count!="string",y=_&&!e.ordinal&&e.count===0&&this.pluralResolver.shouldUseIntlApi(),w=e.context!==void 0&&(typeof e.context=="string"||typeof e.context=="number")&&e.context!=="",v=e.lngs?e.lngs:this.languageUtils.toResolveHierarchy(e.lng||this.language,e.fallbackLng);p.forEach(E=>{this.isValidLookup(i)||(l=E,!checkedLoadedFor[`${v[0]}-${E}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(l)&&(checkedLoadedFor[`${v[0]}-${E}`]=!0,this.logger.warn(`key "${r}" for languages "${v.join(", ")}" won't get resolved as namespace "${l}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),v.forEach(x=>{if(this.isValidLookup(i))return;o=x;const S=[m];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(S,m,x,E,e);else{let k;_&&(k=this.pluralResolver.getSuffix(x,e.count,e));const A=`${this.options.pluralSeparator}zero`,I=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(_&&(S.push(m+k),e.ordinal&&k.indexOf(I)===0&&S.push(m+k.replace(I,this.options.pluralSeparator)),y&&S.push(m+A)),w){const C=`${m}${this.options.contextSeparator}${e.context}`;S.push(C),_&&(S.push(C+k),e.ordinal&&k.indexOf(I)===0&&S.push(C+k.replace(I,this.options.pluralSeparator)),y&&S.push(C+A))}}let M;for(;M=S.pop();)this.isValidLookup(i)||(a=M,i=this.getResource(x,E,M,e))}))})}),{res:i,usedKey:r,exactUsedKey:a,usedLng:o,usedNS:l}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,e,i,r):this.resourceStore.getResource(t,e,i,r)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const e=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=t.replace&&typeof t.replace!="string";let r=i?t.replace:t;if(i&&typeof t.count<"u"&&(r.count=t.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const a of e)delete r[a]}return r}static hasDefaultValue(t){const e="defaultValue";for(const i in t)if(Object.prototype.hasOwnProperty.call(t,i)&&e===i.substring(0,e.length)&&t[i]!==void 0)return!0;return!1}}function capitalize(n){return n.charAt(0).toUpperCase()+n.slice(1)}class LanguageUtil{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=baseLogger.create("languageUtils")}getScriptPartFromCode(t){if(t=getCleanedCode(t),!t||t.indexOf("-")<0)return null;const e=t.split("-");return e.length===2||(e.pop(),e[e.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(e.join("-"))}getLanguagePartFromCode(t){if(t=getCleanedCode(t),!t||t.indexOf("-")<0)return t;const e=t.split("-");return this.formatLanguageCode(e[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const e=["hans","hant","latn","cyrl","cans","mong","arab"];let i=t.split("-");return this.options.lowerCaseLng?i=i.map(r=>r.toLowerCase()):i.length===2?(i[0]=i[0].toLowerCase(),i[1]=i[1].toUpperCase(),e.indexOf(i[1].toLowerCase())>-1&&(i[1]=capitalize(i[1].toLowerCase()))):i.length===3&&(i[0]=i[0].toLowerCase(),i[1].length===2&&(i[1]=i[1].toUpperCase()),i[0]!=="sgn"&&i[2].length===2&&(i[2]=i[2].toUpperCase()),e.indexOf(i[1].toLowerCase())>-1&&(i[1]=capitalize(i[1].toLowerCase())),e.indexOf(i[2].toLowerCase())>-1&&(i[2]=capitalize(i[2].toLowerCase()))),i.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let e;return t.forEach(i=>{if(e)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(e=r)}),!e&&this.options.supportedLngs&&t.forEach(i=>{if(e)return;const r=this.getLanguagePartFromCode(i);if(this.isSupportedCode(r))return e=r;e=this.options.supportedLngs.find(a=>{if(a===r)return a;if(!(a.indexOf("-")<0&&r.indexOf("-")<0)&&a.indexOf(r)===0)return a})}),e||(e=this.getFallbackCodes(this.options.fallbackLng)[0]),e}getFallbackCodes(t,e){if(!t)return[];if(typeof t=="function"&&(t=t(e)),typeof t=="string"&&(t=[t]),Object.prototype.toString.apply(t)==="[object Array]")return t;if(!e)return t.default||[];let i=t[e];return i||(i=t[this.getScriptPartFromCode(e)]),i||(i=t[this.formatLanguageCode(e)]),i||(i=t[this.getLanguagePartFromCode(e)]),i||(i=t.default),i||[]}toResolveHierarchy(t,e){const i=this.getFallbackCodes(e||this.options.fallbackLng||[],t),r=[],a=o=>{o&&(this.isSupportedCode(o)?r.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(t))):typeof t=="string"&&a(this.formatLanguageCode(t)),i.forEach(o=>{r.indexOf(o)<0&&a(this.formatLanguageCode(o))}),r}}let sets=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],_rulesPluralsTypes={1:function(n){return+(n>1)},2:function(n){return+(n!=1)},3:function(n){return 0},4:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2},5:function(n){return n==0?0:n==1?1:n==2?2:n%100>=3&&n%100<=10?3:n%100>=11?4:5},6:function(n){return n==1?0:n>=2&&n<=4?1:2},7:function(n){return n==1?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2},8:function(n){return n==1?0:n==2?1:n!=8&&n!=11?2:3},9:function(n){return+(n>=2)},10:function(n){return n==1?0:n==2?1:n<7?2:n<11?3:4},11:function(n){return n==1||n==11?0:n==2||n==12?1:n>2&&n<20?2:3},12:function(n){return+(n%10!=1||n%100==11)},13:function(n){return+(n!==0)},14:function(n){return n==1?0:n==2?1:n==3?2:3},15:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&(n%100<10||n%100>=20)?1:2},16:function(n){return n%10==1&&n%100!=11?0:n!==0?1:2},17:function(n){return n==1||n%10==1&&n%100!=11?0:1},18:function(n){return n==0?0:n==1?1:2},19:function(n){return n==1?0:n==0||n%100>1&&n%100<11?1:n%100>10&&n%100<20?2:3},20:function(n){return n==1?0:n==0||n%100>0&&n%100<20?1:2},21:function(n){return n%100==1?1:n%100==2?2:n%100==3||n%100==4?3:0},22:function(n){return n==1?0:n==2?1:(n<0||n>10)&&n%10==0?2:3}};const nonIntlVersions=["v1","v2","v3"],intlVersions=["v4"],suffixesOrder={zero:0,one:1,two:2,few:3,many:4,other:5};function createRules(){const n={};return sets.forEach(t=>{t.lngs.forEach(e=>{n[e]={numbers:t.nr,plurals:_rulesPluralsTypes[t.fc]}})}),n}class PluralResolver{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=e,this.logger=baseLogger.create("pluralResolver"),(!this.options.compatibilityJSON||intlVersions.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=createRules()}addRule(t,e){this.rules[t]=e}getRule(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(getCleanedCode(t),{type:e.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i=this.getRule(t,e);return this.shouldUseIntlApi()?i&&i.resolvedOptions().pluralCategories.length>1:i&&i.numbers.length>1}getPluralFormsOfKey(t,e){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,i).map(r=>`${e}${r}`)}getSuffixes(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i=this.getRule(t,e);return i?this.shouldUseIntlApi()?i.resolvedOptions().pluralCategories.sort((r,a)=>suffixesOrder[r]-suffixesOrder[a]).map(r=>`${this.options.prepend}${e.ordinal?`ordinal${this.options.prepend}`:""}${r}`):i.numbers.map(r=>this.getSuffix(t,r,e)):[]}getSuffix(t,e){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const r=this.getRule(t,i);return r?this.shouldUseIntlApi()?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(e)}`:this.getSuffixRetroCompatible(r,e):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,e){const i=t.noAbs?t.plurals(e):t.plurals(Math.abs(e));let r=t.numbers[i];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(r===2?r="plural":r===1&&(r=""));const a=()=>this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString();return this.options.compatibilityJSON==="v1"?r===1?"":typeof r=="number"?`_plural_${r.toString()}`:a():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?a():this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString()}shouldUseIntlApi(){return!nonIntlVersions.includes(this.options.compatibilityJSON)}}function deepFindWithDefaults(n,t,e){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=getPathWithDefaults(n,t,e);return!a&&r&&typeof e=="string"&&(a=deepFind(n,e,i),a===void 0&&(a=deepFind(t,e,i))),a}class Interpolator{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=baseLogger.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(e=>e),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const e=t.interpolation;this.escape=e.escape!==void 0?e.escape:escape$1,this.escapeValue=e.escapeValue!==void 0?e.escapeValue:!0,this.useRawValueToEscape=e.useRawValueToEscape!==void 0?e.useRawValueToEscape:!1,this.prefix=e.prefix?regexEscape(e.prefix):e.prefixEscaped||"{{",this.suffix=e.suffix?regexEscape(e.suffix):e.suffixEscaped||"}}",this.formatSeparator=e.formatSeparator?e.formatSeparator:e.formatSeparator||",",this.unescapePrefix=e.unescapeSuffix?"":e.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":e.unescapeSuffix||"",this.nestingPrefix=e.nestingPrefix?regexEscape(e.nestingPrefix):e.nestingPrefixEscaped||regexEscape("$t("),this.nestingSuffix=e.nestingSuffix?regexEscape(e.nestingSuffix):e.nestingSuffixEscaped||regexEscape(")"),this.nestingOptionsSeparator=e.nestingOptionsSeparator?e.nestingOptionsSeparator:e.nestingOptionsSeparator||",",this.maxReplaces=e.maxReplaces?e.maxReplaces:1e3,this.alwaysFormat=e.alwaysFormat!==void 0?e.alwaysFormat:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=`${this.prefix}(.+?)${this.suffix}`;this.regexp=new RegExp(t,"g");const e=`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;this.regexpUnescape=new RegExp(e,"g");const i=`${this.nestingPrefix}(.+?)${this.nestingSuffix}`;this.nestingRegexp=new RegExp(i,"g")}interpolate(t,e,i,r){let a,o,l;const u=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function d(w){return w.replace(/\$/g,"$$$$")}const m=w=>{if(w.indexOf(this.formatSeparator)<0){const S=deepFindWithDefaults(e,u,w,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(S,void 0,i,{...r,...e,interpolationkey:w}):S}const v=w.split(this.formatSeparator),E=v.shift().trim(),x=v.join(this.formatSeparator).trim();return this.format(deepFindWithDefaults(e,u,E,this.options.keySeparator,this.options.ignoreJSONStructure),x,i,{...r,...e,interpolationkey:E})};this.resetRegExp();const p=r&&r.missingInterpolationHandler||this.options.missingInterpolationHandler,_=r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:w=>d(w)},{regex:this.regexp,safeValue:w=>this.escapeValue?d(this.escape(w)):d(w)}].forEach(w=>{for(l=0;a=w.regex.exec(t);){const v=a[1].trim();if(o=m(v),o===void 0)if(typeof p=="function"){const x=p(t,a,r);o=typeof x=="string"?x:""}else if(r&&Object.prototype.hasOwnProperty.call(r,v))o="";else if(_){o=a[0];continue}else this.logger.warn(`missed to pass in variable ${v} for interpolating ${t}`),o="";else typeof o!="string"&&!this.useRawValueToEscape&&(o=makeString(o));const E=w.safeValue(o);if(t=t.replace(a[0],E),_?(w.regex.lastIndex+=o.length,w.regex.lastIndex-=a[0].length):w.regex.lastIndex=0,l++,l>=this.maxReplaces)break}}),t}nest(t,e){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r,a,o;function l(u,d){const m=this.nestingOptionsSeparator;if(u.indexOf(m)<0)return u;const p=u.split(new RegExp(`${m}[ ]*{`));let _=`{${p[1]}`;u=p[0],_=this.interpolate(_,o);const y=_.match(/'/g),w=_.match(/"/g);(y&&y.length%2===0&&!w||w.length%2!==0)&&(_=_.replace(/'/g,'"'));try{o=JSON.parse(_),d&&(o={...d,...o})}catch(v){return this.logger.warn(`failed parsing options string in nesting for key ${u}`,v),`${u}${m}${_}`}return delete o.defaultValue,u}for(;r=this.nestingRegexp.exec(t);){let u=[];o={...i},o=o.replace&&typeof o.replace!="string"?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let d=!1;if(r[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(r[1])){const m=r[1].split(this.formatSeparator).map(p=>p.trim());r[1]=m.shift(),u=m,d=!0}if(a=e(l.call(this,r[1].trim(),o),o),a&&r[0]===t&&typeof a!="string")return a;typeof a!="string"&&(a=makeString(a)),a||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${t}`),a=""),d&&(a=u.reduce((m,p)=>this.format(m,p,i.lng,{...i,interpolationkey:r[1].trim()}),a.trim())),t=t.replace(r[0],a),this.regexp.lastIndex=0}return t}}function parseFormatStr(n){let t=n.toLowerCase().trim();const e={};if(n.indexOf("(")>-1){const i=n.split("(");t=i[0].toLowerCase().trim();const r=i[1].substring(0,i[1].length-1);t==="currency"&&r.indexOf(":")<0?e.currency||(e.currency=r.trim()):t==="relativetime"&&r.indexOf(":")<0?e.range||(e.range=r.trim()):r.split(";").forEach(o=>{if(!o)return;const[l,...u]=o.split(":"),d=u.join(":").trim().replace(/^'+|'+$/g,"");e[l.trim()]||(e[l.trim()]=d),d==="false"&&(e[l.trim()]=!1),d==="true"&&(e[l.trim()]=!0),isNaN(d)||(e[l.trim()]=parseInt(d,10))})}return{formatName:t,formatOptions:e}}function createCachedFormatter(n){const t={};return function(i,r,a){const o=r+JSON.stringify(a);let l=t[o];return l||(l=n(getCleanedCode(r),a),t[o]=l),l(i)}}class Formatter{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=baseLogger.create("formatter"),this.options=t,this.formats={number:createCachedFormatter((e,i)=>{const r=new Intl.NumberFormat(e,{...i});return a=>r.format(a)}),currency:createCachedFormatter((e,i)=>{const r=new Intl.NumberFormat(e,{...i,style:"currency"});return a=>r.format(a)}),datetime:createCachedFormatter((e,i)=>{const r=new Intl.DateTimeFormat(e,{...i});return a=>r.format(a)}),relativetime:createCachedFormatter((e,i)=>{const r=new Intl.RelativeTimeFormat(e,{...i});return a=>r.format(a,i.range||"day")}),list:createCachedFormatter((e,i)=>{const r=new Intl.ListFormat(e,{...i});return a=>r.format(a)})},this.init(t)}init(t){const i=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=i.formatSeparator?i.formatSeparator:i.formatSeparator||","}add(t,e){this.formats[t.toLowerCase().trim()]=e}addCached(t,e){this.formats[t.toLowerCase().trim()]=createCachedFormatter(e)}format(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return e.split(this.formatSeparator).reduce((l,u)=>{const{formatName:d,formatOptions:m}=parseFormatStr(u);if(this.formats[d]){let p=l;try{const _=r&&r.formatParams&&r.formatParams[r.interpolationkey]||{},y=_.locale||_.lng||r.locale||r.lng||i;p=this.formats[d](l,y,{...m,...r,..._})}catch(_){this.logger.warn(_)}return p}else this.logger.warn(`there was no format function for ${d}`);return l},t)}}function removePending(n,t){n.pending[t]!==void 0&&(delete n.pending[t],n.pendingCount--)}class Connector extends EventEmitter{constructor(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=e,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=baseLogger.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(i,r.backend,r)}queueLoad(t,e,i,r){const a={},o={},l={},u={};return t.forEach(d=>{let m=!0;e.forEach(p=>{const _=`${d}|${p}`;!i.reload&&this.store.hasResourceBundle(d,p)?this.state[_]=2:this.state[_]<0||(this.state[_]===1?o[_]===void 0&&(o[_]=!0):(this.state[_]=1,m=!1,o[_]===void 0&&(o[_]=!0),a[_]===void 0&&(a[_]=!0),u[p]===void 0&&(u[p]=!0)))}),m||(l[d]=!0)}),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(l),toLoadNamespaces:Object.keys(u)}}loaded(t,e,i){const r=t.split("|"),a=r[0],o=r[1];e&&this.emit("failedLoading",a,o,e),i&&this.store.addResourceBundle(a,o,i),this.state[t]=e?-1:2;const l={};this.queue.forEach(u=>{pushPath(u.loaded,[a],o),removePending(u,t),e&&u.errors.push(e),u.pendingCount===0&&!u.done&&(Object.keys(u.loaded).forEach(d=>{l[d]||(l[d]={});const m=u.loaded[d];m.length&&m.forEach(p=>{l[d][p]===void 0&&(l[d][p]=!0)})}),u.done=!0,u.errors.length?u.callback(u.errors):u.callback())}),this.emit("loaded",l),this.queue=this.queue.filter(u=>!u.done)}read(t,e,i){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:e,fcName:i,tried:r,wait:a,callback:o});return}this.readingCalls++;const l=(d,m)=>{if(this.readingCalls--,this.waitingReads.length>0){const p=this.waitingReads.shift();this.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(d&&m&&r{this.read.call(this,t,e,i,r+1,a*2,o)},a);return}o(d,m)},u=this.backend[i].bind(this.backend);if(u.length===2){try{const d=u(t,e);d&&typeof d.then=="function"?d.then(m=>l(null,m)).catch(l):l(null,d)}catch(d){l(d)}return}return u(t,e,l)}prepareLoading(t,e){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof e=="string"&&(e=[e]);const a=this.queueLoad(t,e,i,r);if(!a.toLoad.length)return a.pending.length||r(),null;a.toLoad.forEach(o=>{this.loadOne(o)})}load(t,e,i){this.prepareLoading(t,e,{},i)}reload(t,e,i){this.prepareLoading(t,e,{reload:!0},i)}loadOne(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const i=t.split("|"),r=i[0],a=i[1];this.read(r,a,"read",void 0,void 0,(o,l)=>{o&&this.logger.warn(`${e}loading namespace ${a} for language ${r} failed`,o),!o&&l&&this.logger.log(`${e}loaded namespace ${a} for language ${r}`,l),this.loaded(t,o,l)})}saveMissing(t,e,i,r,a){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},l=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(e)){this.logger.warn(`did not save key "${i}" as the namespace "${e}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if(this.backend&&this.backend.create){const u={...o,isUpdate:a},d=this.backend.create.bind(this.backend);if(d.length<6)try{let m;d.length===5?m=d(t,e,i,r,u):m=d(t,e,i,r),m&&typeof m.then=="function"?m.then(p=>l(null,p)).catch(l):l(null,m)}catch(m){l(m)}else d(t,e,i,r,l,u)}!t||!t[0]||this.store.addResource(t[0],e,i,r)}}}function get(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){let e={};if(typeof t[1]=="object"&&(e=t[1]),typeof t[1]=="string"&&(e.defaultValue=t[1]),typeof t[2]=="string"&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const i=t[3]||t[2];Object.keys(i).forEach(r=>{e[r]=i[r]})}return e},interpolation:{escapeValue:!0,format:n=>n,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function transformOptions(n){return typeof n.ns=="string"&&(n.ns=[n.ns]),typeof n.fallbackLng=="string"&&(n.fallbackLng=[n.fallbackLng]),typeof n.fallbackNS=="string"&&(n.fallbackNS=[n.fallbackNS]),n.supportedLngs&&n.supportedLngs.indexOf("cimode")<0&&(n.supportedLngs=n.supportedLngs.concat(["cimode"])),n}function noop$1(){}function bindMemberFunctions(n){Object.getOwnPropertyNames(Object.getPrototypeOf(n)).forEach(e=>{typeof n[e]=="function"&&(n[e]=n[e].bind(n))})}class I18n extends EventEmitter{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;if(super(),this.options=transformOptions(t),this.services={},this.logger=baseLogger,this.modules={external:[]},bindMemberFunctions(this),e&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,e),this;setTimeout(()=>{this.init(t,e)},0)}}init(){var t=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;typeof e=="function"&&(i=e,e={}),!e.defaultNS&&e.defaultNS!==!1&&e.ns&&(typeof e.ns=="string"?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=get();this.options={...r,...this.options,...transformOptions(e)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...r.interpolation,...this.options.interpolation}),e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator);function a(m){return m?typeof m=="function"?new m:m:null}if(!this.options.isClone){this.modules.logger?baseLogger.init(a(this.modules.logger),this.options):baseLogger.init(null,this.options);let m;this.modules.formatter?m=this.modules.formatter:typeof Intl<"u"&&(m=Formatter);const p=new LanguageUtil(this.options);this.store=new ResourceStore(this.options.resources,this.options);const _=this.services;_.logger=baseLogger,_.resourceStore=this.store,_.languageUtils=p,_.pluralResolver=new PluralResolver(p,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),m&&(!this.options.interpolation.format||this.options.interpolation.format===r.interpolation.format)&&(_.formatter=a(m),_.formatter.init(_,this.options),this.options.interpolation.format=_.formatter.format.bind(_.formatter)),_.interpolator=new Interpolator(this.options),_.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},_.backendConnector=new Connector(a(this.modules.backend),_.resourceStore,_,this.options),_.backendConnector.on("*",function(y){for(var w=arguments.length,v=new Array(w>1?w-1:0),E=1;E1?w-1:0),E=1;E{y.init&&y.init(this)})}if(this.format=this.options.interpolation.format,i||(i=noop$1),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const m=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);m.length>0&&m[0]!=="dev"&&(this.options.lng=m[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(m=>{this[m]=function(){return t.store[m](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(m=>{this[m]=function(){return t.store[m](...arguments),t}});const u=defer(),d=()=>{const m=(p,_)=>{this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),u.resolve(_),i(p,_)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return m(null,this.t.bind(this));this.changeLanguage(this.options.lng,m)};return this.options.resources||!this.options.initImmediate?d():setTimeout(d,0),u}loadResources(t){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:noop$1;const r=typeof t=="string"?t:this.language;if(typeof t=="function"&&(i=t),!this.options.resources||this.options.partialBundledLanguages){if(r&&r.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const a=[],o=l=>{if(!l||l==="cimode")return;this.services.languageUtils.toResolveHierarchy(l).forEach(d=>{d!=="cimode"&&a.indexOf(d)<0&&a.push(d)})};r?o(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(u=>o(u)),this.options.preload&&this.options.preload.forEach(l=>o(l)),this.services.backendConnector.load(a,this.options.ns,l=>{!l&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(l)})}else i(null)}reloadResources(t,e,i){const r=defer();return t||(t=this.languages),e||(e=this.options.ns),i||(i=noop$1),this.services.backendConnector.reload(t,e,a=>{r.resolve(),i(a)}),r}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&postProcessor.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}}changeLanguage(t,e){var i=this;this.isLanguageChangingTo=t;const r=defer();this.emit("languageChanging",t);const a=u=>{this.language=u,this.languages=this.services.languageUtils.toResolveHierarchy(u),this.resolvedLanguage=void 0,this.setResolvedLanguage(u)},o=(u,d)=>{d?(a(d),this.translator.changeLanguage(d),this.isLanguageChangingTo=void 0,this.emit("languageChanged",d),this.logger.log("languageChanged",d)):this.isLanguageChangingTo=void 0,r.resolve(function(){return i.t(...arguments)}),e&&e(u,function(){return i.t(...arguments)})},l=u=>{!t&&!u&&this.services.languageDetector&&(u=[]);const d=typeof u=="string"?u:this.services.languageUtils.getBestMatchFromCodes(u);d&&(this.language||a(d),this.translator.language||this.translator.changeLanguage(d),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(d)),this.loadResources(d,m=>{o(m,d)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?l(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(l):this.services.languageDetector.detect(l):l(t),r}getFixedT(t,e,i){var r=this;const a=function(o,l){let u;if(typeof l!="object"){for(var d=arguments.length,m=new Array(d>2?d-2:0),p=2;p`${u.keyPrefix}${_}${w}`):y=u.keyPrefix?`${u.keyPrefix}${_}${o}`:o,r.t(y,u)};return typeof t=="string"?a.lng=t:a.lngs=t,a.ns=e,a.keyPrefix=i,a}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=e.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const o=(l,u)=>{const d=this.services.backendConnector.state[`${l}|${u}`];return d===-1||d===2};if(e.precheck){const l=e.precheck(this,o);if(l!==void 0)return l}return!!(this.hasResourceBundle(i,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(i,t)&&(!r||o(a,t)))}loadNamespaces(t,e){const i=defer();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),e&&e(r)}),i):(e&&e(),Promise.resolve())}loadLanguages(t,e){const i=defer();typeof t=="string"&&(t=[t]);const r=this.options.preload||[],a=t.filter(o=>r.indexOf(o)<0);return a.length?(this.options.preload=r.concat(a),this.loadResources(o=>{i.resolve(),e&&e(o)}),i):(e&&e(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const e=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=this.services&&this.services.languageUtils||new LanguageUtil(get());return e.indexOf(i.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;return new I18n(t,e)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:noop$1;const i=t.forkResourceStore;i&&delete t.forkResourceStore;const r={...this.options,...t,isClone:!0},a=new I18n(r);return(t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),["store","services","language"].forEach(l=>{a[l]=this[l]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},i&&(a.store=new ResourceStore(this.store.data,r),a.services.resourceStore=a.store),a.translator=new Translator(a.services,r),a.translator.on("*",function(l){for(var u=arguments.length,d=new Array(u>1?u-1:0),m=1;m1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};_classCallCheck$1(this,n),this.backends=[],this.type="backend",this.allOptions=i,this.init(t,e)}return _createClass$1(n,[{key:"init",value:function(e){var i=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=defaults$2(r,this.options||{},getDefaults$2()),this.allOptions=a,this.options.backends&&this.options.backends.forEach(function(o,l){i.backends[l]=i.backends[l]||createClassOnDemand(o),i.backends[l].init(e,i.options.backendOptions&&i.options.backendOptions[l]||{},a)}),this.services&&this.options.reloadInterval&&setInterval(function(){return i.reload()},this.options.reloadInterval)}},{key:"read",value:function(e,i,r){var a=this,o=this.backends.length,l=function d(m){if(m>=o)return r(new Error("non of the backend loaded data",!0));var p=m===o-1,_=a.options.handleEmptyResourcesAsFailed&&!p?0:-1,y=a.backends[m];y.read?handleCorrectReadFunction(y,e,i,function(w,v,E){if(!w&&v&&Object.keys(v).length>_){if(r(null,v,m),u(m-1,v),y.save&&a.options.cacheHitMode&&["refresh","refreshAndUpdateStore"].indexOf(a.options.cacheHitMode)>-1){if(E&&a.options.refreshExpirationTime&&E+a.options.refreshExpirationTime>Date.now())return;var x=a.backends[m+1];x&&x.read&&handleCorrectReadFunction(x,e,i,function(S,M){S||M&&(Object.keys(M).length<=_||(u(m,M),a.options.cacheHitMode==="refreshAndUpdateStore"&&a.services&&a.services.resourceStore&&a.services.resourceStore.addResourceBundle(e,i,M)))})}}else d(m+1)}):d(m+1)},u=function d(m,p){if(!(m<0)){var _=a.backends[m];_.save&&_.save(e,i,p),d(m-1,p)}};l(0)}},{key:"create",value:function(e,i,r,a){var o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:function(){},l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};this.backends.forEach(function(u){if(u.create){var d=u.create.bind(u);if(d.length<6){try{var m;d.length===5?m=d(e,i,r,a,l):m=d(e,i,r,a),m&&typeof m.then=="function"?m.then(function(p){return o(null,p)}).catch(o):o(null,m)}catch(p){o(p)}return}d(e,i,r,a,o,l)}})}},{key:"reload",value:function(){var e=this,i=this.services,r=i.backendConnector,a=i.languageUtils,o=i.logger,l=r.language;if(!(l&&l.toLowerCase()==="cimode")){var u=[],d=function(p){var _=a.toResolveHierarchy(p);_.forEach(function(y){u.indexOf(y)<0&&u.push(y)})};d(l),this.allOptions.preload&&this.allOptions.preload.forEach(function(m){return d(m)}),u.forEach(function(m){e.allOptions.ns.forEach(function(p){r.read(m,p,"read",null,null,function(_,y){_&&o.warn("loading namespace ".concat(p," for language ").concat(m," failed"),_),!_&&y&&o.log("loaded namespace ".concat(p," for language ").concat(m),y),r.loaded("".concat(m,"|").concat(p),_,y)})})})}}}]),n}();Backend$1.type="backend";function _typeof$2(n){"@babel/helpers - typeof";return _typeof$2=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$2(n)}var arr=[],each$1=arr.forEach,slice=arr.slice;function defaults$1(n){return each$1.call(slice.call(arguments,1),function(t){if(t)for(var e in t)n[e]===void 0&&(n[e]=t[e])}),n}function hasXMLHttpRequest(){return typeof XMLHttpRequest=="function"||(typeof XMLHttpRequest>"u"?"undefined":_typeof$2(XMLHttpRequest))==="object"}function isPromise(n){return!!n&&typeof n.then=="function"}function makePromise(n){return isPromise(n)?n:Promise.resolve(n)}function commonjsRequire(n){throw new Error('Could not dynamically require "'+n+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var getFetch$1={exports:{}},browserPonyfill={exports:{}},hasRequiredBrowserPonyfill;function requireBrowserPonyfill(){return hasRequiredBrowserPonyfill||(hasRequiredBrowserPonyfill=1,function(n,t){var e=typeof globalThis<"u"&&globalThis||typeof self<"u"&&self||typeof commonjsGlobal<"u"&&commonjsGlobal,i=function(){function a(){this.fetch=!1,this.DOMException=e.DOMException}return a.prototype=e,new a}();(function(a){(function(o){var l=typeof a<"u"&&a||typeof self<"u"&&self||typeof l<"u"&&l,u={searchParams:"URLSearchParams"in l,iterable:"Symbol"in l&&"iterator"in Symbol,blob:"FileReader"in l&&"Blob"in l&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in l,arrayBuffer:"ArrayBuffer"in l};function d($){return $&&DataView.prototype.isPrototypeOf($)}if(u.arrayBuffer)var m=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],p=ArrayBuffer.isView||function($){return $&&m.indexOf(Object.prototype.toString.call($))>-1};function _($){if(typeof $!="string"&&($=String($)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test($)||$==="")throw new TypeError('Invalid character in header field name: "'+$+'"');return $.toLowerCase()}function y($){return typeof $!="string"&&($=String($)),$}function w($){var N={next:function(){var V=$.shift();return{done:V===void 0,value:V}}};return u.iterable&&(N[Symbol.iterator]=function(){return N}),N}function v($){this.map={},$ instanceof v?$.forEach(function(N,V){this.append(V,N)},this):Array.isArray($)?$.forEach(function(N){this.append(N[0],N[1])},this):$&&Object.getOwnPropertyNames($).forEach(function(N){this.append(N,$[N])},this)}v.prototype.append=function($,N){$=_($),N=y(N);var V=this.map[$];this.map[$]=V?V+", "+N:N},v.prototype.delete=function($){delete this.map[_($)]},v.prototype.get=function($){return $=_($),this.has($)?this.map[$]:null},v.prototype.has=function($){return this.map.hasOwnProperty(_($))},v.prototype.set=function($,N){this.map[_($)]=y(N)},v.prototype.forEach=function($,N){for(var V in this.map)this.map.hasOwnProperty(V)&&$.call(N,this.map[V],V,this)},v.prototype.keys=function(){var $=[];return this.forEach(function(N,V){$.push(V)}),w($)},v.prototype.values=function(){var $=[];return this.forEach(function(N){$.push(N)}),w($)},v.prototype.entries=function(){var $=[];return this.forEach(function(N,V){$.push([V,N])}),w($)},u.iterable&&(v.prototype[Symbol.iterator]=v.prototype.entries);function E($){if($.bodyUsed)return Promise.reject(new TypeError("Already read"));$.bodyUsed=!0}function x($){return new Promise(function(N,V){$.onload=function(){N($.result)},$.onerror=function(){V($.error)}})}function S($){var N=new FileReader,V=x(N);return N.readAsArrayBuffer($),V}function M($){var N=new FileReader,V=x(N);return N.readAsText($),V}function k($){for(var N=new Uint8Array($),V=new Array(N.length),H=0;H-1?N:$}function W($,N){if(!(this instanceof W))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');N=N||{};var V=N.body;if($ instanceof W){if($.bodyUsed)throw new TypeError("Already read");this.url=$.url,this.credentials=$.credentials,N.headers||(this.headers=new v($.headers)),this.method=$.method,this.mode=$.mode,this.signal=$.signal,!V&&$._bodyInit!=null&&(V=$._bodyInit,$.bodyUsed=!0)}else this.url=String($);if(this.credentials=N.credentials||this.credentials||"same-origin",(N.headers||!this.headers)&&(this.headers=new v(N.headers)),this.method=R(N.method||this.method||"GET"),this.mode=N.mode||this.mode||null,this.signal=N.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&V)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(V),(this.method==="GET"||this.method==="HEAD")&&(N.cache==="no-store"||N.cache==="no-cache")){var H=/([?&])_=[^&]*/;if(H.test(this.url))this.url=this.url.replace(H,"$1_="+new Date().getTime());else{var X=/\?/;this.url+=(X.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}W.prototype.clone=function(){return new W(this,{body:this._bodyInit})};function K($){var N=new FormData;return $.trim().split("&").forEach(function(V){if(V){var H=V.split("="),X=H.shift().replace(/\+/g," "),B=H.join("=").replace(/\+/g," ");N.append(decodeURIComponent(X),decodeURIComponent(B))}}),N}function Y($){var N=new v,V=$.replace(/\r?\n[\t ]+/g," ");return V.split("\r").map(function(H){return H.indexOf(` `)===0?H.substr(1,H.length):H}).forEach(function(H){var X=H.split(":"),B=X.shift().trim();if(B){var lt=X.join(":").trim();N.append(B,lt)}}),N}I.call(W.prototype);function q($,N){if(!(this instanceof q))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');N||(N={}),this.type="default",this.status=N.status===void 0?200:N.status,this.ok=this.status>=200&&this.status<300,this.statusText=N.statusText===void 0?"":""+N.statusText,this.headers=new v(N.headers),this.url=N.url||"",this._initBody($)}I.call(q.prototype),q.prototype.clone=function(){return new q(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new v(this.headers),url:this.url})},q.error=function(){var $=new q(null,{status:0,statusText:""});return $.type="error",$};var J=[301,302,303,307,308];q.redirect=function($,N){if(J.indexOf(N)===-1)throw new RangeError("Invalid status code");return new q(null,{status:N,headers:{location:$}})},o.DOMException=l.DOMException;try{new o.DOMException}catch{o.DOMException=function(N,V){this.message=N,this.name=V;var H=Error(N);this.stack=H.stack},o.DOMException.prototype=Object.create(Error.prototype),o.DOMException.prototype.constructor=o.DOMException}function nt($,N){return new Promise(function(V,H){var X=new W($,N);if(X.signal&&X.signal.aborted)return H(new o.DOMException("Aborted","AbortError"));var B=new XMLHttpRequest;function lt(){B.abort()}B.onload=function(){var st={status:B.status,statusText:B.statusText,headers:Y(B.getAllResponseHeaders()||"")};st.url="responseURL"in B?B.responseURL:st.headers.get("X-Request-URL");var rt="response"in B?B.response:B.responseText;setTimeout(function(){V(new q(rt,st))},0)},B.onerror=function(){setTimeout(function(){H(new TypeError("Network request failed"))},0)},B.ontimeout=function(){setTimeout(function(){H(new TypeError("Network request failed"))},0)},B.onabort=function(){setTimeout(function(){H(new o.DOMException("Aborted","AbortError"))},0)};function dt(st){try{return st===""&&l.location.href?l.location.href:st}catch{return st}}B.open(X.method,dt(X.url),!0),X.credentials==="include"?B.withCredentials=!0:X.credentials==="omit"&&(B.withCredentials=!1),"responseType"in B&&(u.blob?B.responseType="blob":u.arrayBuffer&&X.headers.get("Content-Type")&&X.headers.get("Content-Type").indexOf("application/octet-stream")!==-1&&(B.responseType="arraybuffer")),N&&typeof N.headers=="object"&&!(N.headers instanceof v)?Object.getOwnPropertyNames(N.headers).forEach(function(st){B.setRequestHeader(st,y(N.headers[st]))}):X.headers.forEach(function(st,rt){B.setRequestHeader(rt,st)}),X.signal&&(X.signal.addEventListener("abort",lt),B.onreadystatechange=function(){B.readyState===4&&X.signal.removeEventListener("abort",lt)}),B.send(typeof X._bodyInit>"u"?null:X._bodyInit)})}return nt.polyfill=!0,l.fetch||(l.fetch=nt,l.Headers=v,l.Request=W,l.Response=q),o.Headers=v,o.Request=W,o.Response=q,o.fetch=nt,o})({})})(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=e.fetch?e:i;t=r.fetch,t.default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,n.exports=t}(browserPonyfill,browserPonyfill.exports)),browserPonyfill.exports}(function(n,t){var e;if(typeof fetch=="function"&&(typeof commonjsGlobal<"u"&&commonjsGlobal.fetch?e=commonjsGlobal.fetch:typeof window<"u"&&window.fetch?e=window.fetch:e=fetch),typeof commonjsRequire<"u"&&(typeof window>"u"||typeof window.document>"u")){var i=e||requireBrowserPonyfill();i.default&&(i=i.default),t.default=i,n.exports=t.default}})(getFetch$1,getFetch$1.exports);var getFetchExports=getFetch$1.exports;const getFetch=getDefaultExportFromCjs(getFetchExports),fetchNode=_mergeNamespaces({__proto__:null,default:getFetch},[getFetchExports]);function _typeof$1(n){"@babel/helpers - typeof";return _typeof$1=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$1(n)}var fetchApi;typeof fetch=="function"&&(typeof global<"u"&&global.fetch?fetchApi=global.fetch:typeof window<"u"&&window.fetch?fetchApi=window.fetch:fetchApi=fetch);var XmlHttpRequestApi;hasXMLHttpRequest()&&(typeof global<"u"&&global.XMLHttpRequest?XmlHttpRequestApi=global.XMLHttpRequest:typeof window<"u"&&window.XMLHttpRequest&&(XmlHttpRequestApi=window.XMLHttpRequest));var ActiveXObjectApi;typeof ActiveXObject=="function"&&(typeof global<"u"&&global.ActiveXObject?ActiveXObjectApi=global.ActiveXObject:typeof window<"u"&&window.ActiveXObject&&(ActiveXObjectApi=window.ActiveXObject));!fetchApi&&fetchNode&&!XmlHttpRequestApi&&!ActiveXObjectApi&&(fetchApi=getFetch||fetchNode);typeof fetchApi!="function"&&(fetchApi=void 0);var addQueryString=function n(t,e){if(e&&_typeof$1(e)==="object"){var i="";for(var r in e)i+="&"+encodeURIComponent(r)+"="+encodeURIComponent(e[r]);if(!i)return t;t=t+(t.indexOf("?")!==-1?"&":"?")+i.slice(1)}return t},fetchIt=function n(t,e,i){var r=function(o){if(!o.ok)return i(o.statusText||"Error",{status:o.status});o.text().then(function(l){i(null,{status:o.status,data:l})}).catch(i)};typeof fetch=="function"?fetch(t,e).then(r).catch(i):fetchApi(t,e).then(r).catch(i)},omitFetchOptions=!1,requestWithFetch=function n(t,e,i,r){t.queryStringParams&&(e=addQueryString(e,t.queryStringParams));var a=defaults$1({},typeof t.customHeaders=="function"?t.customHeaders():t.customHeaders);typeof window>"u"&&typeof global<"u"&&typeof global.process<"u"&&global.process.versions&&global.process.versions.node&&(a["User-Agent"]="i18next-http-backend (node/".concat(global.process.version,"; ").concat(global.process.platform," ").concat(global.process.arch,")")),i&&(a["Content-Type"]="application/json");var o=typeof t.requestOptions=="function"?t.requestOptions(i):t.requestOptions,l=defaults$1({method:i?"POST":"GET",body:i?t.stringify(i):void 0,headers:a},omitFetchOptions?{}:o);try{fetchIt(e,l,r)}catch(u){if(!o||Object.keys(o).length===0||!u.message||u.message.indexOf("not implemented")<0)return r(u);try{Object.keys(o).forEach(function(d){delete l[d]}),fetchIt(e,l,r),omitFetchOptions=!0}catch(d){r(d)}}},requestWithXmlHttpRequest=function n(t,e,i,r){i&&_typeof$1(i)==="object"&&(i=addQueryString("",i).slice(1)),t.queryStringParams&&(e=addQueryString(e,t.queryStringParams));try{var a;XmlHttpRequestApi?a=new XmlHttpRequestApi:a=new ActiveXObjectApi("MSXML2.XMLHTTP.3.0"),a.open(i?"POST":"GET",e,1),t.crossDomain||a.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.withCredentials=!!t.withCredentials,i&&a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.overrideMimeType&&a.overrideMimeType("application/json");var o=t.customHeaders;if(o=typeof o=="function"?o():o,o)for(var l in o)a.setRequestHeader(l,o[l]);a.onreadystatechange=function(){a.readyState>3&&r(a.status>=400?a.statusText:null,{status:a.status,data:a.responseText})},a.send(i)}catch(u){console&&console.log(u)}},request=function n(t,e,i,r){if(typeof i=="function"&&(r=i,i=void 0),r=r||function(){},fetchApi&&e.indexOf("file:")!==0)return requestWithFetch(t,e,i,r);if(hasXMLHttpRequest()||typeof ActiveXObject=="function")return requestWithXmlHttpRequest(t,e,i,r);r(new Error("No fetch and no xhr implementation found!"))};function _typeof(n){"@babel/helpers - typeof";return _typeof=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(n)}function _classCallCheck(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(n,t){for(var e=0;e1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};_classCallCheck(this,n),this.services=t,this.options=e,this.allOptions=i,this.type="backend",this.init(t,e,i)}return _createClass(n,[{key:"init",value:function(e){var i=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=defaults$1(r,this.options||{},getDefaults$1()),this.allOptions=a,this.services&&this.options.reloadInterval&&setInterval(function(){return i.reload()},this.options.reloadInterval)}},{key:"readMulti",value:function(e,i,r){this._readAny(e,e,i,i,r)}},{key:"read",value:function(e,i,r){this._readAny([e],e,[i],i,r)}},{key:"_readAny",value:function(e,i,r,a,o){var l=this,u=this.options.loadPath;typeof this.options.loadPath=="function"&&(u=this.options.loadPath(e,r)),u=makePromise(u),u.then(function(d){if(!d)return o(null,{});var m=l.services.interpolator.interpolate(d,{lng:e.join("+"),ns:r.join("+")});l.loadUrl(m,o,i,a)})}},{key:"loadUrl",value:function(e,i,r,a){var o=this,l=typeof r=="string"?[r]:r,u=typeof a=="string"?[a]:a,d=this.options.parseLoadPayload(l,u);this.options.request(this.options,e,d,function(m,p){if(p&&(p.status>=500&&p.status<600||!p.status))return i("failed loading "+e+"; status code: "+p.status,!0);if(p&&p.status>=400&&p.status<500)return i("failed loading "+e+"; status code: "+p.status,!1);if(!p&&m&&m.message&&m.message.indexOf("Failed to fetch")>-1)return i("failed loading "+e+": "+m.message,!0);if(m)return i(m,!1);var _,y;try{typeof p.data=="string"?_=o.options.parse(p.data,r,a):_=p.data}catch{y="failed parsing "+e+" to json"}if(y)return i(y,!1);i(null,_)})}},{key:"create",value:function(e,i,r,a,o){var l=this;if(this.options.addPath){typeof e=="string"&&(e=[e]);var u=this.options.parsePayload(i,r,a),d=0,m=[],p=[];e.forEach(function(_){var y=l.options.addPath;typeof l.options.addPath=="function"&&(y=l.options.addPath(_,i));var w=l.services.interpolator.interpolate(y,{lng:_,ns:i});l.options.request(l.options,w,u,function(v,E){d+=1,m.push(v),p.push(E),d===e.length&&typeof o=="function"&&o(m,p)})})}}},{key:"reload",value:function(){var e=this,i=this.services,r=i.backendConnector,a=i.languageUtils,o=i.logger,l=r.language;if(!(l&&l.toLowerCase()==="cimode")){var u=[],d=function(p){var _=a.toResolveHierarchy(p);_.forEach(function(y){u.indexOf(y)<0&&u.push(y)})};d(l),this.allOptions.preload&&this.allOptions.preload.forEach(function(m){return d(m)}),u.forEach(function(m){e.allOptions.ns.forEach(function(p){r.read(m,p,"read",null,null,function(_,y){_&&o.warn("loading namespace ".concat(p," for language ").concat(m," failed"),_),!_&&y&&o.log("loaded namespace ".concat(p," for language ").concat(m),y),r.loaded("".concat(m,"|").concat(p),_,y)})})})}}}]),n}();Backend.type="backend";function _defineProperty(n,t,e){return t=toPropertyKey(t),t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function ownKeys(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);t&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),e.push.apply(e,i)}return e}function _objectSpread(n){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{};_classCallCheck$1(this,n),this.init(t,e),this.type="backend"}return _createClass$1(n,[{key:"init",value:function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.services=e,this.options=_objectSpread(_objectSpread(_objectSpread({},getDefaults()),this.options),i),this.storage=new Storage(this.options)}},{key:"read",value:function(e,i,r){var a=Date.now();if(!this.storage.store)return r(null,null);var o=this.storage.getItem("".concat(this.options.prefix).concat(e,"-").concat(i));if(o){o=JSON.parse(o);var l=this.getVersion(e);if(o.i18nStamp&&o.i18nStamp+this.options.expirationTime>a&&l===o.i18nVersion){var u=o.i18nStamp;return delete o.i18nVersion,delete o.i18nStamp,r(null,o,u)}}return r(null,null)}},{key:"save",value:function(e,i,r){if(this.storage.store){r.i18nStamp=Date.now();var a=this.getVersion(e);a&&(r.i18nVersion=a),this.storage.setItem("".concat(this.options.prefix).concat(e,"-").concat(i),JSON.stringify(r))}}},{key:"getVersion",value:function(e){return this.options.versions[e]||this.options.defaultVersion}}]),n}();Cache.type="backend";const formatDistanceLocale$s={lessThanXSeconds:{one:"по-малко от секунда",other:"по-малко от {{count}} секунди"},xSeconds:{one:"1 секунда",other:"{{count}} секунди"},halfAMinute:"половин минута",lessThanXMinutes:{one:"по-малко от минута",other:"по-малко от {{count}} минути"},xMinutes:{one:"1 минута",other:"{{count}} минути"},aboutXHours:{one:"около час",other:"около {{count}} часа"},xHours:{one:"1 час",other:"{{count}} часа"},xDays:{one:"1 ден",other:"{{count}} дни"},aboutXWeeks:{one:"около седмица",other:"около {{count}} седмици"},xWeeks:{one:"1 седмица",other:"{{count}} седмици"},aboutXMonths:{one:"около месец",other:"около {{count}} месеца"},xMonths:{one:"1 месец",other:"{{count}} месеца"},aboutXYears:{one:"около година",other:"около {{count}} години"},xYears:{one:"1 година",other:"{{count}} години"},overXYears:{one:"над година",other:"над {{count}} години"},almostXYears:{one:"почти година",other:"почти {{count}} години"}},formatDistance$t=(n,t,e)=>{let i;const r=formatDistanceLocale$s[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"след "+i:"преди "+i:i},dateFormats$u={full:"EEEE, dd MMMM yyyy",long:"dd MMMM yyyy",medium:"dd MMM yyyy",short:"dd/MM/yyyy"},timeFormats$u={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"H:mm"},dateTimeFormats$u={any:"{{date}} {{time}}"},formatLong$u={date:buildFormatLongFn({formats:dateFormats$u,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$u,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$u,defaultWidth:"any"})},weekdays$1=["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"];function lastWeek$4(n){const t=weekdays$1[n];switch(n){case 0:case 3:case 6:return"'миналата "+t+" в' p";case 1:case 2:case 4:case 5:return"'миналия "+t+" в' p"}}function thisWeek$4(n){const t=weekdays$1[n];return n===2?"'във "+t+" в' p":"'в "+t+" в' p"}function nextWeek$4(n){const t=weekdays$1[n];switch(n){case 0:case 3:case 6:return"'следващата "+t+" в' p";case 1:case 2:case 4:case 5:return"'следващия "+t+" в' p"}}const lastWeekFormatToken=(n,t,e)=>{const i=toDate(n),r=i.getDay();return isSameWeek(i,t,e)?thisWeek$4(r):lastWeek$4(r)},nextWeekFormatToken=(n,t,e)=>{const i=toDate(n),r=i.getDay();return isSameWeek(i,t,e)?thisWeek$4(r):nextWeek$4(r)},formatRelativeLocale$t={lastWeek:lastWeekFormatToken,yesterday:"'вчера в' p",today:"'днес в' p",tomorrow:"'утре в' p",nextWeek:nextWeekFormatToken,other:"P"},formatRelative$t=(n,t,e,i)=>{const r=formatRelativeLocale$t[n];return typeof r=="function"?r(t,e,i):r},eraValues$t={narrow:["пр.н.е.","н.е."],abbreviated:["преди н. е.","н. е."],wide:["преди новата ера","новата ера"]},quarterValues$t={narrow:["1","2","3","4"],abbreviated:["1-во тримес.","2-ро тримес.","3-то тримес.","4-то тримес."],wide:["1-во тримесечие","2-ро тримесечие","3-то тримесечие","4-то тримесечие"]},monthValues$t={abbreviated:["яну","фев","мар","апр","май","юни","юли","авг","сеп","окт","ное","дек"],wide:["януари","февруари","март","април","май","юни","юли","август","септември","октомври","ноември","декември"]},dayValues$t={narrow:["Н","П","В","С","Ч","П","С"],short:["нд","пн","вт","ср","чт","пт","сб"],abbreviated:["нед","пон","вто","сря","чет","пет","съб"],wide:["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"]},dayPeriodValues$t={wide:{am:"преди обяд",pm:"след обяд",midnight:"в полунощ",noon:"на обяд",morning:"сутринта",afternoon:"следобед",evening:"вечерта",night:"през нощта"}};function isFeminine(n){return n==="year"||n==="week"||n==="minute"||n==="second"}function isNeuter(n){return n==="quarter"}function numberWithSuffix(n,t,e,i,r){const a=isNeuter(t)?r:isFeminine(t)?i:e;return n+"-"+a}const ordinalNumber$t=(n,t)=>{const e=Number(n),i=t==null?void 0:t.unit;if(e===0)return numberWithSuffix(0,i,"ев","ева","ево");if(e%1e3===0)return numberWithSuffix(e,i,"ен","на","но");if(e%100===0)return numberWithSuffix(e,i,"тен","тна","тно");const r=e%100;if(r>20||r<10)switch(r%10){case 1:return numberWithSuffix(e,i,"ви","ва","во");case 2:return numberWithSuffix(e,i,"ри","ра","ро");case 7:case 8:return numberWithSuffix(e,i,"ми","ма","мо")}return numberWithSuffix(e,i,"ти","та","то")},localize$t={ordinalNumber:ordinalNumber$t,era:buildLocalizeFn({values:eraValues$t,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$t,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$t,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$t,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$t,defaultWidth:"wide"})},matchOrdinalNumberPattern$t=/^(\d+)(-?[врмт][аи]|-?т?(ен|на)|-?(ев|ева))?/i,parseOrdinalNumberPattern$t=/\d+/i,matchEraPatterns$t={narrow:/^((пр)?н\.?\s?е\.?)/i,abbreviated:/^((пр)?н\.?\s?е\.?)/i,wide:/^(преди новата ера|новата ера|нова ера)/i},parseEraPatterns$t={any:[/^п/i,/^н/i]},matchQuarterPatterns$t={narrow:/^[1234]/i,abbreviated:/^[1234](-?[врт]?o?)? тримес.?/i,wide:/^[1234](-?[врт]?о?)? тримесечие/i},parseQuarterPatterns$t={any:[/1/i,/2/i,/3/i,/4/i]},matchDayPatterns$t={narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)/i,abbreviated:/^(нед|пон|вто|сря|чет|пет|съб)/i,wide:/^(неделя|понеделник|вторник|сряда|четвъртък|петък|събота)/i},parseDayPatterns$t={narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н[ед]/i,/^п[он]/i,/^вт/i,/^ср/i,/^ч[ет]/i,/^п[ет]/i,/^с[ъб]/i]},matchMonthPatterns$t={abbreviated:/^(яну|фев|мар|апр|май|юни|юли|авг|сеп|окт|ное|дек)/i,wide:/^(януари|февруари|март|април|май|юни|юли|август|септември|октомври|ноември|декември)/i},parseMonthPatterns$t={any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^май/i,/^юн/i,/^юл/i,/^ав/i,/^се/i,/^окт/i,/^но/i,/^де/i]},matchDayPeriodPatterns$t={any:/^(преди о|след о|в по|на о|през|веч|сут|следо)/i},parseDayPeriodPatterns$t={any:{am:/^преди о/i,pm:/^след о/i,midnight:/^в пол/i,noon:/^на об/i,morning:/^сут/i,afternoon:/^следо/i,evening:/^веч/i,night:/^през н/i}},match$t={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$t,parsePattern:parseOrdinalNumberPattern$t,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$t,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$t,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$t,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$t,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$t,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$t,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$t,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$t,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$t,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$t,defaultParseWidth:"any"})},bg={code:"bg",formatDistance:formatDistance$t,formatLong:formatLong$u,formatRelative:formatRelative$t,localize:localize$t,match:match$t,options:{weekStartsOn:1,firstWeekContainsDate:1}},formatDistanceLocale$r={lessThanXSeconds:{one:"menys d'un segon",eleven:"menys d'onze segons",other:"menys de {{count}} segons"},xSeconds:{one:"1 segon",other:"{{count}} segons"},halfAMinute:"mig minut",lessThanXMinutes:{one:"menys d'un minut",eleven:"menys d'onze minuts",other:"menys de {{count}} minuts"},xMinutes:{one:"1 minut",other:"{{count}} minuts"},aboutXHours:{one:"aproximadament una hora",other:"aproximadament {{count}} hores"},xHours:{one:"1 hora",other:"{{count}} hores"},xDays:{one:"1 dia",other:"{{count}} dies"},aboutXWeeks:{one:"aproximadament una setmana",other:"aproximadament {{count}} setmanes"},xWeeks:{one:"1 setmana",other:"{{count}} setmanes"},aboutXMonths:{one:"aproximadament un mes",other:"aproximadament {{count}} mesos"},xMonths:{one:"1 mes",other:"{{count}} mesos"},aboutXYears:{one:"aproximadament un any",other:"aproximadament {{count}} anys"},xYears:{one:"1 any",other:"{{count}} anys"},overXYears:{one:"més d'un any",eleven:"més d'onze anys",other:"més de {{count}} anys"},almostXYears:{one:"gairebé un any",other:"gairebé {{count}} anys"}},formatDistance$s=(n,t,e)=>{let i;const r=formatDistanceLocale$r[n];return typeof r=="string"?i=r:t===1?i=r.one:t===11&&r.eleven?i=r.eleven:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"en "+i:"fa "+i:i},dateFormats$t={full:"EEEE, d 'de' MMMM y",long:"d 'de' MMMM y",medium:"d MMM y",short:"dd/MM/y"},timeFormats$t={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$t={full:"{{date}} 'a les' {{time}}",long:"{{date}} 'a les' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$t={date:buildFormatLongFn({formats:dateFormats$t,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$t,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$t,defaultWidth:"full"})},formatRelativeLocale$s={lastWeek:"'el' eeee 'passat a la' LT",yesterday:"'ahir a la' p",today:"'avui a la' p",tomorrow:"'demà a la' p",nextWeek:"eeee 'a la' p",other:"P"},formatRelativeLocalePlural$1={lastWeek:"'el' eeee 'passat a les' p",yesterday:"'ahir a les' p",today:"'avui a les' p",tomorrow:"'demà a les' p",nextWeek:"eeee 'a les' p",other:"P"},formatRelative$s=(n,t,e,i)=>t.getHours()!==1?formatRelativeLocalePlural$1[n]:formatRelativeLocale$s[n],eraValues$s={narrow:["aC","dC"],abbreviated:["a. de C.","d. de C."],wide:["abans de Crist","després de Crist"]},quarterValues$s={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1r trimestre","2n trimestre","3r trimestre","4t trimestre"]},monthValues$s={narrow:["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],abbreviated:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],wide:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"]},dayValues$s={narrow:["dg.","dl.","dt.","dm.","dj.","dv.","ds."],short:["dg.","dl.","dt.","dm.","dj.","dv.","ds."],abbreviated:["dg.","dl.","dt.","dm.","dj.","dv.","ds."],wide:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"]},dayPeriodValues$s={narrow:{am:"am",pm:"pm",midnight:"mitjanit",noon:"migdia",morning:"matí",afternoon:"tarda",evening:"vespre",night:"nit"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"mitjanit",noon:"migdia",morning:"matí",afternoon:"tarda",evening:"vespre",night:"nit"},wide:{am:"ante meridiem",pm:"post meridiem",midnight:"mitjanit",noon:"migdia",morning:"matí",afternoon:"tarda",evening:"vespre",night:"nit"}},formattingDayPeriodValues$k={narrow:{am:"am",pm:"pm",midnight:"de la mitjanit",noon:"del migdia",morning:"del matí",afternoon:"de la tarda",evening:"del vespre",night:"de la nit"},abbreviated:{am:"AM",pm:"PM",midnight:"de la mitjanit",noon:"del migdia",morning:"del matí",afternoon:"de la tarda",evening:"del vespre",night:"de la nit"},wide:{am:"ante meridiem",pm:"post meridiem",midnight:"de la mitjanit",noon:"del migdia",morning:"del matí",afternoon:"de la tarda",evening:"del vespre",night:"de la nit"}},ordinalNumber$s=(n,t)=>{const e=Number(n),i=e%100;if(i>20||i<10)switch(i%10){case 1:return e+"r";case 2:return e+"n";case 3:return e+"r";case 4:return e+"t"}return e+"è"},localize$s={ordinalNumber:ordinalNumber$s,era:buildLocalizeFn({values:eraValues$s,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$s,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$s,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$s,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$s,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$k,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$s=/^(\d+)(è|r|n|r|t)?/i,parseOrdinalNumberPattern$s=/\d+/i,matchEraPatterns$s={narrow:/^(aC|dC)/i,abbreviated:/^(a. de C.|d. de C.)/i,wide:/^(abans de Crist|despr[eé]s de Crist)/i},parseEraPatterns$s={narrow:[/^aC/i,/^dC/i],abbreviated:[/^(a. de C.)/i,/^(d. de C.)/i],wide:[/^(abans de Crist)/i,/^(despr[eé]s de Crist)/i]},matchQuarterPatterns$s={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](è|r|n|r|t)? trimestre/i},parseQuarterPatterns$s={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$s={narrow:/^(GN|FB|MÇ|AB|MG|JN|JL|AG|ST|OC|NV|DS)/i,abbreviated:/^(gen.|febr.|març|abr.|maig|juny|jul.|ag.|set.|oct.|nov.|des.)/i,wide:/^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i},parseMonthPatterns$s={narrow:[/^GN/i,/^FB/i,/^MÇ/i,/^AB/i,/^MG/i,/^JN/i,/^JL/i,/^AG/i,/^ST/i,/^OC/i,/^NV/i,/^DS/i],abbreviated:[/^gen./i,/^febr./i,/^març/i,/^abr./i,/^maig/i,/^juny/i,/^jul./i,/^ag./i,/^set./i,/^oct./i,/^nov./i,/^des./i],wide:[/^gener/i,/^febrer/i,/^març/i,/^abril/i,/^maig/i,/^juny/i,/^juliol/i,/^agost/i,/^setembre/i,/^octubre/i,/^novembre/i,/^desembre/i]},matchDayPatterns$s={narrow:/^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,short:/^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,abbreviated:/^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,wide:/^(diumenge|dilluns|dimarts|dimecres|dijous|divendres|dissabte)/i},parseDayPatterns$s={narrow:[/^dg./i,/^dl./i,/^dt./i,/^dm./i,/^dj./i,/^dv./i,/^ds./i],abbreviated:[/^dg./i,/^dl./i,/^dt./i,/^dm./i,/^dj./i,/^dv./i,/^ds./i],wide:[/^diumenge/i,/^dilluns/i,/^dimarts/i,/^dimecres/i,/^dijous/i,/^divendres/i,/^disssabte/i]},matchDayPeriodPatterns$s={narrow:/^(a|p|mn|md|(del|de la) (matí|tarda|vespre|nit))/i,abbreviated:/^([ap]\.?\s?m\.?|mitjanit|migdia|(del|de la) (matí|tarda|vespre|nit))/i,wide:/^(ante meridiem|post meridiem|mitjanit|migdia|(del|de la) (matí|tarda|vespre|nit))/i},parseDayPeriodPatterns$s={any:{am:/^a/i,pm:/^p/i,midnight:/^mitjanit/i,noon:/^migdia/i,morning:/matí/i,afternoon:/tarda/i,evening:/vespre/i,night:/nit/i}},match$s={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$s,parsePattern:parseOrdinalNumberPattern$s,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$s,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$s,defaultParseWidth:"wide"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$s,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$s,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$s,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$s,defaultParseWidth:"wide"}),day:buildMatchFn({matchPatterns:matchDayPatterns$s,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$s,defaultParseWidth:"wide"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$s,defaultMatchWidth:"wide",parsePatterns:parseDayPeriodPatterns$s,defaultParseWidth:"any"})},ca={code:"ca",formatDistance:formatDistance$s,formatLong:formatLong$t,formatRelative:formatRelative$s,localize:localize$s,match:match$s,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$q={lessThanXSeconds:{one:{regular:"méně než sekunda",past:"před méně než sekundou",future:"za méně než sekundu"},few:{regular:"méně než {{count}} sekundy",past:"před méně než {{count}} sekundami",future:"za méně než {{count}} sekundy"},many:{regular:"méně než {{count}} sekund",past:"před méně než {{count}} sekundami",future:"za méně než {{count}} sekund"}},xSeconds:{one:{regular:"sekunda",past:"před sekundou",future:"za sekundu"},few:{regular:"{{count}} sekundy",past:"před {{count}} sekundami",future:"za {{count}} sekundy"},many:{regular:"{{count}} sekund",past:"před {{count}} sekundami",future:"za {{count}} sekund"}},halfAMinute:{type:"other",other:{regular:"půl minuty",past:"před půl minutou",future:"za půl minuty"}},lessThanXMinutes:{one:{regular:"méně než minuta",past:"před méně než minutou",future:"za méně než minutu"},few:{regular:"méně než {{count}} minuty",past:"před méně než {{count}} minutami",future:"za méně než {{count}} minuty"},many:{regular:"méně než {{count}} minut",past:"před méně než {{count}} minutami",future:"za méně než {{count}} minut"}},xMinutes:{one:{regular:"minuta",past:"před minutou",future:"za minutu"},few:{regular:"{{count}} minuty",past:"před {{count}} minutami",future:"za {{count}} minuty"},many:{regular:"{{count}} minut",past:"před {{count}} minutami",future:"za {{count}} minut"}},aboutXHours:{one:{regular:"přibližně hodina",past:"přibližně před hodinou",future:"přibližně za hodinu"},few:{regular:"přibližně {{count}} hodiny",past:"přibližně před {{count}} hodinami",future:"přibližně za {{count}} hodiny"},many:{regular:"přibližně {{count}} hodin",past:"přibližně před {{count}} hodinami",future:"přibližně za {{count}} hodin"}},xHours:{one:{regular:"hodina",past:"před hodinou",future:"za hodinu"},few:{regular:"{{count}} hodiny",past:"před {{count}} hodinami",future:"za {{count}} hodiny"},many:{regular:"{{count}} hodin",past:"před {{count}} hodinami",future:"za {{count}} hodin"}},xDays:{one:{regular:"den",past:"před dnem",future:"za den"},few:{regular:"{{count}} dny",past:"před {{count}} dny",future:"za {{count}} dny"},many:{regular:"{{count}} dní",past:"před {{count}} dny",future:"za {{count}} dní"}},aboutXWeeks:{one:{regular:"přibližně týden",past:"přibližně před týdnem",future:"přibližně za týden"},few:{regular:"přibližně {{count}} týdny",past:"přibližně před {{count}} týdny",future:"přibližně za {{count}} týdny"},many:{regular:"přibližně {{count}} týdnů",past:"přibližně před {{count}} týdny",future:"přibližně za {{count}} týdnů"}},xWeeks:{one:{regular:"týden",past:"před týdnem",future:"za týden"},few:{regular:"{{count}} týdny",past:"před {{count}} týdny",future:"za {{count}} týdny"},many:{regular:"{{count}} týdnů",past:"před {{count}} týdny",future:"za {{count}} týdnů"}},aboutXMonths:{one:{regular:"přibližně měsíc",past:"přibližně před měsícem",future:"přibližně za měsíc"},few:{regular:"přibližně {{count}} měsíce",past:"přibližně před {{count}} měsíci",future:"přibližně za {{count}} měsíce"},many:{regular:"přibližně {{count}} měsíců",past:"přibližně před {{count}} měsíci",future:"přibližně za {{count}} měsíců"}},xMonths:{one:{regular:"měsíc",past:"před měsícem",future:"za měsíc"},few:{regular:"{{count}} měsíce",past:"před {{count}} měsíci",future:"za {{count}} měsíce"},many:{regular:"{{count}} měsíců",past:"před {{count}} měsíci",future:"za {{count}} měsíců"}},aboutXYears:{one:{regular:"přibližně rok",past:"přibližně před rokem",future:"přibližně za rok"},few:{regular:"přibližně {{count}} roky",past:"přibližně před {{count}} roky",future:"přibližně za {{count}} roky"},many:{regular:"přibližně {{count}} roků",past:"přibližně před {{count}} roky",future:"přibližně za {{count}} roků"}},xYears:{one:{regular:"rok",past:"před rokem",future:"za rok"},few:{regular:"{{count}} roky",past:"před {{count}} roky",future:"za {{count}} roky"},many:{regular:"{{count}} roků",past:"před {{count}} roky",future:"za {{count}} roků"}},overXYears:{one:{regular:"více než rok",past:"před více než rokem",future:"za více než rok"},few:{regular:"více než {{count}} roky",past:"před více než {{count}} roky",future:"za více než {{count}} roky"},many:{regular:"více než {{count}} roků",past:"před více než {{count}} roky",future:"za více než {{count}} roků"}},almostXYears:{one:{regular:"skoro rok",past:"skoro před rokem",future:"skoro za rok"},few:{regular:"skoro {{count}} roky",past:"skoro před {{count}} roky",future:"skoro za {{count}} roky"},many:{regular:"skoro {{count}} roků",past:"skoro před {{count}} roky",future:"skoro za {{count}} roků"}}},formatDistance$r=(n,t,e)=>{let i;const r=formatDistanceLocale$q[n];r.type==="other"?i=r.other:t===1?i=r.one:t>1&&t<5?i=r.few:i=r.many;const a=(e==null?void 0:e.addSuffix)===!0,o=e==null?void 0:e.comparison;let l;return a&&o===-1?l=i.past:a&&o===1?l=i.future:l=i.regular,l.replace("{{count}}",String(t))},dateFormats$s={full:"EEEE, d. MMMM yyyy",long:"d. MMMM yyyy",medium:"d. M. yyyy",short:"dd.MM.yyyy"},timeFormats$s={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},dateTimeFormats$s={full:"{{date}} 'v' {{time}}",long:"{{date}} 'v' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$s={date:buildFormatLongFn({formats:dateFormats$s,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$s,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$s,defaultWidth:"full"})},accusativeWeekdays$4=["neděli","pondělí","úterý","středu","čtvrtek","pátek","sobotu"],formatRelativeLocale$r={lastWeek:"'poslední' eeee 've' p",yesterday:"'včera v' p",today:"'dnes v' p",tomorrow:"'zítra v' p",nextWeek:n=>{const t=n.getDay();return"'v "+accusativeWeekdays$4[t]+" o' p"},other:"P"},formatRelative$r=(n,t)=>{const e=formatRelativeLocale$r[n];return typeof e=="function"?e(t):e},eraValues$r={narrow:["př. n. l.","n. l."],abbreviated:["př. n. l.","n. l."],wide:["před naším letopočtem","našeho letopočtu"]},quarterValues$r={narrow:["1","2","3","4"],abbreviated:["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],wide:["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"]},monthValues$r={narrow:["L","Ú","B","D","K","Č","Č","S","Z","Ř","L","P"],abbreviated:["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],wide:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"]},formattingMonthValues$7={narrow:["L","Ú","B","D","K","Č","Č","S","Z","Ř","L","P"],abbreviated:["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],wide:["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"]},dayValues$r={narrow:["ne","po","út","st","čt","pá","so"],short:["ne","po","út","st","čt","pá","so"],abbreviated:["ned","pon","úte","stř","čtv","pát","sob"],wide:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"]},dayPeriodValues$r={narrow:{am:"dop.",pm:"odp.",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"},abbreviated:{am:"dop.",pm:"odp.",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"},wide:{am:"dopoledne",pm:"odpoledne",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"}},formattingDayPeriodValues$j={narrow:{am:"dop.",pm:"odp.",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"},abbreviated:{am:"dop.",pm:"odp.",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"},wide:{am:"dopoledne",pm:"odpoledne",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"}},ordinalNumber$r=(n,t)=>Number(n)+".",localize$r={ordinalNumber:ordinalNumber$r,era:buildLocalizeFn({values:eraValues$r,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$r,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$r,defaultWidth:"wide",formattingValues:formattingMonthValues$7,defaultFormattingWidth:"wide"}),day:buildLocalizeFn({values:dayValues$r,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$r,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$j,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$r=/^(\d+)\.?/i,parseOrdinalNumberPattern$r=/\d+/i,matchEraPatterns$r={narrow:/^(p[řr](\.|ed) Kr\.|p[řr](\.|ed) n\. l\.|po Kr\.|n\. l\.)/i,abbreviated:/^(p[řr](\.|ed) Kr\.|p[řr](\.|ed) n\. l\.|po Kr\.|n\. l\.)/i,wide:/^(p[řr](\.|ed) Kristem|p[řr](\.|ed) na[šs][íi]m letopo[čc]tem|po Kristu|na[šs]eho letopo[čc]tu)/i},parseEraPatterns$r={any:[/^p[řr]/i,/^(po|n)/i]},matchQuarterPatterns$r={narrow:/^[1234]/i,abbreviated:/^[1234]\. [čc]tvrtlet[íi]/i,wide:/^[1234]\. [čc]tvrtlet[íi]/i},parseQuarterPatterns$r={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$r={narrow:/^[lúubdkčcszřrlp]/i,abbreviated:/^(led|[úu]no|b[řr]e|dub|kv[ěe]|[čc]vn|[čc]vc|srp|z[áa][řr]|[řr][íi]j|lis|pro)/i,wide:/^(leden|ledna|[úu]nora?|b[řr]ezen|b[řr]ezna|duben|dubna|kv[ěe]ten|kv[ěe]tna|[čc]erven(ec|ce)?|[čc]ervna|srpen|srpna|z[áa][řr][íi]|[řr][íi]jen|[řr][íi]jna|listopad(a|u)?|prosinec|prosince)/i},parseMonthPatterns$r={narrow:[/^l/i,/^[úu]/i,/^b/i,/^d/i,/^k/i,/^[čc]/i,/^[čc]/i,/^s/i,/^z/i,/^[řr]/i,/^l/i,/^p/i],any:[/^led/i,/^[úu]n/i,/^b[řr]e/i,/^dub/i,/^kv[ěe]/i,/^[čc]vn|[čc]erven(?!\w)|[čc]ervna/i,/^[čc]vc|[čc]erven(ec|ce)/i,/^srp/i,/^z[áa][řr]/i,/^[řr][íi]j/i,/^lis/i,/^pro/i]},matchDayPatterns$r={narrow:/^[npuúsčps]/i,short:/^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,abbreviated:/^(ned|pon|[úu]te|st[rř]|[čc]tv|p[áa]t|sob)/i,wide:/^(ned[ěe]le|pond[ěe]l[íi]|[úu]ter[ýy]|st[řr]eda|[čc]tvrtek|p[áa]tek|sobota)/i},parseDayPatterns$r={narrow:[/^n/i,/^p/i,/^[úu]/i,/^s/i,/^[čc]/i,/^p/i,/^s/i],any:[/^ne/i,/^po/i,/^[úu]t/i,/^st/i,/^[čc]t/i,/^p[áa]/i,/^so/i]},matchDayPeriodPatterns$r={any:/^dopoledne|dop\.?|odpoledne|odp\.?|p[ůu]lnoc|poledne|r[áa]no|odpoledne|ve[čc]er|(v )?noci?/i},parseDayPeriodPatterns$r={any:{am:/^dop/i,pm:/^odp/i,midnight:/^p[ůu]lnoc/i,noon:/^poledne/i,morning:/r[áa]no/i,afternoon:/odpoledne/i,evening:/ve[čc]er/i,night:/noc/i}},match$r={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$r,parsePattern:parseOrdinalNumberPattern$r,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$r,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$r,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$r,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$r,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$r,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$r,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$r,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$r,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$r,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$r,defaultParseWidth:"any"})},cs={code:"cs",formatDistance:formatDistance$r,formatLong:formatLong$s,formatRelative:formatRelative$r,localize:localize$r,match:match$r,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$p={lessThanXSeconds:{one:"mindre end ét sekund",other:"mindre end {{count}} sekunder"},xSeconds:{one:"1 sekund",other:"{{count}} sekunder"},halfAMinute:"ét halvt minut",lessThanXMinutes:{one:"mindre end ét minut",other:"mindre end {{count}} minutter"},xMinutes:{one:"1 minut",other:"{{count}} minutter"},aboutXHours:{one:"cirka 1 time",other:"cirka {{count}} timer"},xHours:{one:"1 time",other:"{{count}} timer"},xDays:{one:"1 dag",other:"{{count}} dage"},aboutXWeeks:{one:"cirka 1 uge",other:"cirka {{count}} uger"},xWeeks:{one:"1 uge",other:"{{count}} uger"},aboutXMonths:{one:"cirka 1 måned",other:"cirka {{count}} måneder"},xMonths:{one:"1 måned",other:"{{count}} måneder"},aboutXYears:{one:"cirka 1 år",other:"cirka {{count}} år"},xYears:{one:"1 år",other:"{{count}} år"},overXYears:{one:"over 1 år",other:"over {{count}} år"},almostXYears:{one:"næsten 1 år",other:"næsten {{count}} år"}},formatDistance$q=(n,t,e)=>{let i;const r=formatDistanceLocale$p[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"om "+i:i+" siden":i},dateFormats$r={full:"EEEE 'den' d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd/MM/y"},timeFormats$r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$r={full:"{{date}} 'kl'. {{time}}",long:"{{date}} 'kl'. {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$r={date:buildFormatLongFn({formats:dateFormats$r,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$r,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$r,defaultWidth:"full"})},formatRelativeLocale$q={lastWeek:"'sidste' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgen kl.' p",nextWeek:"'på' eeee 'kl.' p",other:"P"},formatRelative$q=(n,t,e,i)=>formatRelativeLocale$q[n],eraValues$q={narrow:["fvt","vt"],abbreviated:["f.v.t.","v.t."],wide:["før vesterlandsk tidsregning","vesterlandsk tidsregning"]},quarterValues$q={narrow:["1","2","3","4"],abbreviated:["1. kvt.","2. kvt.","3. kvt.","4. kvt."],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},monthValues$q={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],wide:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"]},dayValues$q={narrow:["S","M","T","O","T","F","L"],short:["sø","ma","ti","on","to","fr","lø"],abbreviated:["søn.","man.","tir.","ons.","tor.","fre.","lør."],wide:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},dayPeriodValues$q={narrow:{am:"a",pm:"p",midnight:"midnat",noon:"middag",morning:"morgen",afternoon:"eftermiddag",evening:"aften",night:"nat"},abbreviated:{am:"AM",pm:"PM",midnight:"midnat",noon:"middag",morning:"morgen",afternoon:"eftermiddag",evening:"aften",night:"nat"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnat",noon:"middag",morning:"morgen",afternoon:"eftermiddag",evening:"aften",night:"nat"}},formattingDayPeriodValues$i={narrow:{am:"a",pm:"p",midnight:"midnat",noon:"middag",morning:"om morgenen",afternoon:"om eftermiddagen",evening:"om aftenen",night:"om natten"},abbreviated:{am:"AM",pm:"PM",midnight:"midnat",noon:"middag",morning:"om morgenen",afternoon:"om eftermiddagen",evening:"om aftenen",night:"om natten"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnat",noon:"middag",morning:"om morgenen",afternoon:"om eftermiddagen",evening:"om aftenen",night:"om natten"}},ordinalNumber$q=(n,t)=>Number(n)+".",localize$q={ordinalNumber:ordinalNumber$q,era:buildLocalizeFn({values:eraValues$q,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$q,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$q,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$q,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$q,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$i,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$q=/^(\d+)(\.)?/i,parseOrdinalNumberPattern$q=/\d+/i,matchEraPatterns$q={narrow:/^(fKr|fvt|eKr|vt)/i,abbreviated:/^(f\.Kr\.?|f\.v\.t\.?|e\.Kr\.?|v\.t\.)/i,wide:/^(f.Kr.|før vesterlandsk tidsregning|e.Kr.|vesterlandsk tidsregning)/i},parseEraPatterns$q={any:[/^f/i,/^(v|e)/i]},matchQuarterPatterns$q={narrow:/^[1234]/i,abbreviated:/^[1234]. kvt\./i,wide:/^[1234]\.? kvartal/i},parseQuarterPatterns$q={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$q={narrow:/^[jfmasond]/i,abbreviated:/^(jan.|feb.|mar.|apr.|maj|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,wide:/^(januar|februar|marts|april|maj|juni|juli|august|september|oktober|november|december)/i},parseMonthPatterns$q={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$q={narrow:/^[smtofl]/i,short:/^(søn.|man.|tir.|ons.|tor.|fre.|lør.)/i,abbreviated:/^(søn|man|tir|ons|tor|fre|lør)/i,wide:/^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i},parseDayPatterns$q={narrow:[/^s/i,/^m/i,/^t/i,/^o/i,/^t/i,/^f/i,/^l/i],any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},matchDayPeriodPatterns$q={narrow:/^(a|p|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i,any:/^([ap]\.?\s?m\.?|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i},parseDayPeriodPatterns$q={any:{am:/^a/i,pm:/^p/i,midnight:/midnat/i,noon:/middag/i,morning:/morgen/i,afternoon:/eftermiddag/i,evening:/aften/i,night:/nat/i}},match$q={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$q,parsePattern:parseOrdinalNumberPattern$q,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$q,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$q,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$q,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$q,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$q,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$q,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$q,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$q,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$q,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$q,defaultParseWidth:"any"})},da={code:"da",formatDistance:formatDistance$q,formatLong:formatLong$r,formatRelative:formatRelative$q,localize:localize$q,match:match$q,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$o={lessThanXSeconds:{standalone:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"},withPreposition:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"}},xSeconds:{standalone:{one:"1 Sekunde",other:"{{count}} Sekunden"},withPreposition:{one:"1 Sekunde",other:"{{count}} Sekunden"}},halfAMinute:{standalone:"halbe Minute",withPreposition:"halben Minute"},lessThanXMinutes:{standalone:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"},withPreposition:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"}},xMinutes:{standalone:{one:"1 Minute",other:"{{count}} Minuten"},withPreposition:{one:"1 Minute",other:"{{count}} Minuten"}},aboutXHours:{standalone:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"},withPreposition:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"}},xHours:{standalone:{one:"1 Stunde",other:"{{count}} Stunden"},withPreposition:{one:"1 Stunde",other:"{{count}} Stunden"}},xDays:{standalone:{one:"1 Tag",other:"{{count}} Tage"},withPreposition:{one:"1 Tag",other:"{{count}} Tagen"}},aboutXWeeks:{standalone:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"},withPreposition:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"}},xWeeks:{standalone:{one:"1 Woche",other:"{{count}} Wochen"},withPreposition:{one:"1 Woche",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"etwa 1 Monat",other:"etwa {{count}} Monate"},withPreposition:{one:"etwa 1 Monat",other:"etwa {{count}} Monaten"}},xMonths:{standalone:{one:"1 Monat",other:"{{count}} Monate"},withPreposition:{one:"1 Monat",other:"{{count}} Monaten"}},aboutXYears:{standalone:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahre"},withPreposition:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahren"}},xYears:{standalone:{one:"1 Jahr",other:"{{count}} Jahre"},withPreposition:{one:"1 Jahr",other:"{{count}} Jahren"}},overXYears:{standalone:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahre"},withPreposition:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahren"}},almostXYears:{standalone:{one:"fast 1 Jahr",other:"fast {{count}} Jahre"},withPreposition:{one:"fast 1 Jahr",other:"fast {{count}} Jahren"}}},formatDistance$p=(n,t,e)=>{let i;const r=e!=null&&e.addSuffix?formatDistanceLocale$o[n].withPreposition:formatDistanceLocale$o[n].standalone;return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"in "+i:"vor "+i:i},dateFormats$q={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},timeFormats$q={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$q={full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$q={date:buildFormatLongFn({formats:dateFormats$q,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$q,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$q,defaultWidth:"full"})},formatRelativeLocale$p={lastWeek:"'letzten' eeee 'um' p",yesterday:"'gestern um' p",today:"'heute um' p",tomorrow:"'morgen um' p",nextWeek:"eeee 'um' p",other:"P"},formatRelative$p=(n,t,e,i)=>formatRelativeLocale$p[n],eraValues$p={narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},quarterValues$p={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},monthValues$p={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},formattingMonthValues$6={narrow:monthValues$p.narrow,abbreviated:["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],wide:monthValues$p.wide},dayValues$p={narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},dayPeriodValues$p={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},formattingDayPeriodValues$h={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},ordinalNumber$p=n=>Number(n)+".",localize$p={ordinalNumber:ordinalNumber$p,era:buildLocalizeFn({values:eraValues$p,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$p,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$p,formattingValues:formattingMonthValues$6,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$p,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$p,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$h,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$p=/^(\d+)(\.)?/i,parseOrdinalNumberPattern$p=/\d+/i,matchEraPatterns$p={narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},parseEraPatterns$p={any:[/^v/i,/^n/i]},matchQuarterPatterns$p={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},parseQuarterPatterns$p={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$p={narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},parseMonthPatterns$p={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$p={narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},parseDayPatterns$p={any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},matchDayPeriodPatterns$p={narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},parseDayPeriodPatterns$p={any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},match$p={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$p,parsePattern:parseOrdinalNumberPattern$p,valueCallback:n=>parseInt(n)}),era:buildMatchFn({matchPatterns:matchEraPatterns$p,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$p,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$p,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$p,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$p,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$p,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$p,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$p,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$p,defaultMatchWidth:"wide",parsePatterns:parseDayPeriodPatterns$p,defaultParseWidth:"any"})},de={code:"de",formatDistance:formatDistance$p,formatLong:formatLong$q,formatRelative:formatRelative$p,localize:localize$p,match:match$p,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$n={lessThanXSeconds:{one:"λιγότερο από ένα δευτερόλεπτο",other:"λιγότερο από {{count}} δευτερόλεπτα"},xSeconds:{one:"1 δευτερόλεπτο",other:"{{count}} δευτερόλεπτα"},halfAMinute:"μισό λεπτό",lessThanXMinutes:{one:"λιγότερο από ένα λεπτό",other:"λιγότερο από {{count}} λεπτά"},xMinutes:{one:"1 λεπτό",other:"{{count}} λεπτά"},aboutXHours:{one:"περίπου 1 ώρα",other:"περίπου {{count}} ώρες"},xHours:{one:"1 ώρα",other:"{{count}} ώρες"},xDays:{one:"1 ημέρα",other:"{{count}} ημέρες"},aboutXWeeks:{one:"περίπου 1 εβδομάδα",other:"περίπου {{count}} εβδομάδες"},xWeeks:{one:"1 εβδομάδα",other:"{{count}} εβδομάδες"},aboutXMonths:{one:"περίπου 1 μήνας",other:"περίπου {{count}} μήνες"},xMonths:{one:"1 μήνας",other:"{{count}} μήνες"},aboutXYears:{one:"περίπου 1 χρόνο",other:"περίπου {{count}} χρόνια"},xYears:{one:"1 χρόνο",other:"{{count}} χρόνια"},overXYears:{one:"πάνω από 1 χρόνο",other:"πάνω από {{count}} χρόνια"},almostXYears:{one:"περίπου 1 χρόνο",other:"περίπου {{count}} χρόνια"}},formatDistance$o=(n,t,e)=>{let i;const r=formatDistanceLocale$n[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"σε "+i:i+" πριν":i},dateFormats$p={full:"EEEE, d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"d/M/yy"},timeFormats$p={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},dateTimeFormats$p={full:"{{date}} - {{time}}",long:"{{date}} - {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$p={date:buildFormatLongFn({formats:dateFormats$p,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$p,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$p,defaultWidth:"full"})},formatRelativeLocale$o={lastWeek:n=>{switch(n.getDay()){case 6:return"'το προηγούμενο' eeee 'στις' p";default:return"'την προηγούμενη' eeee 'στις' p"}},yesterday:"'χθες στις' p",today:"'σήμερα στις' p",tomorrow:"'αύριο στις' p",nextWeek:"eeee 'στις' p",other:"P"},formatRelative$o=(n,t)=>{const e=formatRelativeLocale$o[n];return typeof e=="function"?e(t):e},eraValues$o={narrow:["πΧ","μΧ"],abbreviated:["π.Χ.","μ.Χ."],wide:["προ Χριστού","μετά Χριστόν"]},quarterValues$o={narrow:["1","2","3","4"],abbreviated:["Τ1","Τ2","Τ3","Τ4"],wide:["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"]},monthValues$o={narrow:["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],abbreviated:["Ιαν","Φεβ","Μάρ","Απρ","Μάι","Ιούν","Ιούλ","Αύγ","Σεπ","Οκτ","Νοέ","Δεκ"],wide:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"]},formattingMonthValues$5={narrow:["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],abbreviated:["Ιαν","Φεβ","Μαρ","Απρ","Μαΐ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],wide:["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"]},dayValues$o={narrow:["Κ","Δ","T","Τ","Π","Π","Σ"],short:["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],abbreviated:["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],wide:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},dayPeriodValues$o={narrow:{am:"πμ",pm:"μμ",midnight:"μεσάνυχτα",noon:"μεσημέρι",morning:"πρωί",afternoon:"απόγευμα",evening:"βράδυ",night:"νύχτα"},abbreviated:{am:"π.μ.",pm:"μ.μ.",midnight:"μεσάνυχτα",noon:"μεσημέρι",morning:"πρωί",afternoon:"απόγευμα",evening:"βράδυ",night:"νύχτα"},wide:{am:"π.μ.",pm:"μ.μ.",midnight:"μεσάνυχτα",noon:"μεσημέρι",morning:"πρωί",afternoon:"απόγευμα",evening:"βράδυ",night:"νύχτα"}},ordinalNumber$o=(n,t)=>{const e=Number(n),i=t==null?void 0:t.unit;let r;return i==="year"||i==="month"?r="ος":i==="week"||i==="dayOfYear"||i==="day"||i==="hour"||i==="date"?r="η":r="ο",e+r},localize$o={ordinalNumber:ordinalNumber$o,era:buildLocalizeFn({values:eraValues$o,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$o,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$o,defaultWidth:"wide",formattingValues:formattingMonthValues$5,defaultFormattingWidth:"wide"}),day:buildLocalizeFn({values:dayValues$o,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$o,defaultWidth:"wide"})},matchOrdinalNumberPattern$o=/^(\d+)(ος|η|ο)?/i,parseOrdinalNumberPattern$o=/\d+/i,matchEraPatterns$o={narrow:/^(πΧ|μΧ)/i,abbreviated:/^(π\.?\s?χ\.?|π\.?\s?κ\.?\s?χ\.?|μ\.?\s?χ\.?|κ\.?\s?χ\.?)/i,wide:/^(προ Χριστο(ύ|υ)|πριν απ(ό|ο) την Κοιν(ή|η) Χρονολογ(ί|ι)α|μετ(ά|α) Χριστ(ό|ο)ν|Κοιν(ή|η) Χρονολογ(ί|ι)α)/i},parseEraPatterns$o={any:[/^π/i,/^(μ|κ)/i]},matchQuarterPatterns$o={narrow:/^[1234]/i,abbreviated:/^τ[1234]/i,wide:/^[1234]ο? τρ(ί|ι)μηνο/i},parseQuarterPatterns$o={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$o={narrow:/^[ιφμαμιιασονδ]/i,abbreviated:/^(ιαν|φεβ|μ[άα]ρ|απρ|μ[άα][ιΐ]|ιο[ύυ]ν|ιο[ύυ]λ|α[ύυ]γ|σεπ|οκτ|νο[έε]|δεκ)/i,wide:/^(μ[άα][ιΐ]|α[ύυ]γο[υύ]στ)(ος|ου)|(ιανου[άα]ρ|φεβρου[άα]ρ|μ[άα]ρτ|απρ[ίι]λ|ιο[ύυ]ν|ιο[ύυ]λ|σεπτ[έε]μβρ|οκτ[ώω]βρ|νο[έε]μβρ|δεκ[έε]μβρ)(ιος|ίου)/i},parseMonthPatterns$o={narrow:[/^ι/i,/^φ/i,/^μ/i,/^α/i,/^μ/i,/^ι/i,/^ι/i,/^α/i,/^σ/i,/^ο/i,/^ν/i,/^δ/i],any:[/^ια/i,/^φ/i,/^μ[άα]ρ/i,/^απ/i,/^μ[άα][ιΐ]/i,/^ιο[ύυ]ν/i,/^ιο[ύυ]λ/i,/^α[ύυ]/i,/^σ/i,/^ο/i,/^ν/i,/^δ/i]},matchDayPatterns$o={narrow:/^[κδτπσ]/i,short:/^(κυ|δε|τρ|τε|π[εέ]|π[αά]|σ[αά])/i,abbreviated:/^(κυρ|δευ|τρι|τετ|πεμ|παρ|σαβ)/i,wide:/^(κυριακ(ή|η)|δευτ(έ|ε)ρα|τρ(ί|ι)τη|τετ(ά|α)ρτη|π(έ|ε)μπτη|παρασκευ(ή|η)|σ(ά|α)ββατο)/i},parseDayPatterns$o={narrow:[/^κ/i,/^δ/i,/^τ/i,/^τ/i,/^π/i,/^π/i,/^σ/i],any:[/^κ/i,/^δ/i,/^τρ/i,/^τε/i,/^π[εέ]/i,/^π[αά]/i,/^σ/i]},matchDayPeriodPatterns$o={narrow:/^(πμ|μμ|μεσ(ά|α)νυχτα|μεσημ(έ|ε)ρι|πρω(ί|ι)|απ(ό|ο)γευμα|βρ(ά|α)δυ|ν(ύ|υ)χτα)/i,any:/^([πμ]\.?\s?μ\.?|μεσ(ά|α)νυχτα|μεσημ(έ|ε)ρι|πρω(ί|ι)|απ(ό|ο)γευμα|βρ(ά|α)δυ|ν(ύ|υ)χτα)/i},parseDayPeriodPatterns$o={any:{am:/^πμ|π\.\s?μ\./i,pm:/^μμ|μ\.\s?μ\./i,midnight:/^μεσάν/i,noon:/^μεσημ(έ|ε)/i,morning:/πρω(ί|ι)/i,afternoon:/απ(ό|ο)γευμα/i,evening:/βρ(ά|α)δυ/i,night:/ν(ύ|υ)χτα/i}},match$o={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$o,parsePattern:parseOrdinalNumberPattern$o,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$o,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$o,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$o,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$o,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$o,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$o,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$o,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$o,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$o,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$o,defaultParseWidth:"any"})},el={code:"el",formatDistance:formatDistance$o,formatLong:formatLong$p,formatRelative:formatRelative$o,localize:localize$o,match:match$o,options:{weekStartsOn:1,firstWeekContainsDate:4}},dateFormats$o={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"dd/MM/yyyy"},timeFormats$o={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$o={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$o={date:buildFormatLongFn({formats:dateFormats$o,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$o,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$o,defaultWidth:"full"})},enGB={code:"en-GB",formatDistance:formatDistance$u,formatLong:formatLong$o,formatRelative:formatRelative$u,localize:localize$u,match:match$u,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$m={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 día",other:"{{count}} días"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 año",other:"alrededor de {{count}} años"},xYears:{one:"1 año",other:"{{count}} años"},overXYears:{one:"más de 1 año",other:"más de {{count}} años"},almostXYears:{one:"casi 1 año",other:"casi {{count}} años"}},formatDistance$n=(n,t,e)=>{let i;const r=formatDistanceLocale$m[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"en "+i:"hace "+i:i},dateFormats$n={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},timeFormats$n={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$n={full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$n={date:buildFormatLongFn({formats:dateFormats$n,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$n,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$n,defaultWidth:"full"})},formatRelativeLocale$n={lastWeek:"'el' eeee 'pasado a la' p",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'mañana a la' p",nextWeek:"eeee 'a la' p",other:"P"},formatRelativeLocalePlural={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'mañana a las' p",nextWeek:"eeee 'a las' p",other:"P"},formatRelative$n=(n,t,e,i)=>t.getHours()!==1?formatRelativeLocalePlural[n]:formatRelativeLocale$n[n],eraValues$n={narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","después de cristo"]},quarterValues$n={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},monthValues$n={narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},dayValues$n={narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","sá"],abbreviated:["dom","lun","mar","mié","jue","vie","sáb"],wide:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},dayPeriodValues$n={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"}},formattingDayPeriodValues$g={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},ordinalNumber$n=(n,t)=>Number(n)+"º",localize$n={ordinalNumber:ordinalNumber$n,era:buildLocalizeFn({values:eraValues$n,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$n,defaultWidth:"wide",argumentCallback:n=>Number(n)-1}),month:buildLocalizeFn({values:monthValues$n,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$n,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$n,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$g,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$n=/^(\d+)(º)?/i,parseOrdinalNumberPattern$n=/\d+/i,matchEraPatterns$n={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},parseEraPatterns$n={any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},matchQuarterPatterns$n={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},parseQuarterPatterns$n={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$n={narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},parseMonthPatterns$n={narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},matchDayPatterns$n={narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[áa])/i,abbreviated:/^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},parseDayPatterns$n={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},matchDayPeriodPatterns$n={narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},parseDayPeriodPatterns$n={any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},match$n={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$n,parsePattern:parseOrdinalNumberPattern$n,valueCallback:function(n){return parseInt(n,10)}}),era:buildMatchFn({matchPatterns:matchEraPatterns$n,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$n,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$n,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$n,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$n,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$n,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$n,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$n,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$n,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$n,defaultParseWidth:"any"})},es={code:"es",formatDistance:formatDistance$n,formatLong:formatLong$n,formatRelative:formatRelative$n,localize:localize$n,match:match$n,options:{weekStartsOn:1,firstWeekContainsDate:1}};function futureSeconds(n){return n.replace(/sekuntia?/,"sekunnin")}function futureMinutes(n){return n.replace(/minuuttia?/,"minuutin")}function futureHours(n){return n.replace(/tuntia?/,"tunnin")}function futureDays(n){return n.replace(/päivää?/,"päivän")}function futureWeeks(n){return n.replace(/(viikko|viikkoa)/,"viikon")}function futureMonths(n){return n.replace(/(kuukausi|kuukautta)/,"kuukauden")}function futureYears(n){return n.replace(/(vuosi|vuotta)/,"vuoden")}const formatDistanceLocale$l={lessThanXSeconds:{one:"alle sekunti",other:"alle {{count}} sekuntia",futureTense:futureSeconds},xSeconds:{one:"sekunti",other:"{{count}} sekuntia",futureTense:futureSeconds},halfAMinute:{one:"puoli minuuttia",other:"puoli minuuttia",futureTense:n=>"puolen minuutin"},lessThanXMinutes:{one:"alle minuutti",other:"alle {{count}} minuuttia",futureTense:futureMinutes},xMinutes:{one:"minuutti",other:"{{count}} minuuttia",futureTense:futureMinutes},aboutXHours:{one:"noin tunti",other:"noin {{count}} tuntia",futureTense:futureHours},xHours:{one:"tunti",other:"{{count}} tuntia",futureTense:futureHours},xDays:{one:"päivä",other:"{{count}} päivää",futureTense:futureDays},aboutXWeeks:{one:"noin viikko",other:"noin {{count}} viikkoa",futureTense:futureWeeks},xWeeks:{one:"viikko",other:"{{count}} viikkoa",futureTense:futureWeeks},aboutXMonths:{one:"noin kuukausi",other:"noin {{count}} kuukautta",futureTense:futureMonths},xMonths:{one:"kuukausi",other:"{{count}} kuukautta",futureTense:futureMonths},aboutXYears:{one:"noin vuosi",other:"noin {{count}} vuotta",futureTense:futureYears},xYears:{one:"vuosi",other:"{{count}} vuotta",futureTense:futureYears},overXYears:{one:"yli vuosi",other:"yli {{count}} vuotta",futureTense:futureYears},almostXYears:{one:"lähes vuosi",other:"lähes {{count}} vuotta",futureTense:futureYears}},formatDistance$m=(n,t,e)=>{const i=formatDistanceLocale$l[n],r=t===1?i.one:i.other.replace("{{count}}",String(t));return e!=null&&e.addSuffix?e.comparison&&e.comparison>0?i.futureTense(r)+" kuluttua":r+" sitten":r},dateFormats$m={full:"eeee d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"d.M.y"},timeFormats$m={full:"HH.mm.ss zzzz",long:"HH.mm.ss z",medium:"HH.mm.ss",short:"HH.mm"},dateTimeFormats$m={full:"{{date}} 'klo' {{time}}",long:"{{date}} 'klo' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$m={date:buildFormatLongFn({formats:dateFormats$m,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$m,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$m,defaultWidth:"full"})},formatRelativeLocale$m={lastWeek:"'viime' eeee 'klo' p",yesterday:"'eilen klo' p",today:"'tänään klo' p",tomorrow:"'huomenna klo' p",nextWeek:"'ensi' eeee 'klo' p",other:"P"},formatRelative$m=(n,t,e,i)=>formatRelativeLocale$m[n],eraValues$m={narrow:["eaa.","jaa."],abbreviated:["eaa.","jaa."],wide:["ennen ajanlaskun alkua","jälkeen ajanlaskun alun"]},quarterValues$m={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartaali","2. kvartaali","3. kvartaali","4. kvartaali"]},monthValues$m={narrow:["T","H","M","H","T","K","H","E","S","L","M","J"],abbreviated:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],wide:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"]},formattingMonthValues$4={narrow:monthValues$m.narrow,abbreviated:monthValues$m.abbreviated,wide:["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"]},dayValues$m={narrow:["S","M","T","K","T","P","L"],short:["su","ma","ti","ke","to","pe","la"],abbreviated:["sunn.","maan.","tiis.","kesk.","torst.","perj.","la"],wide:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},formattingDayValues={narrow:dayValues$m.narrow,short:dayValues$m.short,abbreviated:dayValues$m.abbreviated,wide:["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"]},dayPeriodValues$m={narrow:{am:"ap",pm:"ip",midnight:"keskiyö",noon:"keskipäivä",morning:"ap",afternoon:"ip",evening:"illalla",night:"yöllä"},abbreviated:{am:"ap",pm:"ip",midnight:"keskiyö",noon:"keskipäivä",morning:"ap",afternoon:"ip",evening:"illalla",night:"yöllä"},wide:{am:"ap",pm:"ip",midnight:"keskiyöllä",noon:"keskipäivällä",morning:"aamupäivällä",afternoon:"iltapäivällä",evening:"illalla",night:"yöllä"}},ordinalNumber$m=(n,t)=>Number(n)+".",localize$m={ordinalNumber:ordinalNumber$m,era:buildLocalizeFn({values:eraValues$m,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$m,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$m,defaultWidth:"wide",formattingValues:formattingMonthValues$4,defaultFormattingWidth:"wide"}),day:buildLocalizeFn({values:dayValues$m,defaultWidth:"wide",formattingValues:formattingDayValues,defaultFormattingWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$m,defaultWidth:"wide"})},matchOrdinalNumberPattern$m=/^(\d+)(\.)/i,parseOrdinalNumberPattern$m=/\d+/i,matchEraPatterns$m={narrow:/^(e|j)/i,abbreviated:/^(eaa.|jaa.)/i,wide:/^(ennen ajanlaskun alkua|jälkeen ajanlaskun alun)/i},parseEraPatterns$m={any:[/^e/i,/^j/i]},matchQuarterPatterns$m={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]\.? kvartaali/i},parseQuarterPatterns$m={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$m={narrow:/^[thmkeslj]/i,abbreviated:/^(tammi|helmi|maalis|huhti|touko|kesä|heinä|elo|syys|loka|marras|joulu)/i,wide:/^(tammikuu|helmikuu|maaliskuu|huhtikuu|toukokuu|kesäkuu|heinäkuu|elokuu|syyskuu|lokakuu|marraskuu|joulukuu)(ta)?/i},parseMonthPatterns$m={narrow:[/^t/i,/^h/i,/^m/i,/^h/i,/^t/i,/^k/i,/^h/i,/^e/i,/^s/i,/^l/i,/^m/i,/^j/i],any:[/^ta/i,/^hel/i,/^maa/i,/^hu/i,/^to/i,/^k/i,/^hei/i,/^e/i,/^s/i,/^l/i,/^mar/i,/^j/i]},matchDayPatterns$m={narrow:/^[smtkpl]/i,short:/^(su|ma|ti|ke|to|pe|la)/i,abbreviated:/^(sunn.|maan.|tiis.|kesk.|torst.|perj.|la)/i,wide:/^(sunnuntai|maanantai|tiistai|keskiviikko|torstai|perjantai|lauantai)(na)?/i},parseDayPatterns$m={narrow:[/^s/i,/^m/i,/^t/i,/^k/i,/^t/i,/^p/i,/^l/i],any:[/^s/i,/^m/i,/^ti/i,/^k/i,/^to/i,/^p/i,/^l/i]},matchDayPeriodPatterns$m={narrow:/^(ap|ip|keskiyö|keskipäivä|aamupäivällä|iltapäivällä|illalla|yöllä)/i,any:/^(ap|ip|keskiyöllä|keskipäivällä|aamupäivällä|iltapäivällä|illalla|yöllä)/i},parseDayPeriodPatterns$m={any:{am:/^ap/i,pm:/^ip/i,midnight:/^keskiyö/i,noon:/^keskipäivä/i,morning:/aamupäivällä/i,afternoon:/iltapäivällä/i,evening:/illalla/i,night:/yöllä/i}},match$m={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$m,parsePattern:parseOrdinalNumberPattern$m,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$m,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$m,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$m,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$m,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$m,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$m,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$m,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$m,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$m,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$m,defaultParseWidth:"any"})},fi={code:"fi",formatDistance:formatDistance$m,formatLong:formatLong$m,formatRelative:formatRelative$m,localize:localize$m,match:match$m,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$k={lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}},formatDistance$l=(n,t,e)=>{let i;const r=formatDistanceLocale$k[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"dans "+i:"il y a "+i:i},dateFormats$l={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},timeFormats$l={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$l={full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$l={date:buildFormatLongFn({formats:dateFormats$l,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$l,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$l,defaultWidth:"full"})},formatRelativeLocale$l={lastWeek:"eeee 'dernier à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'prochain à' p",other:"P"},formatRelative$l=(n,t,e,i)=>formatRelativeLocale$l[n],eraValues$l={narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},quarterValues$l={narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},monthValues$l={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},dayValues$l={narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},dayPeriodValues$l={narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},ordinalNumber$l=(n,t)=>{const e=Number(n),i=t==null?void 0:t.unit;if(e===0)return"0";const r=["year","week","hour","minute","second"];let a;return e===1?a=i&&r.includes(i)?"ère":"er":a="ème",e+a},localize$l={ordinalNumber:ordinalNumber$l,era:buildLocalizeFn({values:eraValues$l,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$l,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$l,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$l,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$l,defaultWidth:"wide"})},matchOrdinalNumberPattern$l=/^(\d+)(ième|ère|ème|er|e)?/i,parseOrdinalNumberPattern$l=/\d+/i,matchEraPatterns$l={narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},parseEraPatterns$l={any:[/^av/i,/^ap/i]},matchQuarterPatterns$l={narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},parseQuarterPatterns$l={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$l={narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},parseMonthPatterns$l={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$l={narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},parseDayPatterns$l={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},matchDayPeriodPatterns$l={narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},parseDayPeriodPatterns$l={any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},match$l={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$l,parsePattern:parseOrdinalNumberPattern$l,valueCallback:n=>parseInt(n)}),era:buildMatchFn({matchPatterns:matchEraPatterns$l,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$l,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$l,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$l,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$l,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$l,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$l,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$l,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$l,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$l,defaultParseWidth:"any"})},fr={code:"fr",formatDistance:formatDistance$l,formatLong:formatLong$l,formatRelative:formatRelative$l,localize:localize$l,match:match$l,options:{weekStartsOn:1,firstWeekContainsDate:4}},translations={about:"körülbelül",over:"több mint",almost:"majdnem",lessthan:"kevesebb mint"},withoutSuffixes={xseconds:" másodperc",halfaminute:"fél perc",xminutes:" perc",xhours:" óra",xdays:" nap",xweeks:" hét",xmonths:" hónap",xyears:" év"},withSuffixes={xseconds:{"-1":" másodperccel ezelőtt",1:" másodperc múlva",0:" másodperce"},halfaminute:{"-1":"fél perccel ezelőtt",1:"fél perc múlva",0:"fél perce"},xminutes:{"-1":" perccel ezelőtt",1:" perc múlva",0:" perce"},xhours:{"-1":" órával ezelőtt",1:" óra múlva",0:" órája"},xdays:{"-1":" nappal ezelőtt",1:" nap múlva",0:" napja"},xweeks:{"-1":" héttel ezelőtt",1:" hét múlva",0:" hete"},xmonths:{"-1":" hónappal ezelőtt",1:" hónap múlva",0:" hónapja"},xyears:{"-1":" évvel ezelőtt",1:" év múlva",0:" éve"}},formatDistance$k=(n,t,e)=>{const i=n.match(/about|over|almost|lessthan/i),r=i?n.replace(i[0],""):n,a=(e==null?void 0:e.addSuffix)===!0,o=r.toLowerCase(),l=(e==null?void 0:e.comparison)||0,u=a?withSuffixes[o][l]:withoutSuffixes[o];let d=o==="halfaminute"?u:t+u;if(i){const m=i[0].toLowerCase();d=translations[m]+" "+d}return d},dateFormats$k={full:"y. MMMM d., EEEE",long:"y. MMMM d.",medium:"y. MMM d.",short:"y. MM. dd."},timeFormats$k={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},dateTimeFormats$k={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$k={date:buildFormatLongFn({formats:dateFormats$k,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$k,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$k,defaultWidth:"full"})},accusativeWeekdays$3=["vasárnap","hétfőn","kedden","szerdán","csütörtökön","pénteken","szombaton"];function week(n){return t=>{const e=accusativeWeekdays$3[t.getDay()];return`${n?"":"'múlt' "}'${e}' p'-kor'`}}const formatRelativeLocale$k={lastWeek:week(!1),yesterday:"'tegnap' p'-kor'",today:"'ma' p'-kor'",tomorrow:"'holnap' p'-kor'",nextWeek:week(!0),other:"P"},formatRelative$k=(n,t)=>{const e=formatRelativeLocale$k[n];return typeof e=="function"?e(t):e},eraValues$k={narrow:["ie.","isz."],abbreviated:["i. e.","i. sz."],wide:["Krisztus előtt","időszámításunk szerint"]},quarterValues$k={narrow:["1.","2.","3.","4."],abbreviated:["1. n.év","2. n.év","3. n.év","4. n.év"],wide:["1. negyedév","2. negyedév","3. negyedév","4. negyedév"]},formattingQuarterValues$1={narrow:["I.","II.","III.","IV."],abbreviated:["I. n.év","II. n.év","III. n.év","IV. n.év"],wide:["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"]},monthValues$k={narrow:["J","F","M","Á","M","J","J","A","Sz","O","N","D"],abbreviated:["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],wide:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"]},dayValues$k={narrow:["V","H","K","Sz","Cs","P","Sz"],short:["V","H","K","Sze","Cs","P","Szo"],abbreviated:["V","H","K","Sze","Cs","P","Szo"],wide:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},dayPeriodValues$k={narrow:{am:"de.",pm:"du.",midnight:"éjfél",noon:"dél",morning:"reggel",afternoon:"du.",evening:"este",night:"éjjel"},abbreviated:{am:"de.",pm:"du.",midnight:"éjfél",noon:"dél",morning:"reggel",afternoon:"du.",evening:"este",night:"éjjel"},wide:{am:"de.",pm:"du.",midnight:"éjfél",noon:"dél",morning:"reggel",afternoon:"délután",evening:"este",night:"éjjel"}},ordinalNumber$k=(n,t)=>Number(n)+".",localize$k={ordinalNumber:ordinalNumber$k,era:buildLocalizeFn({values:eraValues$k,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$k,defaultWidth:"wide",argumentCallback:n=>n-1,formattingValues:formattingQuarterValues$1,defaultFormattingWidth:"wide"}),month:buildLocalizeFn({values:monthValues$k,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$k,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$k,defaultWidth:"wide"})},matchOrdinalNumberPattern$k=/^(\d+)\.?/i,parseOrdinalNumberPattern$k=/\d+/i,matchEraPatterns$k={narrow:/^(ie\.|isz\.)/i,abbreviated:/^(i\.\s?e\.?|b?\s?c\s?e|i\.\s?sz\.?)/i,wide:/^(Krisztus előtt|időszámításunk előtt|időszámításunk szerint|i\. sz\.)/i},parseEraPatterns$k={narrow:[/ie/i,/isz/i],abbreviated:[/^(i\.?\s?e\.?|b\s?ce)/i,/^(i\.?\s?sz\.?|c\s?e)/i],any:[/előtt/i,/(szerint|i. sz.)/i]},matchQuarterPatterns$k={narrow:/^[1234]\.?/i,abbreviated:/^[1234]?\.?\s?n\.év/i,wide:/^([1234]|I|II|III|IV)?\.?\s?negyedév/i},parseQuarterPatterns$k={any:[/1|I$/i,/2|II$/i,/3|III/i,/4|IV/i]},matchMonthPatterns$k={narrow:/^[jfmaásond]|sz/i,abbreviated:/^(jan\.?|febr\.?|márc\.?|ápr\.?|máj\.?|jún\.?|júl\.?|aug\.?|szept\.?|okt\.?|nov\.?|dec\.?)/i,wide:/^(január|február|március|április|május|június|július|augusztus|szeptember|október|november|december)/i},parseMonthPatterns$k={narrow:[/^j/i,/^f/i,/^m/i,/^a|á/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s|sz/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^már/i,/^áp/i,/^máj/i,/^jún/i,/^júl/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$k={narrow:/^([vhkpc]|sz|cs|sz)/i,short:/^([vhkp]|sze|cs|szo)/i,abbreviated:/^([vhkp]|sze|cs|szo)/i,wide:/^(vasárnap|hétfő|kedd|szerda|csütörtök|péntek|szombat)/i},parseDayPatterns$k={narrow:[/^v/i,/^h/i,/^k/i,/^sz/i,/^c/i,/^p/i,/^sz/i],any:[/^v/i,/^h/i,/^k/i,/^sze/i,/^c/i,/^p/i,/^szo/i]},matchDayPeriodPatterns$k={any:/^((de|du)\.?|éjfél|délután|dél|reggel|este|éjjel)/i},parseDayPeriodPatterns$k={any:{am:/^de\.?/i,pm:/^du\.?/i,midnight:/^éjf/i,noon:/^dé/i,morning:/reg/i,afternoon:/^délu\.?/i,evening:/es/i,night:/éjj/i}},match$k={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$k,parsePattern:parseOrdinalNumberPattern$k,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$k,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$k,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$k,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$k,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$k,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$k,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$k,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$k,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$k,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$k,defaultParseWidth:"any"})},hu={code:"hu",formatDistance:formatDistance$k,formatLong:formatLong$k,formatRelative:formatRelative$k,localize:localize$k,match:match$k,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$j={lessThanXSeconds:{one:"kurang dari 1 detik",other:"kurang dari {{count}} detik"},xSeconds:{one:"1 detik",other:"{{count}} detik"},halfAMinute:"setengah menit",lessThanXMinutes:{one:"kurang dari 1 menit",other:"kurang dari {{count}} menit"},xMinutes:{one:"1 menit",other:"{{count}} menit"},aboutXHours:{one:"sekitar 1 jam",other:"sekitar {{count}} jam"},xHours:{one:"1 jam",other:"{{count}} jam"},xDays:{one:"1 hari",other:"{{count}} hari"},aboutXWeeks:{one:"sekitar 1 minggu",other:"sekitar {{count}} minggu"},xWeeks:{one:"1 minggu",other:"{{count}} minggu"},aboutXMonths:{one:"sekitar 1 bulan",other:"sekitar {{count}} bulan"},xMonths:{one:"1 bulan",other:"{{count}} bulan"},aboutXYears:{one:"sekitar 1 tahun",other:"sekitar {{count}} tahun"},xYears:{one:"1 tahun",other:"{{count}} tahun"},overXYears:{one:"lebih dari 1 tahun",other:"lebih dari {{count}} tahun"},almostXYears:{one:"hampir 1 tahun",other:"hampir {{count}} tahun"}},formatDistance$j=(n,t,e)=>{let i;const r=formatDistanceLocale$j[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"dalam waktu "+i:i+" yang lalu":i},dateFormats$j={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"d/M/yyyy"},timeFormats$j={full:"HH.mm.ss",long:"HH.mm.ss",medium:"HH.mm",short:"HH.mm"},dateTimeFormats$j={full:"{{date}} 'pukul' {{time}}",long:"{{date}} 'pukul' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$j={date:buildFormatLongFn({formats:dateFormats$j,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$j,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$j,defaultWidth:"full"})},formatRelativeLocale$j={lastWeek:"eeee 'lalu pukul' p",yesterday:"'Kemarin pukul' p",today:"'Hari ini pukul' p",tomorrow:"'Besok pukul' p",nextWeek:"eeee 'pukul' p",other:"P"},formatRelative$j=(n,t,e,i)=>formatRelativeLocale$j[n],eraValues$j={narrow:["SM","M"],abbreviated:["SM","M"],wide:["Sebelum Masehi","Masehi"]},quarterValues$j={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"]},monthValues$j={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],wide:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},dayValues$j={narrow:["M","S","S","R","K","J","S"],short:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],abbreviated:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],wide:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},dayPeriodValues$j={narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},formattingDayPeriodValues$f={narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},ordinalNumber$j=(n,t)=>"ke-"+Number(n),localize$j={ordinalNumber:ordinalNumber$j,era:buildLocalizeFn({values:eraValues$j,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$j,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$j,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$j,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$j,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$f,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$j=/^ke-(\d+)?/i,parseOrdinalNumberPattern$j=/\d+/i,matchEraPatterns$j={narrow:/^(sm|m)/i,abbreviated:/^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,wide:/^(sebelum masehi|sebelum era umum|masehi|era umum)/i},parseEraPatterns$j={any:[/^s/i,/^(m|e)/i]},matchQuarterPatterns$j={narrow:/^[1234]/i,abbreviated:/^K-?\s[1234]/i,wide:/^Kuartal ke-?\s?[1234]/i},parseQuarterPatterns$j={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$j={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,wide:/^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i},parseMonthPatterns$j={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^ma/i,/^ap/i,/^me/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$j={narrow:/^[srkjm]/i,short:/^(min|sen|sel|rab|kam|jum|sab)/i,abbreviated:/^(min|sen|sel|rab|kam|jum|sab)/i,wide:/^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i},parseDayPatterns$j={narrow:[/^m/i,/^s/i,/^s/i,/^r/i,/^k/i,/^j/i,/^s/i],any:[/^m/i,/^sen/i,/^sel/i,/^r/i,/^k/i,/^j/i,/^sa/i]},matchDayPeriodPatterns$j={narrow:/^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,any:/^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i},parseDayPeriodPatterns$j={any:{am:/^a/i,pm:/^pm/i,midnight:/^tengah m/i,noon:/^tengah h/i,morning:/pagi/i,afternoon:/siang/i,evening:/sore/i,night:/malam/i}},match$j={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$j,parsePattern:parseOrdinalNumberPattern$j,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$j,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$j,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$j,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$j,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$j,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$j,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$j,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$j,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$j,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$j,defaultParseWidth:"any"})},id={code:"id",formatDistance:formatDistance$j,formatLong:formatLong$j,formatRelative:formatRelative$j,localize:localize$j,match:match$j,options:{weekStartsOn:1,firstWeekContainsDate:1}},formatDistanceLocale$i={lessThanXSeconds:{one:"meno di un secondo",other:"meno di {{count}} secondi"},xSeconds:{one:"un secondo",other:"{{count}} secondi"},halfAMinute:"alcuni secondi",lessThanXMinutes:{one:"meno di un minuto",other:"meno di {{count}} minuti"},xMinutes:{one:"un minuto",other:"{{count}} minuti"},aboutXHours:{one:"circa un'ora",other:"circa {{count}} ore"},xHours:{one:"un'ora",other:"{{count}} ore"},xDays:{one:"un giorno",other:"{{count}} giorni"},aboutXWeeks:{one:"circa una settimana",other:"circa {{count}} settimane"},xWeeks:{one:"una settimana",other:"{{count}} settimane"},aboutXMonths:{one:"circa un mese",other:"circa {{count}} mesi"},xMonths:{one:"un mese",other:"{{count}} mesi"},aboutXYears:{one:"circa un anno",other:"circa {{count}} anni"},xYears:{one:"un anno",other:"{{count}} anni"},overXYears:{one:"più di un anno",other:"più di {{count}} anni"},almostXYears:{one:"quasi un anno",other:"quasi {{count}} anni"}},formatDistance$i=(n,t,e)=>{let i;const r=formatDistanceLocale$i[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"tra "+i:i+" fa":i},dateFormats$i={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},timeFormats$i={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$i={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$i={date:buildFormatLongFn({formats:dateFormats$i,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$i,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$i,defaultWidth:"full"})},weekdays=["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"];function lastWeek$3(n){switch(n){case 0:return"'domenica scorsa alle' p";default:return"'"+weekdays[n]+" scorso alle' p"}}function thisWeek$3(n){return"'"+weekdays[n]+" alle' p"}function nextWeek$3(n){switch(n){case 0:return"'domenica prossima alle' p";default:return"'"+weekdays[n]+" prossimo alle' p"}}const formatRelativeLocale$i={lastWeek:(n,t,e)=>{const i=n.getDay();return isSameWeek(n,t,e)?thisWeek$3(i):lastWeek$3(i)},yesterday:"'ieri alle' p",today:"'oggi alle' p",tomorrow:"'domani alle' p",nextWeek:(n,t,e)=>{const i=n.getDay();return isSameWeek(n,t,e)?thisWeek$3(i):nextWeek$3(i)},other:"P"},formatRelative$i=(n,t,e,i)=>{const r=formatRelativeLocale$i[n];return typeof r=="function"?r(t,e,i):r},eraValues$i={narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["avanti Cristo","dopo Cristo"]},quarterValues$i={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},monthValues$i={narrow:["G","F","M","A","M","G","L","A","S","O","N","D"],abbreviated:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],wide:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},dayValues$i={narrow:["D","L","M","M","G","V","S"],short:["dom","lun","mar","mer","gio","ven","sab"],abbreviated:["dom","lun","mar","mer","gio","ven","sab"],wide:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},dayPeriodValues$i={narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"}},formattingDayPeriodValues$e={narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"}},ordinalNumber$i=(n,t)=>{const e=Number(n);return String(e)},localize$i={ordinalNumber:ordinalNumber$i,era:buildLocalizeFn({values:eraValues$i,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$i,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$i,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$i,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$i,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$e,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$i=/^(\d+)(º)?/i,parseOrdinalNumberPattern$i=/\d+/i,matchEraPatterns$i={narrow:/^(aC|dC)/i,abbreviated:/^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,wide:/^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i},parseEraPatterns$i={any:[/^a/i,/^(d|e)/i]},matchQuarterPatterns$i={narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](º)? trimestre/i},parseQuarterPatterns$i={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$i={narrow:/^[gfmalsond]/i,abbreviated:/^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,wide:/^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i},parseMonthPatterns$i={narrow:[/^g/i,/^f/i,/^m/i,/^a/i,/^m/i,/^g/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ge/i,/^f/i,/^mar/i,/^ap/i,/^mag/i,/^gi/i,/^l/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$i={narrow:/^[dlmgvs]/i,short:/^(do|lu|ma|me|gi|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|gio|ven|sab)/i,wide:/^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i},parseDayPatterns$i={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^g/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^g/i,/^v/i,/^s/i]},matchDayPeriodPatterns$i={narrow:/^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,any:/^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i},parseDayPeriodPatterns$i={any:{am:/^a/i,pm:/^p/i,midnight:/^mezza/i,noon:/^mezzo/i,morning:/mattina/i,afternoon:/pomeriggio/i,evening:/sera/i,night:/notte/i}},match$i={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$i,parsePattern:parseOrdinalNumberPattern$i,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$i,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$i,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$i,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$i,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$i,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$i,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$i,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$i,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$i,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$i,defaultParseWidth:"any"})},it={code:"it",formatDistance:formatDistance$i,formatLong:formatLong$i,formatRelative:formatRelative$i,localize:localize$i,match:match$i,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$h={lessThanXSeconds:{one:"1秒未満",other:"{{count}}秒未満",oneWithSuffix:"約1秒",otherWithSuffix:"約{{count}}秒"},xSeconds:{one:"1秒",other:"{{count}}秒"},halfAMinute:"30秒",lessThanXMinutes:{one:"1分未満",other:"{{count}}分未満",oneWithSuffix:"約1分",otherWithSuffix:"約{{count}}分"},xMinutes:{one:"1分",other:"{{count}}分"},aboutXHours:{one:"約1時間",other:"約{{count}}時間"},xHours:{one:"1時間",other:"{{count}}時間"},xDays:{one:"1日",other:"{{count}}日"},aboutXWeeks:{one:"約1週間",other:"約{{count}}週間"},xWeeks:{one:"1週間",other:"{{count}}週間"},aboutXMonths:{one:"約1か月",other:"約{{count}}か月"},xMonths:{one:"1か月",other:"{{count}}か月"},aboutXYears:{one:"約1年",other:"約{{count}}年"},xYears:{one:"1年",other:"{{count}}年"},overXYears:{one:"1年以上",other:"{{count}}年以上"},almostXYears:{one:"1年近く",other:"{{count}}年近く"}},formatDistance$h=(n,t,e)=>{e=e||{};let i;const r=formatDistanceLocale$h[n];return typeof r=="string"?i=r:t===1?e.addSuffix&&r.oneWithSuffix?i=r.oneWithSuffix:i=r.one:e.addSuffix&&r.otherWithSuffix?i=r.otherWithSuffix.replace("{{count}}",String(t)):i=r.other.replace("{{count}}",String(t)),e.addSuffix?e.comparison&&e.comparison>0?i+"後":i+"前":i},dateFormats$h={full:"y年M月d日EEEE",long:"y年M月d日",medium:"y/MM/dd",short:"y/MM/dd"},timeFormats$h={full:"H時mm分ss秒 zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},dateTimeFormats$h={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$h={date:buildFormatLongFn({formats:dateFormats$h,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$h,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$h,defaultWidth:"full"})},formatRelativeLocale$h={lastWeek:"先週のeeeeのp",yesterday:"昨日のp",today:"今日のp",tomorrow:"明日のp",nextWeek:"翌週のeeeeのp",other:"P"},formatRelative$h=(n,t,e,i)=>formatRelativeLocale$h[n],eraValues$h={narrow:["BC","AC"],abbreviated:["紀元前","西暦"],wide:["紀元前","西暦"]},quarterValues$h={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["第1四半期","第2四半期","第3四半期","第4四半期"]},monthValues$h={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]},dayValues$h={narrow:["日","月","火","水","木","金","土"],short:["日","月","火","水","木","金","土"],abbreviated:["日","月","火","水","木","金","土"],wide:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"]},dayPeriodValues$h={narrow:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"},abbreviated:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"},wide:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"}},formattingDayPeriodValues$d={narrow:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"},abbreviated:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"},wide:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"}},ordinalNumber$h=(n,t)=>{const e=Number(n);switch(String(t==null?void 0:t.unit)){case"year":return`${e}年`;case"quarter":return`第${e}四半期`;case"month":return`${e}月`;case"week":return`第${e}週`;case"date":return`${e}日`;case"hour":return`${e}時`;case"minute":return`${e}分`;case"second":return`${e}秒`;default:return`${e}`}},localize$h={ordinalNumber:ordinalNumber$h,era:buildLocalizeFn({values:eraValues$h,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$h,defaultWidth:"wide",argumentCallback:n=>Number(n)-1}),month:buildLocalizeFn({values:monthValues$h,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$h,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$h,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$d,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$h=/^第?\d+(年|四半期|月|週|日|時|分|秒)?/i,parseOrdinalNumberPattern$h=/\d+/i,matchEraPatterns$h={narrow:/^(B\.?C\.?|A\.?D\.?)/i,abbreviated:/^(紀元[前後]|西暦)/i,wide:/^(紀元[前後]|西暦)/i},parseEraPatterns$h={narrow:[/^B/i,/^A/i],any:[/^(紀元前)/i,/^(西暦|紀元後)/i]},matchQuarterPatterns$h={narrow:/^[1234]/i,abbreviated:/^Q[1234]/i,wide:/^第[1234一二三四1234]四半期/i},parseQuarterPatterns$h={any:[/(1|一|1)/i,/(2|二|2)/i,/(3|三|3)/i,/(4|四|4)/i]},matchMonthPatterns$h={narrow:/^([123456789]|1[012])/,abbreviated:/^([123456789]|1[012])月/i,wide:/^([123456789]|1[012])月/i},parseMonthPatterns$h={any:[/^1\D/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},matchDayPatterns$h={narrow:/^[日月火水木金土]/,short:/^[日月火水木金土]/,abbreviated:/^[日月火水木金土]/,wide:/^[日月火水木金土]曜日/},parseDayPatterns$h={any:[/^日/,/^月/,/^火/,/^水/,/^木/,/^金/,/^土/]},matchDayPeriodPatterns$h={any:/^(AM|PM|午前|午後|正午|深夜|真夜中|夜|朝)/i},parseDayPeriodPatterns$h={any:{am:/^(A|午前)/i,pm:/^(P|午後)/i,midnight:/^深夜|真夜中/i,noon:/^正午/i,morning:/^朝/i,afternoon:/^午後/i,evening:/^夜/i,night:/^深夜/i}},match$h={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$h,parsePattern:parseOrdinalNumberPattern$h,valueCallback:function(n){return parseInt(n,10)}}),era:buildMatchFn({matchPatterns:matchEraPatterns$h,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$h,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$h,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$h,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$h,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$h,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$h,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$h,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$h,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$h,defaultParseWidth:"any"})},ja={code:"ja",formatDistance:formatDistance$h,formatLong:formatLong$h,formatRelative:formatRelative$h,localize:localize$h,match:match$h,options:{weekStartsOn:0,firstWeekContainsDate:1}},formatDistanceLocale$g={lessThanXSeconds:{one:"1초 미만",other:"{{count}}초 미만"},xSeconds:{one:"1초",other:"{{count}}초"},halfAMinute:"30초",lessThanXMinutes:{one:"1분 미만",other:"{{count}}분 미만"},xMinutes:{one:"1분",other:"{{count}}분"},aboutXHours:{one:"약 1시간",other:"약 {{count}}시간"},xHours:{one:"1시간",other:"{{count}}시간"},xDays:{one:"1일",other:"{{count}}일"},aboutXWeeks:{one:"약 1주",other:"약 {{count}}주"},xWeeks:{one:"1주",other:"{{count}}주"},aboutXMonths:{one:"약 1개월",other:"약 {{count}}개월"},xMonths:{one:"1개월",other:"{{count}}개월"},aboutXYears:{one:"약 1년",other:"약 {{count}}년"},xYears:{one:"1년",other:"{{count}}년"},overXYears:{one:"1년 이상",other:"{{count}}년 이상"},almostXYears:{one:"거의 1년",other:"거의 {{count}}년"}},formatDistance$g=(n,t,e)=>{let i;const r=formatDistanceLocale$g[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?i+" 후":i+" 전":i},dateFormats$g={full:"y년 M월 d일 EEEE",long:"y년 M월 d일",medium:"y.MM.dd",short:"y.MM.dd"},timeFormats$g={full:"a H시 mm분 ss초 zzzz",long:"a H:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$g={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$g={date:buildFormatLongFn({formats:dateFormats$g,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$g,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$g,defaultWidth:"full"})},formatRelativeLocale$g={lastWeek:"'지난' eeee p",yesterday:"'어제' p",today:"'오늘' p",tomorrow:"'내일' p",nextWeek:"'다음' eeee p",other:"P"},formatRelative$g=(n,t,e,i)=>formatRelativeLocale$g[n],eraValues$g={narrow:["BC","AD"],abbreviated:["BC","AD"],wide:["기원전","서기"]},quarterValues$g={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1분기","2분기","3분기","4분기"]},monthValues$g={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],wide:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},dayValues$g={narrow:["일","월","화","수","목","금","토"],short:["일","월","화","수","목","금","토"],abbreviated:["일","월","화","수","목","금","토"],wide:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},dayPeriodValues$g={narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},formattingDayPeriodValues$c={narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},ordinalNumber$g=(n,t)=>{const e=Number(n);switch(String(t==null?void 0:t.unit)){case"minute":case"second":return String(e);case"date":return e+"일";default:return e+"번째"}},localize$g={ordinalNumber:ordinalNumber$g,era:buildLocalizeFn({values:eraValues$g,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$g,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$g,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$g,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$g,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$c,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$g=/^(\d+)(일|번째)?/i,parseOrdinalNumberPattern$g=/\d+/i,matchEraPatterns$g={narrow:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(기원전|서기)/i},parseEraPatterns$g={any:[/^(bc|기원전)/i,/^(ad|서기)/i]},matchQuarterPatterns$g={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]사?분기/i},parseQuarterPatterns$g={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$g={narrow:/^(1[012]|[123456789])/,abbreviated:/^(1[012]|[123456789])월/i,wide:/^(1[012]|[123456789])월/i},parseMonthPatterns$g={any:[/^1월?$/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},matchDayPatterns$g={narrow:/^[일월화수목금토]/,short:/^[일월화수목금토]/,abbreviated:/^[일월화수목금토]/,wide:/^[일월화수목금토]요일/},parseDayPatterns$g={any:[/^일/,/^월/,/^화/,/^수/,/^목/,/^금/,/^토/]},matchDayPeriodPatterns$g={any:/^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i},parseDayPeriodPatterns$g={any:{am:/^(am|오전)/i,pm:/^(pm|오후)/i,midnight:/^자정/i,noon:/^정오/i,morning:/^아침/i,afternoon:/^오후/i,evening:/^저녁/i,night:/^밤/i}},match$g={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$g,parsePattern:parseOrdinalNumberPattern$g,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$g,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$g,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$g,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$g,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$g,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$g,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$g,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$g,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$g,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$g,defaultParseWidth:"any"})},ko={code:"ko",formatDistance:formatDistance$g,formatLong:formatLong$g,formatRelative:formatRelative$g,localize:localize$g,match:match$g,options:{weekStartsOn:0,firstWeekContainsDate:1}},formatDistanceLocale$f={lessThanXSeconds:{one:"mindre enn ett sekund",other:"mindre enn {{count}} sekunder"},xSeconds:{one:"ett sekund",other:"{{count}} sekunder"},halfAMinute:"et halvt minutt",lessThanXMinutes:{one:"mindre enn ett minutt",other:"mindre enn {{count}} minutter"},xMinutes:{one:"ett minutt",other:"{{count}} minutter"},aboutXHours:{one:"omtrent en time",other:"omtrent {{count}} timer"},xHours:{one:"en time",other:"{{count}} timer"},xDays:{one:"en dag",other:"{{count}} dager"},aboutXWeeks:{one:"omtrent en uke",other:"omtrent {{count}} uker"},xWeeks:{one:"en uke",other:"{{count}} uker"},aboutXMonths:{one:"omtrent en måned",other:"omtrent {{count}} måneder"},xMonths:{one:"en måned",other:"{{count}} måneder"},aboutXYears:{one:"omtrent ett år",other:"omtrent {{count}} år"},xYears:{one:"ett år",other:"{{count}} år"},overXYears:{one:"over ett år",other:"over {{count}} år"},almostXYears:{one:"nesten ett år",other:"nesten {{count}} år"}},formatDistance$f=(n,t,e)=>{let i;const r=formatDistanceLocale$f[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"om "+i:i+" siden":i},dateFormats$f={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd.MM.y"},timeFormats$f={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$f={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$f={date:buildFormatLongFn({formats:dateFormats$f,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$f,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$f,defaultWidth:"full"})},formatRelativeLocale$f={lastWeek:"'forrige' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgen kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"},formatRelative$f=(n,t,e,i)=>formatRelativeLocale$f[n],eraValues$f={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["før Kristus","etter Kristus"]},quarterValues$f={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},monthValues$f={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],wide:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]},dayValues$f={narrow:["S","M","T","O","T","F","L"],short:["sø","ma","ti","on","to","fr","lø"],abbreviated:["søn","man","tir","ons","tor","fre","lør"],wide:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},dayPeriodValues$f={narrow:{am:"a",pm:"p",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morgenen",afternoon:"på ettermiddagen",evening:"på kvelden",night:"på natten"}},ordinalNumber$f=(n,t)=>Number(n)+".",localize$f={ordinalNumber:ordinalNumber$f,era:buildLocalizeFn({values:eraValues$f,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$f,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$f,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$f,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$f,defaultWidth:"wide"})},matchOrdinalNumberPattern$f=/^(\d+)\.?/i,parseOrdinalNumberPattern$f=/\d+/i,matchEraPatterns$f={narrow:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,abbreviated:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,wide:/^(før Kristus|før vår tid|etter Kristus|vår tid)/i},parseEraPatterns$f={any:[/^f/i,/^e/i]},matchQuarterPatterns$f={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? kvartal/i},parseQuarterPatterns$f={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$f={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,wide:/^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i},parseMonthPatterns$f={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^aug/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$f={narrow:/^[smtofl]/i,short:/^(sø|ma|ti|on|to|fr|lø)/i,abbreviated:/^(søn|man|tir|ons|tor|fre|lør)/i,wide:/^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i},parseDayPatterns$f={any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},matchDayPeriodPatterns$f={narrow:/^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,any:/^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i},parseDayPeriodPatterns$f={any:{am:/^a(\.?\s?m\.?)?$/i,pm:/^p(\.?\s?m\.?)?$/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgen/i,afternoon:/ettermiddag/i,evening:/kveld/i,night:/natt/i}},match$f={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$f,parsePattern:parseOrdinalNumberPattern$f,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$f,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$f,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$f,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$f,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$f,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$f,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$f,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$f,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$f,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$f,defaultParseWidth:"any"})},nb={code:"nb",formatDistance:formatDistance$f,formatLong:formatLong$f,formatRelative:formatRelative$f,localize:localize$f,match:match$f,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$e={lessThanXSeconds:{one:"minder dan een seconde",other:"minder dan {{count}} seconden"},xSeconds:{one:"1 seconde",other:"{{count}} seconden"},halfAMinute:"een halve minuut",lessThanXMinutes:{one:"minder dan een minuut",other:"minder dan {{count}} minuten"},xMinutes:{one:"een minuut",other:"{{count}} minuten"},aboutXHours:{one:"ongeveer 1 uur",other:"ongeveer {{count}} uur"},xHours:{one:"1 uur",other:"{{count}} uur"},xDays:{one:"1 dag",other:"{{count}} dagen"},aboutXWeeks:{one:"ongeveer 1 week",other:"ongeveer {{count}} weken"},xWeeks:{one:"1 week",other:"{{count}} weken"},aboutXMonths:{one:"ongeveer 1 maand",other:"ongeveer {{count}} maanden"},xMonths:{one:"1 maand",other:"{{count}} maanden"},aboutXYears:{one:"ongeveer 1 jaar",other:"ongeveer {{count}} jaar"},xYears:{one:"1 jaar",other:"{{count}} jaar"},overXYears:{one:"meer dan 1 jaar",other:"meer dan {{count}} jaar"},almostXYears:{one:"bijna 1 jaar",other:"bijna {{count}} jaar"}},formatDistance$e=(n,t,e)=>{let i;const r=formatDistanceLocale$e[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"over "+i:i+" geleden":i},dateFormats$e={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd-MM-y"},timeFormats$e={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$e={full:"{{date}} 'om' {{time}}",long:"{{date}} 'om' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$e={date:buildFormatLongFn({formats:dateFormats$e,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$e,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$e,defaultWidth:"full"})},formatRelativeLocale$e={lastWeek:"'afgelopen' eeee 'om' p",yesterday:"'gisteren om' p",today:"'vandaag om' p",tomorrow:"'morgen om' p",nextWeek:"eeee 'om' p",other:"P"},formatRelative$e=(n,t,e,i)=>formatRelativeLocale$e[n],eraValues$e={narrow:["v.C.","n.C."],abbreviated:["v.Chr.","n.Chr."],wide:["voor Christus","na Christus"]},quarterValues$e={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"]},monthValues$e={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],wide:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]},dayValues$e={narrow:["Z","M","D","W","D","V","Z"],short:["zo","ma","di","wo","do","vr","za"],abbreviated:["zon","maa","din","woe","don","vri","zat"],wide:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},dayPeriodValues$e={narrow:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"},abbreviated:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"},wide:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"}},ordinalNumber$e=(n,t)=>Number(n)+"e",localize$e={ordinalNumber:ordinalNumber$e,era:buildLocalizeFn({values:eraValues$e,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$e,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$e,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$e,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$e,defaultWidth:"wide"})},matchOrdinalNumberPattern$e=/^(\d+)e?/i,parseOrdinalNumberPattern$e=/\d+/i,matchEraPatterns$e={narrow:/^([vn]\.? ?C\.?)/,abbreviated:/^([vn]\. ?Chr\.?)/,wide:/^((voor|na) Christus)/},parseEraPatterns$e={any:[/^v/,/^n/]},matchQuarterPatterns$e={narrow:/^[1234]/i,abbreviated:/^K[1234]/i,wide:/^[1234]e kwartaal/i},parseQuarterPatterns$e={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$e={narrow:/^[jfmasond]/i,abbreviated:/^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,wide:/^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i},parseMonthPatterns$e={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^jan/i,/^feb/i,/^m(r|a)/i,/^apr/i,/^mei/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i]},matchDayPatterns$e={narrow:/^[zmdwv]/i,short:/^(zo|ma|di|wo|do|vr|za)/i,abbreviated:/^(zon|maa|din|woe|don|vri|zat)/i,wide:/^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i},parseDayPatterns$e={narrow:[/^z/i,/^m/i,/^d/i,/^w/i,/^d/i,/^v/i,/^z/i],any:[/^zo/i,/^ma/i,/^di/i,/^wo/i,/^do/i,/^vr/i,/^za/i]},matchDayPeriodPatterns$e={any:/^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i},parseDayPeriodPatterns$e={any:{am:/^am/i,pm:/^pm/i,midnight:/^middernacht/i,noon:/^het middaguur/i,morning:/ochtend/i,afternoon:/middag/i,evening:/avond/i,night:/nacht/i}},match$e={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$e,parsePattern:parseOrdinalNumberPattern$e,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$e,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$e,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$e,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$e,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$e,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$e,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$e,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$e,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$e,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$e,defaultParseWidth:"any"})},nl={code:"nl",formatDistance:formatDistance$e,formatLong:formatLong$e,formatRelative:formatRelative$e,localize:localize$e,match:match$e,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$d={lessThanXSeconds:{one:"mindre enn eitt sekund",other:"mindre enn {{count}} sekund"},xSeconds:{one:"eitt sekund",other:"{{count}} sekund"},halfAMinute:"eit halvt minutt",lessThanXMinutes:{one:"mindre enn eitt minutt",other:"mindre enn {{count}} minutt"},xMinutes:{one:"eitt minutt",other:"{{count}} minutt"},aboutXHours:{one:"omtrent ein time",other:"omtrent {{count}} timar"},xHours:{one:"ein time",other:"{{count}} timar"},xDays:{one:"ein dag",other:"{{count}} dagar"},aboutXWeeks:{one:"omtrent ei veke",other:"omtrent {{count}} veker"},xWeeks:{one:"ei veke",other:"{{count}} veker"},aboutXMonths:{one:"omtrent ein månad",other:"omtrent {{count}} månader"},xMonths:{one:"ein månad",other:"{{count}} månader"},aboutXYears:{one:"omtrent eitt år",other:"omtrent {{count}} år"},xYears:{one:"eitt år",other:"{{count}} år"},overXYears:{one:"over eitt år",other:"over {{count}} år"},almostXYears:{one:"nesten eitt år",other:"nesten {{count}} år"}},wordMapping$1=["null","ein","to","tre","fire","fem","seks","sju","åtte","ni","ti","elleve","tolv"],formatDistance$d=(n,t,e)=>{let i;const r=formatDistanceLocale$d[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t<13?wordMapping$1[t]:String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"om "+i:i+" sidan":i},dateFormats$d={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd.MM.y"},timeFormats$d={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$d={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$d={date:buildFormatLongFn({formats:dateFormats$d,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$d,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$d,defaultWidth:"full"})},formatRelativeLocale$d={lastWeek:"'førre' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgon kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"},formatRelative$d=(n,t,e,i)=>formatRelativeLocale$d[n],eraValues$d={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["før Kristus","etter Kristus"]},quarterValues$d={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},monthValues$d={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],wide:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]},dayValues$d={narrow:["S","M","T","O","T","F","L"],short:["su","må","ty","on","to","fr","lau"],abbreviated:["sun","mån","tys","ons","tor","fre","laur"],wide:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"]},dayPeriodValues$d={narrow:{am:"a",pm:"p",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natta"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natta"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morgonen",afternoon:"på ettermiddagen",evening:"på kvelden",night:"på natta"}},ordinalNumber$d=(n,t)=>Number(n)+".",localize$d={ordinalNumber:ordinalNumber$d,era:buildLocalizeFn({values:eraValues$d,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$d,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$d,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$d,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$d,defaultWidth:"wide"})},matchOrdinalNumberPattern$d=/^(\d+)\.?/i,parseOrdinalNumberPattern$d=/\d+/i,matchEraPatterns$d={narrow:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,abbreviated:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,wide:/^(før Kristus|før vår tid|etter Kristus|vår tid)/i},parseEraPatterns$d={any:[/^f/i,/^e/i]},matchQuarterPatterns$d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? kvartal/i},parseQuarterPatterns$d={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$d={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,wide:/^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i},parseMonthPatterns$d={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^aug/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$d={narrow:/^[smtofl]/i,short:/^(su|må|ty|on|to|fr|la)/i,abbreviated:/^(sun|mån|tys|ons|tor|fre|laur)/i,wide:/^(sundag|måndag|tysdag|onsdag|torsdag|fredag|laurdag)/i},parseDayPatterns$d={any:[/^s/i,/^m/i,/^ty/i,/^o/i,/^to/i,/^f/i,/^l/i]},matchDayPeriodPatterns$d={narrow:/^(midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta)|[ap])/i,any:/^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta))/i},parseDayPeriodPatterns$d={any:{am:/^a(\.?\s?m\.?)?$/i,pm:/^p(\.?\s?m\.?)?$/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgon/i,afternoon:/ettermiddag/i,evening:/kveld/i,night:/natt/i}},match$d={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$d,parsePattern:parseOrdinalNumberPattern$d,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$d,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$d,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$d,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$d,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$d,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$d,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$d,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$d,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$d,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$d,defaultParseWidth:"any"})},nn={code:"nn",formatDistance:formatDistance$d,formatLong:formatLong$d,formatRelative:formatRelative$d,localize:localize$d,match:match$d,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$c={lessThanXSeconds:{one:{regular:"mniej niż sekunda",past:"mniej niż sekundę",future:"mniej niż sekundę"},twoFour:"mniej niż {{count}} sekundy",other:"mniej niż {{count}} sekund"},xSeconds:{one:{regular:"sekunda",past:"sekundę",future:"sekundę"},twoFour:"{{count}} sekundy",other:"{{count}} sekund"},halfAMinute:{one:"pół minuty",twoFour:"pół minuty",other:"pół minuty"},lessThanXMinutes:{one:{regular:"mniej niż minuta",past:"mniej niż minutę",future:"mniej niż minutę"},twoFour:"mniej niż {{count}} minuty",other:"mniej niż {{count}} minut"},xMinutes:{one:{regular:"minuta",past:"minutę",future:"minutę"},twoFour:"{{count}} minuty",other:"{{count}} minut"},aboutXHours:{one:{regular:"około godziny",past:"około godziny",future:"około godzinę"},twoFour:"około {{count}} godziny",other:"około {{count}} godzin"},xHours:{one:{regular:"godzina",past:"godzinę",future:"godzinę"},twoFour:"{{count}} godziny",other:"{{count}} godzin"},xDays:{one:{regular:"dzień",past:"dzień",future:"1 dzień"},twoFour:"{{count}} dni",other:"{{count}} dni"},aboutXWeeks:{one:"około tygodnia",twoFour:"około {{count}} tygodni",other:"około {{count}} tygodni"},xWeeks:{one:"tydzień",twoFour:"{{count}} tygodnie",other:"{{count}} tygodni"},aboutXMonths:{one:"około miesiąc",twoFour:"około {{count}} miesiące",other:"około {{count}} miesięcy"},xMonths:{one:"miesiąc",twoFour:"{{count}} miesiące",other:"{{count}} miesięcy"},aboutXYears:{one:"około rok",twoFour:"około {{count}} lata",other:"około {{count}} lat"},xYears:{one:"rok",twoFour:"{{count}} lata",other:"{{count}} lat"},overXYears:{one:"ponad rok",twoFour:"ponad {{count}} lata",other:"ponad {{count}} lat"},almostXYears:{one:"prawie rok",twoFour:"prawie {{count}} lata",other:"prawie {{count}} lat"}};function declensionGroup$1(n,t){if(t===1)return n.one;const e=t%100;if(e<=20&&e>10)return n.other;const i=e%10;return i>=2&&i<=4?n.twoFour:n.other}function declension$3(n,t,e){const i=declensionGroup$1(n,t);return(typeof i=="string"?i:i[e]).replace("{{count}}",String(t))}const formatDistance$c=(n,t,e)=>{const i=formatDistanceLocale$c[n];return e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"za "+declension$3(i,t,"future"):declension$3(i,t,"past")+" temu":declension$3(i,t,"regular")},dateFormats$c={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},timeFormats$c={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$c={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$c={date:buildFormatLongFn({formats:dateFormats$c,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$c,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$c,defaultWidth:"full"})},adjectivesLastWeek={masculine:"ostatni",feminine:"ostatnia"},adjectivesThisWeek={masculine:"ten",feminine:"ta"},adjectivesNextWeek={masculine:"następny",feminine:"następna"},dayGrammaticalGender={0:"feminine",1:"masculine",2:"masculine",3:"feminine",4:"masculine",5:"masculine",6:"feminine"};function dayAndTimeWithAdjective(n,t,e,i){let r;if(isSameWeek(t,e,i))r=adjectivesThisWeek;else if(n==="lastWeek")r=adjectivesLastWeek;else if(n==="nextWeek")r=adjectivesNextWeek;else throw new Error(`Cannot determine adjectives for token ${n}`);const a=t.getDay(),o=dayGrammaticalGender[a];return`'${r[o]}' eeee 'o' p`}const formatRelativeLocale$c={lastWeek:dayAndTimeWithAdjective,yesterday:"'wczoraj o' p",today:"'dzisiaj o' p",tomorrow:"'jutro o' p",nextWeek:dayAndTimeWithAdjective,other:"P"},formatRelative$c=(n,t,e,i)=>{const r=formatRelativeLocale$c[n];return typeof r=="function"?r(n,t,e,i):r},eraValues$c={narrow:["p.n.e.","n.e."],abbreviated:["p.n.e.","n.e."],wide:["przed naszą erą","naszej ery"]},quarterValues$c={narrow:["1","2","3","4"],abbreviated:["I kw.","II kw.","III kw.","IV kw."],wide:["I kwartał","II kwartał","III kwartał","IV kwartał"]},monthValues$c={narrow:["S","L","M","K","M","C","L","S","W","P","L","G"],abbreviated:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],wide:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"]},monthFormattingValues={narrow:["s","l","m","k","m","c","l","s","w","p","l","g"],abbreviated:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],wide:["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"]},dayValues$c={narrow:["N","P","W","Ś","C","P","S"],short:["nie","pon","wto","śro","czw","pią","sob"],abbreviated:["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],wide:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},dayFormattingValues={narrow:["n","p","w","ś","c","p","s"],short:["nie","pon","wto","śro","czw","pią","sob"],abbreviated:["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],wide:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},dayPeriodValues$c={narrow:{am:"a",pm:"p",midnight:"półn.",noon:"poł",morning:"rano",afternoon:"popoł.",evening:"wiecz.",night:"noc"},abbreviated:{am:"AM",pm:"PM",midnight:"północ",noon:"południe",morning:"rano",afternoon:"popołudnie",evening:"wieczór",night:"noc"},wide:{am:"AM",pm:"PM",midnight:"północ",noon:"południe",morning:"rano",afternoon:"popołudnie",evening:"wieczór",night:"noc"}},dayPeriodFormattingValues={narrow:{am:"a",pm:"p",midnight:"o półn.",noon:"w poł.",morning:"rano",afternoon:"po poł.",evening:"wiecz.",night:"w nocy"},abbreviated:{am:"AM",pm:"PM",midnight:"o północy",noon:"w południe",morning:"rano",afternoon:"po południu",evening:"wieczorem",night:"w nocy"},wide:{am:"AM",pm:"PM",midnight:"o północy",noon:"w południe",morning:"rano",afternoon:"po południu",evening:"wieczorem",night:"w nocy"}},ordinalNumber$c=(n,t)=>String(n),localize$c={ordinalNumber:ordinalNumber$c,era:buildLocalizeFn({values:eraValues$c,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$c,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$c,defaultWidth:"wide",formattingValues:monthFormattingValues,defaultFormattingWidth:"wide"}),day:buildLocalizeFn({values:dayValues$c,defaultWidth:"wide",formattingValues:dayFormattingValues,defaultFormattingWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$c,defaultWidth:"wide",formattingValues:dayPeriodFormattingValues,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$c=/^(\d+)?/i,parseOrdinalNumberPattern$c=/\d+/i,matchEraPatterns$c={narrow:/^(p\.?\s*n\.?\s*e\.?\s*|n\.?\s*e\.?\s*)/i,abbreviated:/^(p\.?\s*n\.?\s*e\.?\s*|n\.?\s*e\.?\s*)/i,wide:/^(przed\s*nasz(ą|a)\s*er(ą|a)|naszej\s*ery)/i},parseEraPatterns$c={any:[/^p/i,/^n/i]},matchQuarterPatterns$c={narrow:/^[1234]/i,abbreviated:/^(I|II|III|IV)\s*kw\.?/i,wide:/^(I|II|III|IV)\s*kwarta(ł|l)/i},parseQuarterPatterns$c={narrow:[/1/i,/2/i,/3/i,/4/i],any:[/^I kw/i,/^II kw/i,/^III kw/i,/^IV kw/i]},matchMonthPatterns$c={narrow:/^[slmkcwpg]/i,abbreviated:/^(sty|lut|mar|kwi|maj|cze|lip|sie|wrz|pa(ź|z)|lis|gru)/i,wide:/^(stycznia|stycze(ń|n)|lutego|luty|marca|marzec|kwietnia|kwiecie(ń|n)|maja|maj|czerwca|czerwiec|lipca|lipiec|sierpnia|sierpie(ń|n)|wrze(ś|s)nia|wrzesie(ń|n)|pa(ź|z)dziernika|pa(ź|z)dziernik|listopada|listopad|grudnia|grudzie(ń|n))/i},parseMonthPatterns$c={narrow:[/^s/i,/^l/i,/^m/i,/^k/i,/^m/i,/^c/i,/^l/i,/^s/i,/^w/i,/^p/i,/^l/i,/^g/i],any:[/^st/i,/^lu/i,/^mar/i,/^k/i,/^maj/i,/^c/i,/^lip/i,/^si/i,/^w/i,/^p/i,/^lis/i,/^g/i]},matchDayPatterns$c={narrow:/^[npwścs]/i,short:/^(nie|pon|wto|(ś|s)ro|czw|pi(ą|a)|sob)/i,abbreviated:/^(niedz|pon|wt|(ś|s)r|czw|pt|sob)\.?/i,wide:/^(niedziela|poniedzia(ł|l)ek|wtorek|(ś|s)roda|czwartek|pi(ą|a)tek|sobota)/i},parseDayPatterns$c={narrow:[/^n/i,/^p/i,/^w/i,/^ś/i,/^c/i,/^p/i,/^s/i],abbreviated:[/^n/i,/^po/i,/^w/i,/^(ś|s)r/i,/^c/i,/^pt/i,/^so/i],any:[/^n/i,/^po/i,/^w/i,/^(ś|s)r/i,/^c/i,/^pi/i,/^so/i]},matchDayPeriodPatterns$c={narrow:/^(^a$|^p$|pó(ł|l)n\.?|o\s*pó(ł|l)n\.?|po(ł|l)\.?|w\s*po(ł|l)\.?|po\s*po(ł|l)\.?|rano|wiecz\.?|noc|w\s*nocy)/i,any:/^(am|pm|pó(ł|l)noc|o\s*pó(ł|l)nocy|po(ł|l)udnie|w\s*po(ł|l)udnie|popo(ł|l)udnie|po\s*po(ł|l)udniu|rano|wieczór|wieczorem|noc|w\s*nocy)/i},parseDayPeriodPatterns$c={narrow:{am:/^a$/i,pm:/^p$/i,midnight:/pó(ł|l)n/i,noon:/po(ł|l)/i,morning:/rano/i,afternoon:/po\s*po(ł|l)/i,evening:/wiecz/i,night:/noc/i},any:{am:/^am/i,pm:/^pm/i,midnight:/pó(ł|l)n/i,noon:/po(ł|l)/i,morning:/rano/i,afternoon:/po\s*po(ł|l)/i,evening:/wiecz/i,night:/noc/i}},match$c={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$c,parsePattern:parseOrdinalNumberPattern$c,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$c,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$c,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$c,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$c,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$c,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$c,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$c,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$c,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$c,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$c,defaultParseWidth:"any"})},pl={code:"pl",formatDistance:formatDistance$c,formatLong:formatLong$c,formatRelative:formatRelative$c,localize:localize$c,match:match$c,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$b={lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"aproximadamente 1 hora",other:"aproximadamente {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"aproximadamente 1 semana",other:"aproximadamente {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"aproximadamente 1 mês",other:"aproximadamente {{count}} meses"},xMonths:{one:"1 mês",other:"{{count}} meses"},aboutXYears:{one:"aproximadamente 1 ano",other:"aproximadamente {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}},formatDistance$b=(n,t,e)=>{let i;const r=formatDistanceLocale$b[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"daqui a "+i:"há "+i:i},dateFormats$b={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d 'de' MMM 'de' y",short:"dd/MM/y"},timeFormats$b={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$b={full:"{{date}} 'às' {{time}}",long:"{{date}} 'às' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$b={date:buildFormatLongFn({formats:dateFormats$b,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$b,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$b,defaultWidth:"full"})},formatRelativeLocale$b={lastWeek:n=>{const t=n.getDay();return"'"+(t===0||t===6?"último":"última")+"' eeee 'às' p"},yesterday:"'ontem às' p",today:"'hoje às' p",tomorrow:"'amanhã às' p",nextWeek:"eeee 'às' p",other:"P"},formatRelative$b=(n,t,e,i)=>{const r=formatRelativeLocale$b[n];return typeof r=="function"?r(t):r},eraValues$b={narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["antes de Cristo","depois de Cristo"]},quarterValues$b={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},monthValues$b={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},dayValues$b={narrow:["d","s","t","q","q","s","s"],short:["dom","seg","ter","qua","qui","sex","sáb"],abbreviated:["dom","seg","ter","qua","qui","sex","sáb"],wide:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},dayPeriodValues$b={narrow:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"noite",night:"madrugada"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"noite",night:"madrugada"},wide:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"noite",night:"madrugada"}},formattingDayPeriodValues$b={narrow:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da noite",night:"da madrugada"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da noite",night:"da madrugada"},wide:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da noite",night:"da madrugada"}},ordinalNumber$b=(n,t)=>Number(n)+"º",localize$b={ordinalNumber:ordinalNumber$b,era:buildLocalizeFn({values:eraValues$b,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$b,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$b,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$b,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$b,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$b,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$b=/^(\d+)(º|ª)?/i,parseOrdinalNumberPattern$b=/\d+/i,matchEraPatterns$b={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes da era comum|depois de cristo|era comum)/i},parseEraPatterns$b={any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes da era comum)/i,/^(depois de cristo|era comum)/i]},matchQuarterPatterns$b={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º|ª)? trimestre/i},parseQuarterPatterns$b={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$b={narrow:/^[jfmasond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},parseMonthPatterns$b={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ab/i,/^mai/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$b={narrow:/^[dstq]/i,short:/^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,wide:/^(domingo|segunda-?\s?feira|terça-?\s?feira|quarta-?\s?feira|quinta-?\s?feira|sexta-?\s?feira|s[áa]bado)/i},parseDayPatterns$b={narrow:[/^d/i,/^s/i,/^t/i,/^q/i,/^q/i,/^s/i,/^s/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[áa]/i]},matchDayPeriodPatterns$b={narrow:/^(a|p|meia-?\s?noite|meio-?\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i,any:/^([ap]\.?\s?m\.?|meia-?\s?noite|meio-?\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i},parseDayPeriodPatterns$b={any:{am:/^a/i,pm:/^p/i,midnight:/^meia/i,noon:/^meio/i,morning:/manh[ãa]/i,afternoon:/tarde/i,evening:/noite/i,night:/madrugada/i}},match$b={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$b,parsePattern:parseOrdinalNumberPattern$b,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$b,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$b,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$b,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$b,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$b,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$b,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$b,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$b,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$b,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$b,defaultParseWidth:"any"})},pt={code:"pt",formatDistance:formatDistance$b,formatLong:formatLong$b,formatRelative:formatRelative$b,localize:localize$b,match:match$b,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$a={lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"cerca de 1 hora",other:"cerca de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"cerca de 1 semana",other:"cerca de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"cerca de 1 mês",other:"cerca de {{count}} meses"},xMonths:{one:"1 mês",other:"{{count}} meses"},aboutXYears:{one:"cerca de 1 ano",other:"cerca de {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}},formatDistance$a=(n,t,e)=>{let i;const r=formatDistanceLocale$a[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"em "+i:"há "+i:i},dateFormats$a={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/yyyy"},timeFormats$a={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$a={full:"{{date}} 'às' {{time}}",long:"{{date}} 'às' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$a={date:buildFormatLongFn({formats:dateFormats$a,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$a,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$a,defaultWidth:"full"})},formatRelativeLocale$a={lastWeek:n=>{const t=n.getDay();return"'"+(t===0||t===6?"último":"última")+"' eeee 'às' p"},yesterday:"'ontem às' p",today:"'hoje às' p",tomorrow:"'amanhã às' p",nextWeek:"eeee 'às' p",other:"P"},formatRelative$a=(n,t,e,i)=>{const r=formatRelativeLocale$a[n];return typeof r=="function"?r(t):r},eraValues$a={narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","depois de cristo"]},quarterValues$a={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},monthValues$a={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},dayValues$a={narrow:["D","S","T","Q","Q","S","S"],short:["dom","seg","ter","qua","qui","sex","sab"],abbreviated:["domingo","segunda","terça","quarta","quinta","sexta","sábado"],wide:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},dayPeriodValues$a={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"}},formattingDayPeriodValues$a={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"}},ordinalNumber$a=(n,t)=>{const e=Number(n);return(t==null?void 0:t.unit)==="week"?e+"ª":e+"º"},localize$a={ordinalNumber:ordinalNumber$a,era:buildLocalizeFn({values:eraValues$a,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$a,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$a,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$a,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$a,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$a,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$a=/^(\d+)[ºªo]?/i,parseOrdinalNumberPattern$a=/\d+/i,matchEraPatterns$a={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|d\.?\s?c\.?)/i,wide:/^(antes de cristo|depois de cristo)/i},parseEraPatterns$a={any:[/^ac/i,/^dc/i],wide:[/^antes de cristo/i,/^depois de cristo/i]},matchQuarterPatterns$a={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},parseQuarterPatterns$a={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$a={narrow:/^[jfmajsond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},parseMonthPatterns$a={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^fev/i,/^mar/i,/^abr/i,/^mai/i,/^jun/i,/^jul/i,/^ago/i,/^set/i,/^out/i,/^nov/i,/^dez/i]},matchDayPatterns$a={narrow:/^(dom|[23456]ª?|s[aá]b)/i,short:/^(dom|[23456]ª?|s[aá]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,wide:/^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i},parseDayPatterns$a={short:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],narrow:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[aá]b/i]},matchDayPeriodPatterns$a={narrow:/^(a|p|mn|md|(da) (manhã|tarde|noite))/i,any:/^([ap]\.?\s?m\.?|meia[-\s]noite|meio[-\s]dia|(da) (manhã|tarde|noite))/i},parseDayPeriodPatterns$a={any:{am:/^a/i,pm:/^p/i,midnight:/^mn|^meia[-\s]noite/i,noon:/^md|^meio[-\s]dia/i,morning:/manhã/i,afternoon:/tarde/i,evening:/tarde/i,night:/noite/i}},match$a={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$a,parsePattern:parseOrdinalNumberPattern$a,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$a,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$a,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$a,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$a,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$a,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$a,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$a,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$a,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$a,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$a,defaultParseWidth:"any"})},ptBR={code:"pt-BR",formatDistance:formatDistance$a,formatLong:formatLong$a,formatRelative:formatRelative$a,localize:localize$a,match:match$a,options:{weekStartsOn:0,firstWeekContainsDate:1}},formatDistanceLocale$9={lessThanXSeconds:{one:"mai puțin de o secundă",other:"mai puțin de {{count}} secunde"},xSeconds:{one:"1 secundă",other:"{{count}} secunde"},halfAMinute:"jumătate de minut",lessThanXMinutes:{one:"mai puțin de un minut",other:"mai puțin de {{count}} minute"},xMinutes:{one:"1 minut",other:"{{count}} minute"},aboutXHours:{one:"circa 1 oră",other:"circa {{count}} ore"},xHours:{one:"1 oră",other:"{{count}} ore"},xDays:{one:"1 zi",other:"{{count}} zile"},aboutXWeeks:{one:"circa o săptămână",other:"circa {{count}} săptămâni"},xWeeks:{one:"1 săptămână",other:"{{count}} săptămâni"},aboutXMonths:{one:"circa 1 lună",other:"circa {{count}} luni"},xMonths:{one:"1 lună",other:"{{count}} luni"},aboutXYears:{one:"circa 1 an",other:"circa {{count}} ani"},xYears:{one:"1 an",other:"{{count}} ani"},overXYears:{one:"peste 1 an",other:"peste {{count}} ani"},almostXYears:{one:"aproape 1 an",other:"aproape {{count}} ani"}},formatDistance$9=(n,t,e)=>{let i;const r=formatDistanceLocale$9[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"în "+i:i+" în urmă":i},dateFormats$9={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"dd.MM.yyyy"},timeFormats$9={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$9={full:"{{date}} 'la' {{time}}",long:"{{date}} 'la' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$9={date:buildFormatLongFn({formats:dateFormats$9,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$9,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$9,defaultWidth:"full"})},formatRelativeLocale$9={lastWeek:"eeee 'trecută la' p",yesterday:"'ieri la' p",today:"'astăzi la' p",tomorrow:"'mâine la' p",nextWeek:"eeee 'viitoare la' p",other:"P"},formatRelative$9=(n,t,e,i)=>formatRelativeLocale$9[n],eraValues$9={narrow:["Î","D"],abbreviated:["Î.d.C.","D.C."],wide:["Înainte de Cristos","După Cristos"]},quarterValues$9={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["primul trimestru","al doilea trimestru","al treilea trimestru","al patrulea trimestru"]},monthValues$9={narrow:["I","F","M","A","M","I","I","A","S","O","N","D"],abbreviated:["ian","feb","mar","apr","mai","iun","iul","aug","sep","oct","noi","dec"],wide:["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"]},dayValues$9={narrow:["d","l","m","m","j","v","s"],short:["du","lu","ma","mi","jo","vi","sâ"],abbreviated:["dum","lun","mar","mie","joi","vin","sâm"],wide:["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"]},dayPeriodValues$9={narrow:{am:"a",pm:"p",midnight:"mn",noon:"ami",morning:"dim",afternoon:"da",evening:"s",night:"n"},abbreviated:{am:"AM",pm:"PM",midnight:"miezul nopții",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"},wide:{am:"a.m.",pm:"p.m.",midnight:"miezul nopții",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"}},formattingDayPeriodValues$9={narrow:{am:"a",pm:"p",midnight:"mn",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"},abbreviated:{am:"AM",pm:"PM",midnight:"miezul nopții",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"},wide:{am:"a.m.",pm:"p.m.",midnight:"miezul nopții",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"}},ordinalNumber$9=(n,t)=>String(n),localize$9={ordinalNumber:ordinalNumber$9,era:buildLocalizeFn({values:eraValues$9,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$9,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$9,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$9,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$9,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$9,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$9=/^(\d+)?/i,parseOrdinalNumberPattern$9=/\d+/i,matchEraPatterns$9={narrow:/^(Î|D)/i,abbreviated:/^(Î\.?\s?d\.?\s?C\.?|Î\.?\s?e\.?\s?n\.?|D\.?\s?C\.?|e\.?\s?n\.?)/i,wide:/^(Înainte de Cristos|Înaintea erei noastre|După Cristos|Era noastră)/i},parseEraPatterns$9={any:[/^ÎC/i,/^DC/i],wide:[/^(Înainte de Cristos|Înaintea erei noastre)/i,/^(După Cristos|Era noastră)/i]},matchQuarterPatterns$9={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^trimestrul [1234]/i},parseQuarterPatterns$9={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$9={narrow:/^[ifmaasond]/i,abbreviated:/^(ian|feb|mar|apr|mai|iun|iul|aug|sep|oct|noi|dec)/i,wide:/^(ianuarie|februarie|martie|aprilie|mai|iunie|iulie|august|septembrie|octombrie|noiembrie|decembrie)/i},parseMonthPatterns$9={narrow:[/^i/i,/^f/i,/^m/i,/^a/i,/^m/i,/^i/i,/^i/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ia/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^iun/i,/^iul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$9={narrow:/^[dlmjvs]/i,short:/^(d|l|ma|mi|j|v|s)/i,abbreviated:/^(dum|lun|mar|mie|jo|vi|sâ)/i,wide:/^(duminica|luni|marţi|miercuri|joi|vineri|sâmbătă)/i},parseDayPatterns$9={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^mi/i,/^j/i,/^v/i,/^s/i]},matchDayPeriodPatterns$9={narrow:/^(a|p|mn|a|(dimineaţa|după-amiaza|seara|noaptea))/i,any:/^([ap]\.?\s?m\.?|miezul nopții|amiaza|(dimineaţa|după-amiaza|seara|noaptea))/i},parseDayPeriodPatterns$9={any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/amiaza/i,morning:/dimineaţa/i,afternoon:/după-amiaza/i,evening:/seara/i,night:/noaptea/i}},match$9={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$9,parsePattern:parseOrdinalNumberPattern$9,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$9,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$9,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$9,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$9,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$9,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$9,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$9,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$9,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$9,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$9,defaultParseWidth:"any"})},ro={code:"ro",formatDistance:formatDistance$9,formatLong:formatLong$9,formatRelative:formatRelative$9,localize:localize$9,match:match$9,options:{weekStartsOn:1,firstWeekContainsDate:1}};function declension$2(n,t){if(n.one!==void 0&&t===1)return n.one;const e=t%10,i=t%100;return e===1&&i!==11?n.singularNominative.replace("{{count}}",String(t)):e>=2&&e<=4&&(i<10||i>20)?n.singularGenitive.replace("{{count}}",String(t)):n.pluralGenitive.replace("{{count}}",String(t))}function buildLocalizeTokenFn$1(n){return(t,e)=>e!=null&&e.addSuffix?e.comparison&&e.comparison>0?n.future?declension$2(n.future,t):"через "+declension$2(n.regular,t):n.past?declension$2(n.past,t):declension$2(n.regular,t)+" назад":declension$2(n.regular,t)}const formatDistanceLocale$8={lessThanXSeconds:buildLocalizeTokenFn$1({regular:{one:"меньше секунды",singularNominative:"меньше {{count}} секунды",singularGenitive:"меньше {{count}} секунд",pluralGenitive:"меньше {{count}} секунд"},future:{one:"меньше, чем через секунду",singularNominative:"меньше, чем через {{count}} секунду",singularGenitive:"меньше, чем через {{count}} секунды",pluralGenitive:"меньше, чем через {{count}} секунд"}}),xSeconds:buildLocalizeTokenFn$1({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду назад",singularGenitive:"{{count}} секунды назад",pluralGenitive:"{{count}} секунд назад"},future:{singularNominative:"через {{count}} секунду",singularGenitive:"через {{count}} секунды",pluralGenitive:"через {{count}} секунд"}}),halfAMinute:(n,t)=>t!=null&&t.addSuffix?t.comparison&&t.comparison>0?"через полминуты":"полминуты назад":"полминуты",lessThanXMinutes:buildLocalizeTokenFn$1({regular:{one:"меньше минуты",singularNominative:"меньше {{count}} минуты",singularGenitive:"меньше {{count}} минут",pluralGenitive:"меньше {{count}} минут"},future:{one:"меньше, чем через минуту",singularNominative:"меньше, чем через {{count}} минуту",singularGenitive:"меньше, чем через {{count}} минуты",pluralGenitive:"меньше, чем через {{count}} минут"}}),xMinutes:buildLocalizeTokenFn$1({regular:{singularNominative:"{{count}} минута",singularGenitive:"{{count}} минуты",pluralGenitive:"{{count}} минут"},past:{singularNominative:"{{count}} минуту назад",singularGenitive:"{{count}} минуты назад",pluralGenitive:"{{count}} минут назад"},future:{singularNominative:"через {{count}} минуту",singularGenitive:"через {{count}} минуты",pluralGenitive:"через {{count}} минут"}}),aboutXHours:buildLocalizeTokenFn$1({regular:{singularNominative:"около {{count}} часа",singularGenitive:"около {{count}} часов",pluralGenitive:"около {{count}} часов"},future:{singularNominative:"приблизительно через {{count}} час",singularGenitive:"приблизительно через {{count}} часа",pluralGenitive:"приблизительно через {{count}} часов"}}),xHours:buildLocalizeTokenFn$1({regular:{singularNominative:"{{count}} час",singularGenitive:"{{count}} часа",pluralGenitive:"{{count}} часов"}}),xDays:buildLocalizeTokenFn$1({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} дня",pluralGenitive:"{{count}} дней"}}),aboutXWeeks:buildLocalizeTokenFn$1({regular:{singularNominative:"около {{count}} недели",singularGenitive:"около {{count}} недель",pluralGenitive:"около {{count}} недель"},future:{singularNominative:"приблизительно через {{count}} неделю",singularGenitive:"приблизительно через {{count}} недели",pluralGenitive:"приблизительно через {{count}} недель"}}),xWeeks:buildLocalizeTokenFn$1({regular:{singularNominative:"{{count}} неделя",singularGenitive:"{{count}} недели",pluralGenitive:"{{count}} недель"}}),aboutXMonths:buildLocalizeTokenFn$1({regular:{singularNominative:"около {{count}} месяца",singularGenitive:"около {{count}} месяцев",pluralGenitive:"около {{count}} месяцев"},future:{singularNominative:"приблизительно через {{count}} месяц",singularGenitive:"приблизительно через {{count}} месяца",pluralGenitive:"приблизительно через {{count}} месяцев"}}),xMonths:buildLocalizeTokenFn$1({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяца",pluralGenitive:"{{count}} месяцев"}}),aboutXYears:buildLocalizeTokenFn$1({regular:{singularNominative:"около {{count}} года",singularGenitive:"около {{count}} лет",pluralGenitive:"около {{count}} лет"},future:{singularNominative:"приблизительно через {{count}} год",singularGenitive:"приблизительно через {{count}} года",pluralGenitive:"приблизительно через {{count}} лет"}}),xYears:buildLocalizeTokenFn$1({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} года",pluralGenitive:"{{count}} лет"}}),overXYears:buildLocalizeTokenFn$1({regular:{singularNominative:"больше {{count}} года",singularGenitive:"больше {{count}} лет",pluralGenitive:"больше {{count}} лет"},future:{singularNominative:"больше, чем через {{count}} год",singularGenitive:"больше, чем через {{count}} года",pluralGenitive:"больше, чем через {{count}} лет"}}),almostXYears:buildLocalizeTokenFn$1({regular:{singularNominative:"почти {{count}} год",singularGenitive:"почти {{count}} года",pluralGenitive:"почти {{count}} лет"},future:{singularNominative:"почти через {{count}} год",singularGenitive:"почти через {{count}} года",pluralGenitive:"почти через {{count}} лет"}})},formatDistance$8=(n,t,e)=>formatDistanceLocale$8[n](t,e),dateFormats$8={full:"EEEE, d MMMM y 'г.'",long:"d MMMM y 'г.'",medium:"d MMM y 'г.'",short:"dd.MM.y"},timeFormats$8={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},dateTimeFormats$8={any:"{{date}}, {{time}}"},formatLong$8={date:buildFormatLongFn({formats:dateFormats$8,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$8,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$8,defaultWidth:"any"})},accusativeWeekdays$2=["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"];function lastWeek$2(n){const t=accusativeWeekdays$2[n];switch(n){case 0:return"'в прошлое "+t+" в' p";case 1:case 2:case 4:return"'в прошлый "+t+" в' p";case 3:case 5:case 6:return"'в прошлую "+t+" в' p"}}function thisWeek$2(n){const t=accusativeWeekdays$2[n];return n===2?"'во "+t+" в' p":"'в "+t+" в' p"}function nextWeek$2(n){const t=accusativeWeekdays$2[n];switch(n){case 0:return"'в следующее "+t+" в' p";case 1:case 2:case 4:return"'в следующий "+t+" в' p";case 3:case 5:case 6:return"'в следующую "+t+" в' p"}}const formatRelativeLocale$8={lastWeek:(n,t,e)=>{const i=n.getDay();return isSameWeek(n,t,e)?thisWeek$2(i):lastWeek$2(i)},yesterday:"'вчера в' p",today:"'сегодня в' p",tomorrow:"'завтра в' p",nextWeek:(n,t,e)=>{const i=n.getDay();return isSameWeek(n,t,e)?thisWeek$2(i):nextWeek$2(i)},other:"P"},formatRelative$8=(n,t,e,i)=>{const r=formatRelativeLocale$8[n];return typeof r=="function"?r(t,e,i):r},eraValues$8={narrow:["до н.э.","н.э."],abbreviated:["до н. э.","н. э."],wide:["до нашей эры","нашей эры"]},quarterValues$8={narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},monthValues$8={narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],wide:["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},formattingMonthValues$3={narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],wide:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]},dayValues$8={narrow:["В","П","В","С","Ч","П","С"],short:["вс","пн","вт","ср","чт","пт","сб"],abbreviated:["вск","пнд","втр","срд","чтв","птн","суб"],wide:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},dayPeriodValues$8={narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утро",afternoon:"день",evening:"вечер",night:"ночь"}},formattingDayPeriodValues$8={narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утра",afternoon:"дня",evening:"вечера",night:"ночи"}},ordinalNumber$8=(n,t)=>{const e=Number(n),i=t==null?void 0:t.unit;let r;return i==="date"?r="-е":i==="week"||i==="minute"||i==="second"?r="-я":r="-й",e+r},localize$8={ordinalNumber:ordinalNumber$8,era:buildLocalizeFn({values:eraValues$8,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$8,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$8,defaultWidth:"wide",formattingValues:formattingMonthValues$3,defaultFormattingWidth:"wide"}),day:buildLocalizeFn({values:dayValues$8,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$8,defaultWidth:"any",formattingValues:formattingDayPeriodValues$8,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$8=/^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i,parseOrdinalNumberPattern$8=/\d+/i,matchEraPatterns$8={narrow:/^((до )?н\.?\s?э\.?)/i,abbreviated:/^((до )?н\.?\s?э\.?)/i,wide:/^(до нашей эры|нашей эры|наша эра)/i},parseEraPatterns$8={any:[/^д/i,/^н/i]},matchQuarterPatterns$8={narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыои]?й?)? кв.?/i,wide:/^[1234](-?[ыои]?й?)? квартал/i},parseQuarterPatterns$8={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$8={narrow:/^[яфмаисонд]/i,abbreviated:/^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\.?/i,wide:/^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i},parseMonthPatterns$8={narrow:[/^я/i,/^ф/i,/^м/i,/^а/i,/^м/i,/^и/i,/^и/i,/^а/i,/^с/i,/^о/i,/^н/i,/^я/i],any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^ав/i,/^с/i,/^о/i,/^н/i,/^д/i]},matchDayPatterns$8={narrow:/^[впсч]/i,short:/^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,abbreviated:/^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,wide:/^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i},parseDayPatterns$8={narrow:[/^в/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^в[ос]/i,/^п[он]/i,/^в/i,/^ср/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},matchDayPeriodPatterns$8={narrow:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,abbreviated:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,wide:/^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i},parseDayPeriodPatterns$8={any:{am:/^дп/i,pm:/^пп/i,midnight:/^полн/i,noon:/^полд/i,morning:/^у/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},match$8={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$8,parsePattern:parseOrdinalNumberPattern$8,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$8,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$8,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$8,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$8,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$8,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$8,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$8,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$8,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$8,defaultMatchWidth:"wide",parsePatterns:parseDayPeriodPatterns$8,defaultParseWidth:"any"})},ru={code:"ru",formatDistance:formatDistance$8,formatLong:formatLong$8,formatRelative:formatRelative$8,localize:localize$8,match:match$8,options:{weekStartsOn:1,firstWeekContainsDate:1}};function declensionGroup(n,t){return t===1&&n.one?n.one:t>=2&&t<=4&&n.twoFour?n.twoFour:n.other}function declension$1(n,t,e){return declensionGroup(n,t)[e].replace("{{count}}",String(t))}function extractPreposition(n){return["lessThan","about","over","almost"].filter(function(e){return!!n.match(new RegExp("^"+e))})[0]}function prefixPreposition(n){let t="";return n==="almost"&&(t="takmer"),n==="about"&&(t="približne"),t.length>0?t+" ":""}function suffixPreposition(n){let t="";return n==="lessThan"&&(t="menej než"),n==="over"&&(t="viac než"),t.length>0?t+" ":""}function lowercaseFirstLetter(n){return n.charAt(0).toLowerCase()+n.slice(1)}const formatDistanceLocale$7={xSeconds:{one:{present:"sekunda",past:"sekundou",future:"sekundu"},twoFour:{present:"{{count}} sekundy",past:"{{count}} sekundami",future:"{{count}} sekundy"},other:{present:"{{count}} sekúnd",past:"{{count}} sekundami",future:"{{count}} sekúnd"}},halfAMinute:{other:{present:"pol minúty",past:"pol minútou",future:"pol minúty"}},xMinutes:{one:{present:"minúta",past:"minútou",future:"minútu"},twoFour:{present:"{{count}} minúty",past:"{{count}} minútami",future:"{{count}} minúty"},other:{present:"{{count}} minút",past:"{{count}} minútami",future:"{{count}} minút"}},xHours:{one:{present:"hodina",past:"hodinou",future:"hodinu"},twoFour:{present:"{{count}} hodiny",past:"{{count}} hodinami",future:"{{count}} hodiny"},other:{present:"{{count}} hodín",past:"{{count}} hodinami",future:"{{count}} hodín"}},xDays:{one:{present:"deň",past:"dňom",future:"deň"},twoFour:{present:"{{count}} dni",past:"{{count}} dňami",future:"{{count}} dni"},other:{present:"{{count}} dní",past:"{{count}} dňami",future:"{{count}} dní"}},xWeeks:{one:{present:"týždeň",past:"týždňom",future:"týždeň"},twoFour:{present:"{{count}} týždne",past:"{{count}} týždňami",future:"{{count}} týždne"},other:{present:"{{count}} týždňov",past:"{{count}} týždňami",future:"{{count}} týždňov"}},xMonths:{one:{present:"mesiac",past:"mesiacom",future:"mesiac"},twoFour:{present:"{{count}} mesiace",past:"{{count}} mesiacmi",future:"{{count}} mesiace"},other:{present:"{{count}} mesiacov",past:"{{count}} mesiacmi",future:"{{count}} mesiacov"}},xYears:{one:{present:"rok",past:"rokom",future:"rok"},twoFour:{present:"{{count}} roky",past:"{{count}} rokmi",future:"{{count}} roky"},other:{present:"{{count}} rokov",past:"{{count}} rokmi",future:"{{count}} rokov"}}},formatDistance$7=(n,t,e)=>{const i=extractPreposition(n)||"",r=lowercaseFirstLetter(n.substring(i.length)),a=formatDistanceLocale$7[r];return e!=null&&e.addSuffix?e.comparison&&e.comparison>0?prefixPreposition(i)+"o "+suffixPreposition(i)+declension$1(a,t,"future"):prefixPreposition(i)+"pred "+suffixPreposition(i)+declension$1(a,t,"past"):prefixPreposition(i)+suffixPreposition(i)+declension$1(a,t,"present")},dateFormats$7={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. M. y",short:"d. M. y"},timeFormats$7={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},dateTimeFormats$7={full:"{{date}}, {{time}}",long:"{{date}}, {{time}}",medium:"{{date}}, {{time}}",short:"{{date}} {{time}}"},formatLong$7={date:buildFormatLongFn({formats:dateFormats$7,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$7,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$7,defaultWidth:"full"})},accusativeWeekdays$1=["nedeľu","pondelok","utorok","stredu","štvrtok","piatok","sobotu"];function lastWeek$1(n){const t=accusativeWeekdays$1[n];switch(n){case 0:case 3:case 6:return"'minulú "+t+" o' p";default:return"'minulý' eeee 'o' p"}}function thisWeek$1(n){const t=accusativeWeekdays$1[n];return n===4?"'vo' eeee 'o' p":"'v "+t+" o' p"}function nextWeek$1(n){const t=accusativeWeekdays$1[n];switch(n){case 0:case 4:case 6:return"'budúcu "+t+" o' p";default:return"'budúci' eeee 'o' p"}}const formatRelativeLocale$7={lastWeek:(n,t,e)=>{const i=n.getDay();return isSameWeek(n,t,e)?thisWeek$1(i):lastWeek$1(i)},yesterday:"'včera o' p",today:"'dnes o' p",tomorrow:"'zajtra o' p",nextWeek:(n,t,e)=>{const i=n.getDay();return isSameWeek(n,t,e)?thisWeek$1(i):nextWeek$1(i)},other:"P"},formatRelative$7=(n,t,e,i)=>{const r=formatRelativeLocale$7[n];return typeof r=="function"?r(t,e,i):r},eraValues$7={narrow:["pred Kr.","po Kr."],abbreviated:["pred Kr.","po Kr."],wide:["pred Kristom","po Kristovi"]},quarterValues$7={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"]},monthValues$7={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],wide:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"]},formattingMonthValues$2={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],wide:["januára","februára","marca","apríla","mája","júna","júla","augusta","septembra","októbra","novembra","decembra"]},dayValues$7={narrow:["n","p","u","s","š","p","s"],short:["ne","po","ut","st","št","pi","so"],abbreviated:["ne","po","ut","st","št","pi","so"],wide:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"]},dayPeriodValues$7={narrow:{am:"AM",pm:"PM",midnight:"poln.",noon:"pol.",morning:"ráno",afternoon:"pop.",evening:"več.",night:"noc"},abbreviated:{am:"AM",pm:"PM",midnight:"poln.",noon:"pol.",morning:"ráno",afternoon:"popol.",evening:"večer",night:"noc"},wide:{am:"AM",pm:"PM",midnight:"polnoc",noon:"poludnie",morning:"ráno",afternoon:"popoludnie",evening:"večer",night:"noc"}},formattingDayPeriodValues$7={narrow:{am:"AM",pm:"PM",midnight:"o poln.",noon:"nap.",morning:"ráno",afternoon:"pop.",evening:"več.",night:"v n."},abbreviated:{am:"AM",pm:"PM",midnight:"o poln.",noon:"napol.",morning:"ráno",afternoon:"popol.",evening:"večer",night:"v noci"},wide:{am:"AM",pm:"PM",midnight:"o polnoci",noon:"napoludnie",morning:"ráno",afternoon:"popoludní",evening:"večer",night:"v noci"}},ordinalNumber$7=(n,t)=>Number(n)+".",localize$7={ordinalNumber:ordinalNumber$7,era:buildLocalizeFn({values:eraValues$7,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$7,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$7,defaultWidth:"wide",formattingValues:formattingMonthValues$2,defaultFormattingWidth:"wide"}),day:buildLocalizeFn({values:dayValues$7,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$7,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$7,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$7=/^(\d+)\.?/i,parseOrdinalNumberPattern$7=/\d+/i,matchEraPatterns$7={narrow:/^(pred Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i,abbreviated:/^(pred Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i,wide:/^(pred Kristom|pred na[šs][íi]m letopo[čc]tom|po Kristovi|n[áa][šs]ho letopo[čc]tu)/i},parseEraPatterns$7={any:[/^pr/i,/^(po|n)/i]},matchQuarterPatterns$7={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]\. [šs]tvr[ťt]rok/i},parseQuarterPatterns$7={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$7={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|m[áa]j|j[úu]n|j[úu]l|aug|sep|okt|nov|dec)/i,wide:/^(janu[áa]ra?|febru[áa]ra?|(marec|marca)|apr[íi]la?|m[áa]ja?|j[úu]na?|j[úu]la?|augusta?|(september|septembra)|(okt[óo]ber|okt[óo]bra)|(november|novembra)|(december|decembra))/i},parseMonthPatterns$7={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^m[áa]j/i,/^j[úu]n/i,/^j[úu]l/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$7={narrow:/^[npusšp]/i,short:/^(ne|po|ut|st|št|pi|so)/i,abbreviated:/^(ne|po|ut|st|št|pi|so)/i,wide:/^(nede[ľl]a|pondelok|utorok|streda|[šs]tvrtok|piatok|sobota])/i},parseDayPatterns$7={narrow:[/^n/i,/^p/i,/^u/i,/^s/i,/^š/i,/^p/i,/^s/i],any:[/^n/i,/^po/i,/^u/i,/^st/i,/^(št|stv)/i,/^pi/i,/^so/i]},matchDayPeriodPatterns$7={narrow:/^(am|pm|(o )?poln\.?|(nap\.?|pol\.?)|r[áa]no|pop\.?|ve[čc]\.?|(v n\.?|noc))/i,abbreviated:/^(am|pm|(o )?poln\.?|(napol\.?|pol\.?)|r[áa]no|pop\.?|ve[čc]er|(v )?noci?)/i,any:/^(am|pm|(o )?polnoci?|(na)?poludnie|r[áa]no|popoludn(ie|í|i)|ve[čc]er|(v )?noci?)/i},parseDayPeriodPatterns$7={any:{am:/^am/i,pm:/^pm/i,midnight:/poln/i,noon:/^(nap|(na)?pol(\.|u))/i,morning:/^r[áa]no/i,afternoon:/^pop/i,evening:/^ve[čc]/i,night:/^(noc|v n\.)/i}},match$7={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$7,parsePattern:parseOrdinalNumberPattern$7,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$7,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$7,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$7,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$7,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$7,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$7,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$7,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$7,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$7,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$7,defaultParseWidth:"any"})},sk={code:"sk",formatDistance:formatDistance$7,formatLong:formatLong$7,formatRelative:formatRelative$7,localize:localize$7,match:match$7,options:{weekStartsOn:1,firstWeekContainsDate:4}};function isPluralType(n){return n.one!==void 0}const formatDistanceLocale$6={lessThanXSeconds:{present:{one:"manj kot {{count}} sekunda",two:"manj kot {{count}} sekundi",few:"manj kot {{count}} sekunde",other:"manj kot {{count}} sekund"},past:{one:"manj kot {{count}} sekundo",two:"manj kot {{count}} sekundama",few:"manj kot {{count}} sekundami",other:"manj kot {{count}} sekundami"},future:{one:"manj kot {{count}} sekundo",two:"manj kot {{count}} sekundi",few:"manj kot {{count}} sekunde",other:"manj kot {{count}} sekund"}},xSeconds:{present:{one:"{{count}} sekunda",two:"{{count}} sekundi",few:"{{count}} sekunde",other:"{{count}} sekund"},past:{one:"{{count}} sekundo",two:"{{count}} sekundama",few:"{{count}} sekundami",other:"{{count}} sekundami"},future:{one:"{{count}} sekundo",two:"{{count}} sekundi",few:"{{count}} sekunde",other:"{{count}} sekund"}},halfAMinute:"pol minute",lessThanXMinutes:{present:{one:"manj kot {{count}} minuta",two:"manj kot {{count}} minuti",few:"manj kot {{count}} minute",other:"manj kot {{count}} minut"},past:{one:"manj kot {{count}} minuto",two:"manj kot {{count}} minutama",few:"manj kot {{count}} minutami",other:"manj kot {{count}} minutami"},future:{one:"manj kot {{count}} minuto",two:"manj kot {{count}} minuti",few:"manj kot {{count}} minute",other:"manj kot {{count}} minut"}},xMinutes:{present:{one:"{{count}} minuta",two:"{{count}} minuti",few:"{{count}} minute",other:"{{count}} minut"},past:{one:"{{count}} minuto",two:"{{count}} minutama",few:"{{count}} minutami",other:"{{count}} minutami"},future:{one:"{{count}} minuto",two:"{{count}} minuti",few:"{{count}} minute",other:"{{count}} minut"}},aboutXHours:{present:{one:"približno {{count}} ura",two:"približno {{count}} uri",few:"približno {{count}} ure",other:"približno {{count}} ur"},past:{one:"približno {{count}} uro",two:"približno {{count}} urama",few:"približno {{count}} urami",other:"približno {{count}} urami"},future:{one:"približno {{count}} uro",two:"približno {{count}} uri",few:"približno {{count}} ure",other:"približno {{count}} ur"}},xHours:{present:{one:"{{count}} ura",two:"{{count}} uri",few:"{{count}} ure",other:"{{count}} ur"},past:{one:"{{count}} uro",two:"{{count}} urama",few:"{{count}} urami",other:"{{count}} urami"},future:{one:"{{count}} uro",two:"{{count}} uri",few:"{{count}} ure",other:"{{count}} ur"}},xDays:{present:{one:"{{count}} dan",two:"{{count}} dni",few:"{{count}} dni",other:"{{count}} dni"},past:{one:"{{count}} dnem",two:"{{count}} dnevoma",few:"{{count}} dnevi",other:"{{count}} dnevi"},future:{one:"{{count}} dan",two:"{{count}} dni",few:"{{count}} dni",other:"{{count}} dni"}},aboutXWeeks:{one:"približno {{count}} teden",two:"približno {{count}} tedna",few:"približno {{count}} tedne",other:"približno {{count}} tednov"},xWeeks:{one:"{{count}} teden",two:"{{count}} tedna",few:"{{count}} tedne",other:"{{count}} tednov"},aboutXMonths:{present:{one:"približno {{count}} mesec",two:"približno {{count}} meseca",few:"približno {{count}} mesece",other:"približno {{count}} mesecev"},past:{one:"približno {{count}} mesecem",two:"približno {{count}} mesecema",few:"približno {{count}} meseci",other:"približno {{count}} meseci"},future:{one:"približno {{count}} mesec",two:"približno {{count}} meseca",few:"približno {{count}} mesece",other:"približno {{count}} mesecev"}},xMonths:{present:{one:"{{count}} mesec",two:"{{count}} meseca",few:"{{count}} meseci",other:"{{count}} mesecev"},past:{one:"{{count}} mesecem",two:"{{count}} mesecema",few:"{{count}} meseci",other:"{{count}} meseci"},future:{one:"{{count}} mesec",two:"{{count}} meseca",few:"{{count}} mesece",other:"{{count}} mesecev"}},aboutXYears:{present:{one:"približno {{count}} leto",two:"približno {{count}} leti",few:"približno {{count}} leta",other:"približno {{count}} let"},past:{one:"približno {{count}} letom",two:"približno {{count}} letoma",few:"približno {{count}} leti",other:"približno {{count}} leti"},future:{one:"približno {{count}} leto",two:"približno {{count}} leti",few:"približno {{count}} leta",other:"približno {{count}} let"}},xYears:{present:{one:"{{count}} leto",two:"{{count}} leti",few:"{{count}} leta",other:"{{count}} let"},past:{one:"{{count}} letom",two:"{{count}} letoma",few:"{{count}} leti",other:"{{count}} leti"},future:{one:"{{count}} leto",two:"{{count}} leti",few:"{{count}} leta",other:"{{count}} let"}},overXYears:{present:{one:"več kot {{count}} leto",two:"več kot {{count}} leti",few:"več kot {{count}} leta",other:"več kot {{count}} let"},past:{one:"več kot {{count}} letom",two:"več kot {{count}} letoma",few:"več kot {{count}} leti",other:"več kot {{count}} leti"},future:{one:"več kot {{count}} leto",two:"več kot {{count}} leti",few:"več kot {{count}} leta",other:"več kot {{count}} let"}},almostXYears:{present:{one:"skoraj {{count}} leto",two:"skoraj {{count}} leti",few:"skoraj {{count}} leta",other:"skoraj {{count}} let"},past:{one:"skoraj {{count}} letom",two:"skoraj {{count}} letoma",few:"skoraj {{count}} leti",other:"skoraj {{count}} leti"},future:{one:"skoraj {{count}} leto",two:"skoraj {{count}} leti",few:"skoraj {{count}} leta",other:"skoraj {{count}} let"}}};function getFormFromCount(n){switch(n%100){case 1:return"one";case 2:return"two";case 3:case 4:return"few";default:return"other"}}const formatDistance$6=(n,t,e)=>{let i="",r="present";e!=null&&e.addSuffix&&(e.comparison&&e.comparison>0?(r="future",i="čez "):(r="past",i="pred "));const a=formatDistanceLocale$6[n];if(typeof a=="string")i+=a;else{const o=getFormFromCount(t);isPluralType(a)?i+=a[o].replace("{{count}}",String(t)):i+=a[r][o].replace("{{count}}",String(t))}return i},dateFormats$6={full:"EEEE, dd. MMMM y",long:"dd. MMMM y",medium:"d. MMM y",short:"d. MM. yy"},timeFormats$6={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$6={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$6={date:buildFormatLongFn({formats:dateFormats$6,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$6,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$6,defaultWidth:"full"})},formatRelativeLocale$6={lastWeek:n=>{switch(n.getDay()){case 0:return"'prejšnjo nedeljo ob' p";case 3:return"'prejšnjo sredo ob' p";case 6:return"'prejšnjo soboto ob' p";default:return"'prejšnji' EEEE 'ob' p"}},yesterday:"'včeraj ob' p",today:"'danes ob' p",tomorrow:"'jutri ob' p",nextWeek:n=>{switch(n.getDay()){case 0:return"'naslednjo nedeljo ob' p";case 3:return"'naslednjo sredo ob' p";case 6:return"'naslednjo soboto ob' p";default:return"'naslednji' EEEE 'ob' p"}},other:"P"},formatRelative$6=(n,t,e,i)=>{const r=formatRelativeLocale$6[n];return typeof r=="function"?r(t):r},eraValues$6={narrow:["pr. n. št.","po n. št."],abbreviated:["pr. n. št.","po n. št."],wide:["pred našim štetjem","po našem štetju"]},quarterValues$6={narrow:["1","2","3","4"],abbreviated:["1. čet.","2. čet.","3. čet.","4. čet."],wide:["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"]},monthValues$6={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],wide:["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"]},dayValues$6={narrow:["n","p","t","s","č","p","s"],short:["ned.","pon.","tor.","sre.","čet.","pet.","sob."],abbreviated:["ned.","pon.","tor.","sre.","čet.","pet.","sob."],wide:["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"]},dayPeriodValues$6={narrow:{am:"d",pm:"p",midnight:"24.00",noon:"12.00",morning:"j",afternoon:"p",evening:"v",night:"n"},abbreviated:{am:"dop.",pm:"pop.",midnight:"poln.",noon:"pold.",morning:"jut.",afternoon:"pop.",evening:"več.",night:"noč"},wide:{am:"dop.",pm:"pop.",midnight:"polnoč",noon:"poldne",morning:"jutro",afternoon:"popoldne",evening:"večer",night:"noč"}},formattingDayPeriodValues$6={narrow:{am:"d",pm:"p",midnight:"24.00",noon:"12.00",morning:"zj",afternoon:"p",evening:"zv",night:"po"},abbreviated:{am:"dop.",pm:"pop.",midnight:"opoln.",noon:"opold.",morning:"zjut.",afternoon:"pop.",evening:"zveč.",night:"ponoči"},wide:{am:"dop.",pm:"pop.",midnight:"opolnoči",noon:"opoldne",morning:"zjutraj",afternoon:"popoldan",evening:"zvečer",night:"ponoči"}},ordinalNumber$6=(n,t)=>Number(n)+".",localize$6={ordinalNumber:ordinalNumber$6,era:buildLocalizeFn({values:eraValues$6,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$6,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$6,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$6,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$6,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$6,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$6=/^(\d+)\./i,parseOrdinalNumberPattern$6=/\d+/i,matchEraPatterns$6={abbreviated:/^(pr\. n\. št\.|po n\. št\.)/i,wide:/^(pred Kristusom|pred na[sš]im [sš]tetjem|po Kristusu|po na[sš]em [sš]tetju|na[sš]ega [sš]tetja)/i},parseEraPatterns$6={any:[/^pr/i,/^(po|na[sš]em)/i]},matchQuarterPatterns$6={narrow:/^[1234]/i,abbreviated:/^[1234]\.\s?[čc]et\.?/i,wide:/^[1234]\. [čc]etrtletje/i},parseQuarterPatterns$6={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$6={narrow:/^[jfmasond]/i,abbreviated:/^(jan\.|feb\.|mar\.|apr\.|maj|jun\.|jul\.|avg\.|sep\.|okt\.|nov\.|dec\.)/i,wide:/^(januar|februar|marec|april|maj|junij|julij|avgust|september|oktober|november|december)/i},parseMonthPatterns$6={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],abbreviated:[/^ja/i,/^fe/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^av/i,/^s/i,/^o/i,/^n/i,/^d/i],wide:[/^ja/i,/^fe/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^av/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$6={narrow:/^[nptsčc]/i,short:/^(ned\.|pon\.|tor\.|sre\.|[cč]et\.|pet\.|sob\.)/i,abbreviated:/^(ned\.|pon\.|tor\.|sre\.|[cč]et\.|pet\.|sob\.)/i,wide:/^(nedelja|ponedeljek|torek|sreda|[cč]etrtek|petek|sobota)/i},parseDayPatterns$6={narrow:[/^n/i,/^p/i,/^t/i,/^s/i,/^[cč]/i,/^p/i,/^s/i],any:[/^n/i,/^po/i,/^t/i,/^sr/i,/^[cč]/i,/^pe/i,/^so/i]},matchDayPeriodPatterns$6={narrow:/^(d|po?|z?v|n|z?j|24\.00|12\.00)/i,any:/^(dop\.|pop\.|o?poln(\.|o[cč]i?)|o?pold(\.|ne)|z?ve[cč](\.|er)|(po)?no[cč]i?|popold(ne|an)|jut(\.|ro)|zjut(\.|raj))/i},parseDayPeriodPatterns$6={narrow:{am:/^d/i,pm:/^p/i,midnight:/^24/i,noon:/^12/i,morning:/^(z?j)/i,afternoon:/^p/i,evening:/^(z?v)/i,night:/^(n|po)/i},any:{am:/^dop\./i,pm:/^pop\./i,midnight:/^o?poln/i,noon:/^o?pold/i,morning:/j/i,afternoon:/^pop\./i,evening:/^z?ve/i,night:/(po)?no/i}},match$6={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$6,parsePattern:parseOrdinalNumberPattern$6,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$6,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$6,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$6,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$6,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$6,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$6,defaultParseWidth:"wide"}),day:buildMatchFn({matchPatterns:matchDayPatterns$6,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$6,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$6,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$6,defaultParseWidth:"any"})},sl={code:"sl",formatDistance:formatDistance$6,formatLong:formatLong$6,formatRelative:formatRelative$6,localize:localize$6,match:match$6,options:{weekStartsOn:1,firstWeekContainsDate:1}},formatDistanceLocale$5={lessThanXSeconds:{one:"mindre än en sekund",other:"mindre än {{count}} sekunder"},xSeconds:{one:"en sekund",other:"{{count}} sekunder"},halfAMinute:"en halv minut",lessThanXMinutes:{one:"mindre än en minut",other:"mindre än {{count}} minuter"},xMinutes:{one:"en minut",other:"{{count}} minuter"},aboutXHours:{one:"ungefär en timme",other:"ungefär {{count}} timmar"},xHours:{one:"en timme",other:"{{count}} timmar"},xDays:{one:"en dag",other:"{{count}} dagar"},aboutXWeeks:{one:"ungefär en vecka",other:"ungefär {{count}} veckor"},xWeeks:{one:"en vecka",other:"{{count}} veckor"},aboutXMonths:{one:"ungefär en månad",other:"ungefär {{count}} månader"},xMonths:{one:"en månad",other:"{{count}} månader"},aboutXYears:{one:"ungefär ett år",other:"ungefär {{count}} år"},xYears:{one:"ett år",other:"{{count}} år"},overXYears:{one:"över ett år",other:"över {{count}} år"},almostXYears:{one:"nästan ett år",other:"nästan {{count}} år"}},wordMapping=["noll","en","två","tre","fyra","fem","sex","sju","åtta","nio","tio","elva","tolv"],formatDistance$5=(n,t,e)=>{let i;const r=formatDistanceLocale$5[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t<13?wordMapping[t]:String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"om "+i:i+" sedan":i},dateFormats$5={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"y-MM-dd"},timeFormats$5={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$5={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$5={date:buildFormatLongFn({formats:dateFormats$5,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$5,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$5,defaultWidth:"full"})},formatRelativeLocale$5={lastWeek:"'i' EEEE's kl.' p",yesterday:"'igår kl.' p",today:"'idag kl.' p",tomorrow:"'imorgon kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"},formatRelative$5=(n,t,e,i)=>formatRelativeLocale$5[n],eraValues$5={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["före Kristus","efter Kristus"]},quarterValues$5={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"]},monthValues$5={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],wide:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"]},dayValues$5={narrow:["S","M","T","O","T","F","L"],short:["sö","må","ti","on","to","fr","lö"],abbreviated:["sön","mån","tis","ons","tors","fre","lör"],wide:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"]},dayPeriodValues$5={narrow:{am:"fm",pm:"em",midnight:"midnatt",noon:"middag",morning:"morg.",afternoon:"efterm.",evening:"kväll",night:"natt"},abbreviated:{am:"f.m.",pm:"e.m.",midnight:"midnatt",noon:"middag",morning:"morgon",afternoon:"efterm.",evening:"kväll",night:"natt"},wide:{am:"förmiddag",pm:"eftermiddag",midnight:"midnatt",noon:"middag",morning:"morgon",afternoon:"eftermiddag",evening:"kväll",night:"natt"}},formattingDayPeriodValues$5={narrow:{am:"fm",pm:"em",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på efterm.",evening:"på kvällen",night:"på natten"},abbreviated:{am:"fm",pm:"em",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på efterm.",evening:"på kvällen",night:"på natten"},wide:{am:"fm",pm:"em",midnight:"midnatt",noon:"middag",morning:"på morgonen",afternoon:"på eftermiddagen",evening:"på kvällen",night:"på natten"}},ordinalNumber$5=(n,t)=>{const e=Number(n),i=e%100;if(i>20||i<10)switch(i%10){case 1:case 2:return e+":a"}return e+":e"},localize$5={ordinalNumber:ordinalNumber$5,era:buildLocalizeFn({values:eraValues$5,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$5,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$5,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$5,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$5,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$5,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$5=/^(\d+)(:a|:e)?/i,parseOrdinalNumberPattern$5=/\d+/i,matchEraPatterns$5={narrow:/^(f\.? ?Kr\.?|f\.? ?v\.? ?t\.?|e\.? ?Kr\.?|v\.? ?t\.?)/i,abbreviated:/^(f\.? ?Kr\.?|f\.? ?v\.? ?t\.?|e\.? ?Kr\.?|v\.? ?t\.?)/i,wide:/^(före Kristus|före vår tid|efter Kristus|vår tid)/i},parseEraPatterns$5={any:[/^f/i,/^[ev]/i]},matchQuarterPatterns$5={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](:a|:e)? kvartalet/i},parseQuarterPatterns$5={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$5={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar[s]?|apr|maj|jun[i]?|jul[i]?|aug|sep|okt|nov|dec)\.?/i,wide:/^(januari|februari|mars|april|maj|juni|juli|augusti|september|oktober|november|december)/i},parseMonthPatterns$5={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},matchDayPatterns$5={narrow:/^[smtofl]/i,short:/^(sö|må|ti|on|to|fr|lö)/i,abbreviated:/^(sön|mån|tis|ons|tors|fre|lör)/i,wide:/^(söndag|måndag|tisdag|onsdag|torsdag|fredag|lördag)/i},parseDayPatterns$5={any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},matchDayPeriodPatterns$5={any:/^([fe]\.?\s?m\.?|midn(att)?|midd(ag)?|(på) (morgonen|eftermiddagen|kvällen|natten))/i},parseDayPeriodPatterns$5={any:{am:/^f/i,pm:/^e/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgon/i,afternoon:/eftermiddag/i,evening:/kväll/i,night:/natt/i}},match$5={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$5,parsePattern:parseOrdinalNumberPattern$5,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$5,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$5,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$5,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$5,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$5,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$5,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$5,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$5,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$5,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$5,defaultParseWidth:"any"})},sv={code:"sv",formatDistance:formatDistance$5,formatLong:formatLong$5,formatRelative:formatRelative$5,localize:localize$5,match:match$5,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale$4={lessThanXSeconds:{one:"bir saniyeden az",other:"{{count}} saniyeden az"},xSeconds:{one:"1 saniye",other:"{{count}} saniye"},halfAMinute:"yarım dakika",lessThanXMinutes:{one:"bir dakikadan az",other:"{{count}} dakikadan az"},xMinutes:{one:"1 dakika",other:"{{count}} dakika"},aboutXHours:{one:"yaklaşık 1 saat",other:"yaklaşık {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 gün",other:"{{count}} gün"},aboutXWeeks:{one:"yaklaşık 1 hafta",other:"yaklaşık {{count}} hafta"},xWeeks:{one:"1 hafta",other:"{{count}} hafta"},aboutXMonths:{one:"yaklaşık 1 ay",other:"yaklaşık {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"yaklaşık 1 yıl",other:"yaklaşık {{count}} yıl"},xYears:{one:"1 yıl",other:"{{count}} yıl"},overXYears:{one:"1 yıldan fazla",other:"{{count}} yıldan fazla"},almostXYears:{one:"neredeyse 1 yıl",other:"neredeyse {{count}} yıl"}},formatDistance$4=(n,t,e)=>{let i;const r=formatDistanceLocale$4[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",t.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?i+" sonra":i+" önce":i},dateFormats$4={full:"d MMMM y EEEE",long:"d MMMM y",medium:"d MMM y",short:"dd.MM.yyyy"},timeFormats$4={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$4={full:"{{date}} 'saat' {{time}}",long:"{{date}} 'saat' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$4={date:buildFormatLongFn({formats:dateFormats$4,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$4,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$4,defaultWidth:"full"})},formatRelativeLocale$4={lastWeek:"'geçen hafta' eeee 'saat' p",yesterday:"'dün saat' p",today:"'bugün saat' p",tomorrow:"'yarın saat' p",nextWeek:"eeee 'saat' p",other:"P"},formatRelative$4=(n,t,e,i)=>formatRelativeLocale$4[n],eraValues$4={narrow:["MÖ","MS"],abbreviated:["MÖ","MS"],wide:["Milattan Önce","Milattan Sonra"]},quarterValues$4={narrow:["1","2","3","4"],abbreviated:["1Ç","2Ç","3Ç","4Ç"],wide:["İlk çeyrek","İkinci Çeyrek","Üçüncü çeyrek","Son çeyrek"]},monthValues$4={narrow:["O","Ş","M","N","M","H","T","A","E","E","K","A"],abbreviated:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],wide:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"]},dayValues$4={narrow:["P","P","S","Ç","P","C","C"],short:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],abbreviated:["Paz","Pzt","Sal","Çar","Per","Cum","Cts"],wide:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},dayPeriodValues$4={narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"},wide:{am:"Ö.Ö.",pm:"Ö.S.",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"}},formattingDayPeriodValues$4={narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"},wide:{am:"ö.ö.",pm:"ö.s.",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"}},ordinalNumber$4=(n,t)=>Number(n)+".",localize$4={ordinalNumber:ordinalNumber$4,era:buildLocalizeFn({values:eraValues$4,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$4,defaultWidth:"wide",argumentCallback:n=>Number(n)-1}),month:buildLocalizeFn({values:monthValues$4,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$4,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$4,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$4,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$4=/^(\d+)(\.)?/i,parseOrdinalNumberPattern$4=/\d+/i,matchEraPatterns$4={narrow:/^(mö|ms)/i,abbreviated:/^(mö|ms)/i,wide:/^(milattan önce|milattan sonra)/i},parseEraPatterns$4={any:[/(^mö|^milattan önce)/i,/(^ms|^milattan sonra)/i]},matchQuarterPatterns$4={narrow:/^[1234]/i,abbreviated:/^[1234]ç/i,wide:/^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i},parseQuarterPatterns$4={any:[/1/i,/2/i,/3/i,/4/i],abbreviated:[/1ç/i,/2ç/i,/3ç/i,/4ç/i],wide:[/^(i|İ)lk çeyrek/i,/(i|İ)kinci çeyrek/i,/üçüncü çeyrek/i,/son çeyrek/i]},matchMonthPatterns$4={narrow:/^[oşmnhtaek]/i,abbreviated:/^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,wide:/^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i},parseMonthPatterns$4={narrow:[/^o/i,/^ş/i,/^m/i,/^n/i,/^m/i,/^h/i,/^t/i,/^a/i,/^e/i,/^e/i,/^k/i,/^a/i],any:[/^o/i,/^ş/i,/^mar/i,/^n/i,/^may/i,/^h/i,/^t/i,/^ağ/i,/^ey/i,/^ek/i,/^k/i,/^ar/i]},matchDayPatterns$4={narrow:/^[psçc]/i,short:/^(pz|pt|sa|ça|pe|cu|ct)/i,abbreviated:/^(paz|pzt|sal|çar|per|cum|cts)/i,wide:/^(pazar(?!tesi)|pazartesi|salı|çarşamba|perşembe|cuma(?!rtesi)|cumartesi)/i},parseDayPatterns$4={narrow:[/^p/i,/^p/i,/^s/i,/^ç/i,/^p/i,/^c/i,/^c/i],any:[/^pz/i,/^pt/i,/^sa/i,/^ça/i,/^pe/i,/^cu/i,/^ct/i],wide:[/^pazar(?!tesi)/i,/^pazartesi/i,/^salı/i,/^çarşamba/i,/^perşembe/i,/^cuma(?!rtesi)/i,/^cumartesi/i]},matchDayPeriodPatterns$4={narrow:/^(öö|ös|gy|ö|sa|ös|ak|ge)/i,any:/^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i},parseDayPeriodPatterns$4={any:{am:/^ö\.?ö\.?/i,pm:/^ö\.?s\.?/i,midnight:/^(gy|gece yarısı)/i,noon:/^öğ/i,morning:/^sa/i,afternoon:/^öğleden sonra/i,evening:/^ak/i,night:/^ge/i}},match$4={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$4,parsePattern:parseOrdinalNumberPattern$4,valueCallback:function(n){return parseInt(n,10)}}),era:buildMatchFn({matchPatterns:matchEraPatterns$4,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$4,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$4,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$4,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$4,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$4,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$4,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$4,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$4,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$4,defaultParseWidth:"any"})},tr={code:"tr",formatDistance:formatDistance$4,formatLong:formatLong$4,formatRelative:formatRelative$4,localize:localize$4,match:match$4,options:{weekStartsOn:1,firstWeekContainsDate:1}};function declension(n,t){if(n.one!==void 0&&t===1)return n.one;const e=t%10,i=t%100;return e===1&&i!==11?n.singularNominative.replace("{{count}}",String(t)):e>=2&&e<=4&&(i<10||i>20)?n.singularGenitive.replace("{{count}}",String(t)):n.pluralGenitive.replace("{{count}}",String(t))}function buildLocalizeTokenFn(n){return(t,e)=>e&&e.addSuffix?e.comparison&&e.comparison>0?n.future?declension(n.future,t):"за "+declension(n.regular,t):n.past?declension(n.past,t):declension(n.regular,t)+" тому":declension(n.regular,t)}const halfAtMinute=(n,t)=>t&&t.addSuffix?t.comparison&&t.comparison>0?"за півхвилини":"півхвилини тому":"півхвилини",formatDistanceLocale$3={lessThanXSeconds:buildLocalizeTokenFn({regular:{one:"менше секунди",singularNominative:"менше {{count}} секунди",singularGenitive:"менше {{count}} секунд",pluralGenitive:"менше {{count}} секунд"},future:{one:"менше, ніж за секунду",singularNominative:"менше, ніж за {{count}} секунду",singularGenitive:"менше, ніж за {{count}} секунди",pluralGenitive:"менше, ніж за {{count}} секунд"}}),xSeconds:buildLocalizeTokenFn({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунди",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду тому",singularGenitive:"{{count}} секунди тому",pluralGenitive:"{{count}} секунд тому"},future:{singularNominative:"за {{count}} секунду",singularGenitive:"за {{count}} секунди",pluralGenitive:"за {{count}} секунд"}}),halfAMinute:halfAtMinute,lessThanXMinutes:buildLocalizeTokenFn({regular:{one:"менше хвилини",singularNominative:"менше {{count}} хвилини",singularGenitive:"менше {{count}} хвилин",pluralGenitive:"менше {{count}} хвилин"},future:{one:"менше, ніж за хвилину",singularNominative:"менше, ніж за {{count}} хвилину",singularGenitive:"менше, ніж за {{count}} хвилини",pluralGenitive:"менше, ніж за {{count}} хвилин"}}),xMinutes:buildLocalizeTokenFn({regular:{singularNominative:"{{count}} хвилина",singularGenitive:"{{count}} хвилини",pluralGenitive:"{{count}} хвилин"},past:{singularNominative:"{{count}} хвилину тому",singularGenitive:"{{count}} хвилини тому",pluralGenitive:"{{count}} хвилин тому"},future:{singularNominative:"за {{count}} хвилину",singularGenitive:"за {{count}} хвилини",pluralGenitive:"за {{count}} хвилин"}}),aboutXHours:buildLocalizeTokenFn({regular:{singularNominative:"близько {{count}} години",singularGenitive:"близько {{count}} годин",pluralGenitive:"близько {{count}} годин"},future:{singularNominative:"приблизно за {{count}} годину",singularGenitive:"приблизно за {{count}} години",pluralGenitive:"приблизно за {{count}} годин"}}),xHours:buildLocalizeTokenFn({regular:{singularNominative:"{{count}} годину",singularGenitive:"{{count}} години",pluralGenitive:"{{count}} годин"}}),xDays:buildLocalizeTokenFn({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} днi",pluralGenitive:"{{count}} днів"}}),aboutXWeeks:buildLocalizeTokenFn({regular:{singularNominative:"близько {{count}} тижня",singularGenitive:"близько {{count}} тижнів",pluralGenitive:"близько {{count}} тижнів"},future:{singularNominative:"приблизно за {{count}} тиждень",singularGenitive:"приблизно за {{count}} тижні",pluralGenitive:"приблизно за {{count}} тижнів"}}),xWeeks:buildLocalizeTokenFn({regular:{singularNominative:"{{count}} тиждень",singularGenitive:"{{count}} тижні",pluralGenitive:"{{count}} тижнів"}}),aboutXMonths:buildLocalizeTokenFn({regular:{singularNominative:"близько {{count}} місяця",singularGenitive:"близько {{count}} місяців",pluralGenitive:"близько {{count}} місяців"},future:{singularNominative:"приблизно за {{count}} місяць",singularGenitive:"приблизно за {{count}} місяці",pluralGenitive:"приблизно за {{count}} місяців"}}),xMonths:buildLocalizeTokenFn({regular:{singularNominative:"{{count}} місяць",singularGenitive:"{{count}} місяці",pluralGenitive:"{{count}} місяців"}}),aboutXYears:buildLocalizeTokenFn({regular:{singularNominative:"близько {{count}} року",singularGenitive:"близько {{count}} років",pluralGenitive:"близько {{count}} років"},future:{singularNominative:"приблизно за {{count}} рік",singularGenitive:"приблизно за {{count}} роки",pluralGenitive:"приблизно за {{count}} років"}}),xYears:buildLocalizeTokenFn({regular:{singularNominative:"{{count}} рік",singularGenitive:"{{count}} роки",pluralGenitive:"{{count}} років"}}),overXYears:buildLocalizeTokenFn({regular:{singularNominative:"більше {{count}} року",singularGenitive:"більше {{count}} років",pluralGenitive:"більше {{count}} років"},future:{singularNominative:"більше, ніж за {{count}} рік",singularGenitive:"більше, ніж за {{count}} роки",pluralGenitive:"більше, ніж за {{count}} років"}}),almostXYears:buildLocalizeTokenFn({regular:{singularNominative:"майже {{count}} рік",singularGenitive:"майже {{count}} роки",pluralGenitive:"майже {{count}} років"},future:{singularNominative:"майже за {{count}} рік",singularGenitive:"майже за {{count}} роки",pluralGenitive:"майже за {{count}} років"}})},formatDistance$3=(n,t,e)=>(e=e||{},formatDistanceLocale$3[n](t,e)),dateFormats$3={full:"EEEE, do MMMM y 'р.'",long:"do MMMM y 'р.'",medium:"d MMM y 'р.'",short:"dd.MM.y"},timeFormats$3={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},dateTimeFormats$3={full:"{{date}} 'о' {{time}}",long:"{{date}} 'о' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},formatLong$3={date:buildFormatLongFn({formats:dateFormats$3,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$3,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$3,defaultWidth:"full"})},accusativeWeekdays=["неділю","понеділок","вівторок","середу","четвер","п’ятницю","суботу"];function lastWeek(n){const t=accusativeWeekdays[n];switch(n){case 0:case 3:case 5:case 6:return"'у минулу "+t+" о' p";case 1:case 2:case 4:return"'у минулий "+t+" о' p"}}function thisWeek(n){return"'у "+accusativeWeekdays[n]+" о' p"}function nextWeek(n){const t=accusativeWeekdays[n];switch(n){case 0:case 3:case 5:case 6:return"'у наступну "+t+" о' p";case 1:case 2:case 4:return"'у наступний "+t+" о' p"}}const lastWeekFormat=(n,t,e)=>{const i=toDate(n),r=i.getDay();return isSameWeek(i,t,e)?thisWeek(r):lastWeek(r)},nextWeekFormat=(n,t,e)=>{const i=toDate(n),r=i.getDay();return isSameWeek(i,t,e)?thisWeek(r):nextWeek(r)},formatRelativeLocale$3={lastWeek:lastWeekFormat,yesterday:"'вчора о' p",today:"'сьогодні о' p",tomorrow:"'завтра о' p",nextWeek:nextWeekFormat,other:"P"},formatRelative$3=(n,t,e,i)=>{const r=formatRelativeLocale$3[n];return typeof r=="function"?r(t,e,i):r},eraValues$3={narrow:["до н.е.","н.е."],abbreviated:["до н. е.","н. е."],wide:["до нашої ери","нашої ери"]},quarterValues$3={narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},monthValues$3={narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},formattingMonthValues$1={narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"]},dayValues$3={narrow:["Н","П","В","С","Ч","П","С"],short:["нд","пн","вт","ср","чт","пт","сб"],abbreviated:["нед","пон","вів","сер","чтв","птн","суб"],wide:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"]},dayPeriodValues$3={narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранок",afternoon:"день",evening:"вечір",night:"ніч"}},formattingDayPeriodValues$3={narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"}},ordinalNumber$3=(n,t)=>{const e=String(t==null?void 0:t.unit),i=Number(n);let r;return e==="date"?i===3||i===23?r="-є":r="-е":e==="minute"||e==="second"||e==="hour"?r="-а":r="-й",i+r},localize$3={ordinalNumber:ordinalNumber$3,era:buildLocalizeFn({values:eraValues$3,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$3,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$3,defaultWidth:"wide",formattingValues:formattingMonthValues$1,defaultFormattingWidth:"wide"}),day:buildLocalizeFn({values:dayValues$3,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$3,defaultWidth:"any",formattingValues:formattingDayPeriodValues$3,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$3=/^(\d+)(-?(е|й|є|а|я))?/i,parseOrdinalNumberPattern$3=/\d+/i,matchEraPatterns$3={narrow:/^((до )?н\.?\s?е\.?)/i,abbreviated:/^((до )?н\.?\s?е\.?)/i,wide:/^(до нашої ери|нашої ери|наша ера)/i},parseEraPatterns$3={any:[/^д/i,/^н/i]},matchQuarterPatterns$3={narrow:/^[1234]/i,abbreviated:/^[1234](-?[иі]?й?)? кв.?/i,wide:/^[1234](-?[иі]?й?)? квартал/i},parseQuarterPatterns$3={any:[/1/i,/2/i,/3/i,/4/i]},matchMonthPatterns$3={narrow:/^[слбктчвжг]/i,abbreviated:/^(січ|лют|бер(ез)?|квіт|трав|черв|лип|серп|вер(ес)?|жовт|лис(топ)?|груд)\.?/i,wide:/^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|червня|червень|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопад[а]?|грудень|грудня)/i},parseMonthPatterns$3={narrow:[/^с/i,/^л/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^л/i,/^с/i,/^в/i,/^ж/i,/^л/i,/^г/i],any:[/^сі/i,/^лю/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^лип/i,/^се/i,/^в/i,/^ж/i,/^лис/i,/^г/i]},matchDayPatterns$3={narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)\.?/i,abbreviated:/^(нед|пон|вів|сер|че?тв|птн?|суб)\.?/i,wide:/^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\W*?ятниц[яі]|субот[аи])/i},parseDayPatterns$3={narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[он]/i,/^в/i,/^с[ер]/i,/^ч/i,/^п\W*?[ят]/i,/^с[уб]/i]},matchDayPeriodPatterns$3={narrow:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,abbreviated:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,wide:/^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i},parseDayPeriodPatterns$3={any:{am:/^дп/i,pm:/^пп/i,midnight:/^півн/i,noon:/^пол/i,morning:/^р/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},match$3={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$3,parsePattern:parseOrdinalNumberPattern$3,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$3,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$3,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$3,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$3,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$3,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$3,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$3,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$3,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$3,defaultMatchWidth:"wide",parsePatterns:parseDayPeriodPatterns$3,defaultParseWidth:"any"})},uk={code:"uk",formatDistance:formatDistance$3,formatLong:formatLong$3,formatRelative:formatRelative$3,localize:localize$3,match:match$3,options:{weekStartsOn:1,firstWeekContainsDate:1}},formatDistanceLocale$2={lessThanXSeconds:{one:"dưới 1 giây",other:"dưới {{count}} giây"},xSeconds:{one:"1 giây",other:"{{count}} giây"},halfAMinute:"nửa phút",lessThanXMinutes:{one:"dưới 1 phút",other:"dưới {{count}} phút"},xMinutes:{one:"1 phút",other:"{{count}} phút"},aboutXHours:{one:"khoảng 1 giờ",other:"khoảng {{count}} giờ"},xHours:{one:"1 giờ",other:"{{count}} giờ"},xDays:{one:"1 ngày",other:"{{count}} ngày"},aboutXWeeks:{one:"khoảng 1 tuần",other:"khoảng {{count}} tuần"},xWeeks:{one:"1 tuần",other:"{{count}} tuần"},aboutXMonths:{one:"khoảng 1 tháng",other:"khoảng {{count}} tháng"},xMonths:{one:"1 tháng",other:"{{count}} tháng"},aboutXYears:{one:"khoảng 1 năm",other:"khoảng {{count}} năm"},xYears:{one:"1 năm",other:"{{count}} năm"},overXYears:{one:"hơn 1 năm",other:"hơn {{count}} năm"},almostXYears:{one:"gần 1 năm",other:"gần {{count}} năm"}},formatDistance$2=(n,t,e)=>{let i;const r=formatDistanceLocale$2[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?i+" nữa":i+" trước":i},dateFormats$2={full:"EEEE, 'ngày' d MMMM 'năm' y",long:"'ngày' d MMMM 'năm' y",medium:"d MMM 'năm' y",short:"dd/MM/y"},timeFormats$2={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},dateTimeFormats$2={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$2={date:buildFormatLongFn({formats:dateFormats$2,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$2,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$2,defaultWidth:"full"})},formatRelativeLocale$2={lastWeek:"eeee 'tuần trước vào lúc' p",yesterday:"'hôm qua vào lúc' p",today:"'hôm nay vào lúc' p",tomorrow:"'ngày mai vào lúc' p",nextWeek:"eeee 'tới vào lúc' p",other:"P"},formatRelative$2=(n,t,e,i)=>formatRelativeLocale$2[n],eraValues$2={narrow:["TCN","SCN"],abbreviated:["trước CN","sau CN"],wide:["trước Công Nguyên","sau Công Nguyên"]},quarterValues$2={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["Quý 1","Quý 2","Quý 3","Quý 4"]},formattingQuarterValues={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["quý I","quý II","quý III","quý IV"]},monthValues$2={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["Thg 1","Thg 2","Thg 3","Thg 4","Thg 5","Thg 6","Thg 7","Thg 8","Thg 9","Thg 10","Thg 11","Thg 12"],wide:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"]},formattingMonthValues={narrow:["01","02","03","04","05","06","07","08","09","10","11","12"],abbreviated:["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12"],wide:["tháng 01","tháng 02","tháng 03","tháng 04","tháng 05","tháng 06","tháng 07","tháng 08","tháng 09","tháng 10","tháng 11","tháng 12"]},dayValues$2={narrow:["CN","T2","T3","T4","T5","T6","T7"],short:["CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],abbreviated:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],wide:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"]},dayPeriodValues$2={narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"}},formattingDayPeriodValues$2={narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"giữa trưa",morning:"vào buổi sáng",afternoon:"vào buổi chiều",evening:"vào buổi tối",night:"vào ban đêm"}},ordinalNumber$2=(n,t)=>{const e=Number(n),i=t==null?void 0:t.unit;if(i==="quarter")switch(e){case 1:return"I";case 2:return"II";case 3:return"III";case 4:return"IV"}else if(i==="day")switch(e){case 1:return"thứ 2";case 2:return"thứ 3";case 3:return"thứ 4";case 4:return"thứ 5";case 5:return"thứ 6";case 6:return"thứ 7";case 7:return"chủ nhật"}else{if(i==="week")return e===1?"thứ nhất":"thứ "+e;if(i==="dayOfYear")return e===1?"đầu tiên":"thứ "+e}return String(e)},localize$2={ordinalNumber:ordinalNumber$2,era:buildLocalizeFn({values:eraValues$2,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$2,defaultWidth:"wide",formattingValues:formattingQuarterValues,defaultFormattingWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$2,defaultWidth:"wide",formattingValues:formattingMonthValues,defaultFormattingWidth:"wide"}),day:buildLocalizeFn({values:dayValues$2,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$2,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$2,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$2=/^(\d+)/i,parseOrdinalNumberPattern$2=/\d+/i,matchEraPatterns$2={narrow:/^(tcn|scn)/i,abbreviated:/^(trước CN|sau CN)/i,wide:/^(trước Công Nguyên|sau Công Nguyên)/i},parseEraPatterns$2={any:[/^t/i,/^s/i]},matchQuarterPatterns$2={narrow:/^([1234]|i{1,3}v?)/i,abbreviated:/^q([1234]|i{1,3}v?)/i,wide:/^quý ([1234]|i{1,3}v?)/i},parseQuarterPatterns$2={any:[/(1|i)$/i,/(2|ii)$/i,/(3|iii)$/i,/(4|iv)$/i]},matchMonthPatterns$2={narrow:/^(0?[2-9]|10|11|12|0?1)/i,abbreviated:/^thg[ _]?(0?[1-9](?!\d)|10|11|12)/i,wide:/^tháng ?(Một|Hai|Ba|Tư|Năm|Sáu|Bảy|Tám|Chín|Mười|Mười ?Một|Mười ?Hai|0?[1-9](?!\d)|10|11|12)/i},parseMonthPatterns$2={narrow:[/0?1$/i,/0?2/i,/3/,/4/,/5/,/6/,/7/,/8/,/9/,/10/,/11/,/12/],abbreviated:[/^thg[ _]?0?1(?!\d)/i,/^thg[ _]?0?2/i,/^thg[ _]?0?3/i,/^thg[ _]?0?4/i,/^thg[ _]?0?5/i,/^thg[ _]?0?6/i,/^thg[ _]?0?7/i,/^thg[ _]?0?8/i,/^thg[ _]?0?9/i,/^thg[ _]?10/i,/^thg[ _]?11/i,/^thg[ _]?12/i],wide:[/^tháng ?(Một|0?1(?!\d))/i,/^tháng ?(Hai|0?2)/i,/^tháng ?(Ba|0?3)/i,/^tháng ?(Tư|0?4)/i,/^tháng ?(Năm|0?5)/i,/^tháng ?(Sáu|0?6)/i,/^tháng ?(Bảy|0?7)/i,/^tháng ?(Tám|0?8)/i,/^tháng ?(Chín|0?9)/i,/^tháng ?(Mười|10)/i,/^tháng ?(Mười ?Một|11)/i,/^tháng ?(Mười ?Hai|12)/i]},matchDayPatterns$2={narrow:/^(CN|T2|T3|T4|T5|T6|T7)/i,short:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,abbreviated:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,wide:/^(Chủ ?Nhật|Chúa ?Nhật|thứ ?Hai|thứ ?Ba|thứ ?Tư|thứ ?Năm|thứ ?Sáu|thứ ?Bảy)/i},parseDayPatterns$2={narrow:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],short:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],abbreviated:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],wide:[/(Chủ|Chúa) ?Nhật/i,/Hai/i,/Ba/i,/Tư/i,/Năm/i,/Sáu/i,/Bảy/i]},matchDayPeriodPatterns$2={narrow:/^(a|p|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,abbreviated:/^(am|pm|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,wide:/^(ch[^i]*|sa|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i},parseDayPeriodPatterns$2={any:{am:/^(a|sa)/i,pm:/^(p|ch[^i]*)/i,midnight:/nửa đêm/i,noon:/trưa/i,morning:/sáng/i,afternoon:/chiều/i,evening:/tối/i,night:/^đêm/i}},match$2={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$2,parsePattern:parseOrdinalNumberPattern$2,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$2,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$2,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$2,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$2,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$2,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$2,defaultParseWidth:"wide"}),day:buildMatchFn({matchPatterns:matchDayPatterns$2,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$2,defaultParseWidth:"wide"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$2,defaultMatchWidth:"wide",parsePatterns:parseDayPeriodPatterns$2,defaultParseWidth:"any"})},vi={code:"vi",formatDistance:formatDistance$2,formatLong:formatLong$2,formatRelative:formatRelative$2,localize:localize$2,match:match$2,options:{weekStartsOn:1,firstWeekContainsDate:1}},formatDistanceLocale$1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},formatDistance$1=(n,t,e)=>{let i;const r=formatDistanceLocale$1[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?i+"内":i+"前":i},dateFormats$1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},timeFormats$1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},dateTimeFormats$1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong$1={date:buildFormatLongFn({formats:dateFormats$1,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats$1,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats$1,defaultWidth:"full"})};function checkWeek(n,t,e){const i="eeee p";return isSameWeek(n,t,e)?i:n.getTime()>t.getTime()?"'下个'"+i:"'上个'"+i}const formatRelativeLocale$1={lastWeek:checkWeek,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:checkWeek,other:"PP p"},formatRelative$1=(n,t,e,i)=>{const r=formatRelativeLocale$1[n];return typeof r=="function"?r(t,e,i):r},eraValues$1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},quarterValues$1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},monthValues$1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},dayValues$1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},dayPeriodValues$1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},formattingDayPeriodValues$1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},ordinalNumber$1=(n,t)=>{const e=Number(n);switch(t==null?void 0:t.unit){case"date":return e.toString()+"日";case"hour":return e.toString()+"时";case"minute":return e.toString()+"分";case"second":return e.toString()+"秒";default:return"第 "+e.toString()}},localize$1={ordinalNumber:ordinalNumber$1,era:buildLocalizeFn({values:eraValues$1,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues$1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues$1,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues$1,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues$1,defaultWidth:"wide",formattingValues:formattingDayPeriodValues$1,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern$1=/^(第\s*)?\d+(日|时|分|秒)?/i,parseOrdinalNumberPattern$1=/\d+/i,matchEraPatterns$1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},parseEraPatterns$1={any:[/^(前)/i,/^(公元)/i]},matchQuarterPatterns$1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},parseQuarterPatterns$1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},matchMonthPatterns$1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},parseMonthPatterns$1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},matchDayPatterns$1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},parseDayPatterns$1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},matchDayPeriodPatterns$1={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},parseDayPeriodPatterns$1={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},match$1={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern$1,parsePattern:parseOrdinalNumberPattern$1,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns$1,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns$1,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns$1,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns$1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns$1,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns$1,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns$1,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns$1,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns$1,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns$1,defaultParseWidth:"any"})},zhCN={code:"zh-CN",formatDistance:formatDistance$1,formatLong:formatLong$1,formatRelative:formatRelative$1,localize:localize$1,match:match$1,options:{weekStartsOn:1,firstWeekContainsDate:4}},formatDistanceLocale={lessThanXSeconds:{one:"少於 1 秒",other:"少於 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分鐘",lessThanXMinutes:{one:"少於 1 分鐘",other:"少於 {{count}} 分鐘"},xMinutes:{one:"1 分鐘",other:"{{count}} 分鐘"},xHours:{one:"1 小時",other:"{{count}} 小時"},aboutXHours:{one:"大約 1 小時",other:"大約 {{count}} 小時"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大約 1 個星期",other:"大約 {{count}} 個星期"},xWeeks:{one:"1 個星期",other:"{{count}} 個星期"},aboutXMonths:{one:"大約 1 個月",other:"大約 {{count}} 個月"},xMonths:{one:"1 個月",other:"{{count}} 個月"},aboutXYears:{one:"大約 1 年",other:"大約 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超過 1 年",other:"超過 {{count}} 年"},almostXYears:{one:"將近 1 年",other:"將近 {{count}} 年"}},formatDistance=(n,t,e)=>{let i;const r=formatDistanceLocale[n];return typeof r=="string"?i=r:t===1?i=r.one:i=r.other.replace("{{count}}",String(t)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?i+"內":i+"前":i},dateFormats={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},timeFormats={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},dateTimeFormats={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},formatLong={date:buildFormatLongFn({formats:dateFormats,defaultWidth:"full"}),time:buildFormatLongFn({formats:timeFormats,defaultWidth:"full"}),dateTime:buildFormatLongFn({formats:dateTimeFormats,defaultWidth:"full"})},formatRelativeLocale={lastWeek:"'上個'eeee p",yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:"'下個'eeee p",other:"P"},formatRelative=(n,t,e,i)=>formatRelativeLocale[n],eraValues={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},quarterValues={narrow:["1","2","3","4"],abbreviated:["第一刻","第二刻","第三刻","第四刻"],wide:["第一刻鐘","第二刻鐘","第三刻鐘","第四刻鐘"]},monthValues={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},dayValues={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["週日","週一","週二","週三","週四","週五","週六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},dayPeriodValues={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},formattingDayPeriodValues={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},ordinalNumber=(n,t)=>{const e=Number(n);switch(t==null?void 0:t.unit){case"date":return e+"日";case"hour":return e+"時";case"minute":return e+"分";case"second":return e+"秒";default:return"第 "+e}},localize={ordinalNumber,era:buildLocalizeFn({values:eraValues,defaultWidth:"wide"}),quarter:buildLocalizeFn({values:quarterValues,defaultWidth:"wide",argumentCallback:n=>n-1}),month:buildLocalizeFn({values:monthValues,defaultWidth:"wide"}),day:buildLocalizeFn({values:dayValues,defaultWidth:"wide"}),dayPeriod:buildLocalizeFn({values:dayPeriodValues,defaultWidth:"wide",formattingValues:formattingDayPeriodValues,defaultFormattingWidth:"wide"})},matchOrdinalNumberPattern=/^(第\s*)?\d+(日|時|分|秒)?/i,parseOrdinalNumberPattern=/\d+/i,matchEraPatterns={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},parseEraPatterns={any:[/^(前)/i,/^(公元)/i]},matchQuarterPatterns={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻鐘/i},parseQuarterPatterns={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},matchMonthPatterns={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},parseMonthPatterns={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},matchDayPatterns={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^週[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},parseDayPatterns={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},matchDayPeriodPatterns={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i},parseDayPeriodPatterns={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},match={ordinalNumber:buildMatchPatternFn({matchPattern:matchOrdinalNumberPattern,parsePattern:parseOrdinalNumberPattern,valueCallback:n=>parseInt(n,10)}),era:buildMatchFn({matchPatterns:matchEraPatterns,defaultMatchWidth:"wide",parsePatterns:parseEraPatterns,defaultParseWidth:"any"}),quarter:buildMatchFn({matchPatterns:matchQuarterPatterns,defaultMatchWidth:"wide",parsePatterns:parseQuarterPatterns,defaultParseWidth:"any",valueCallback:n=>n+1}),month:buildMatchFn({matchPatterns:matchMonthPatterns,defaultMatchWidth:"wide",parsePatterns:parseMonthPatterns,defaultParseWidth:"any"}),day:buildMatchFn({matchPatterns:matchDayPatterns,defaultMatchWidth:"wide",parsePatterns:parseDayPatterns,defaultParseWidth:"any"}),dayPeriod:buildMatchFn({matchPatterns:matchDayPeriodPatterns,defaultMatchWidth:"any",parsePatterns:parseDayPeriodPatterns,defaultParseWidth:"any"})},zhTW={code:"zh-TW",formatDistance,formatLong,formatRelative,localize,match,options:{weekStartsOn:1,firstWeekContainsDate:4}};/*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme diff --git a/public/build/manifest.json b/public/build/manifest.json index 05f1630db3..d8af1d4d33 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -1,50 +1,50 @@ { - "_create-empty-split-fb5bda92.js": { - "file": "assets/create-empty-split-fb5bda92.js", + "_create-empty-split-b2c15454.js": { + "file": "assets/create-empty-split-b2c15454.js", "imports": [ - "_vendor-fca45885.js" + "_vendor-0ba1deae.js" ], - "integrity": "sha384-hhKUcZf3xSLJgwkzufZGpLjOUeD5gulL71KQu72SoGIUVLPU3EIBT+ICT/znc01b" + "integrity": "sha384-LPTZ0hEPbyGHGP76xXmeyTW22lbs5CNJU8wwXx3SOeUf6jDNYVoSSEe05QdKYKQ0" }, - "_format-money-43e05102.js": { - "file": "assets/format-money-43e05102.js", + "_format-money-a71f277a.js": { + "file": "assets/format-money-a71f277a.js", "imports": [ - "_vendor-fca45885.js" + "_vendor-0ba1deae.js" ], - "integrity": "sha384-/lP2o0Yj4DAtc93ChQvqF5ctDGjH6jakuIZcEQBICvDn/YtSDaPr7PzrZd4w53jV" + "integrity": "sha384-NX1AQwixTtbRYpnSgnTwE6OzMgA0zTe/BOQp4tA+sMFZ7A/Z/8AM85Ia0343u020" }, - "_get-94678769.js": { - "file": "assets/get-94678769.js", + "_get-971543fd.js": { + "file": "assets/get-971543fd.js", "imports": [ - "_format-money-43e05102.js" + "_format-money-a71f277a.js" ], - "integrity": "sha384-/nzI9V1buTN8n1p1uL9UOxOasx6+q6kTpiwDCaZZHBCVrrnFqWSCQCHAPQFcqYGB" + "integrity": "sha384-kRyC3Ngpm92ejZXmYiYd9NWyzp47VMYlXB1QCIMNJf/5g0CM3/id1tMx1wM7sWop" }, - "_get-a29f6df7.js": { - "file": "assets/get-a29f6df7.js", + "_get-c4c00bed.js": { + "file": "assets/get-c4c00bed.js", "imports": [ - "_format-money-43e05102.js" + "_format-money-a71f277a.js" ], - "integrity": "sha384-QRZtv6rXwaf1k9JOU1p1T42Nn2t5En83j/8rbh00dJ+1sSoNLD0maS8FkPKVRbpE" + "integrity": "sha384-KLoBbucwHe+WIBcGunE9+tql5dx39uDkibZZDSq9X9m25oHNXRtVbjfI8ljmGSYe" }, - "_parse-downloaded-splits-4afea167.js": { - "file": "assets/parse-downloaded-splits-4afea167.js", + "_parse-downloaded-splits-19845c1d.js": { + "file": "assets/parse-downloaded-splits-19845c1d.js", "imports": [ - "_create-empty-split-fb5bda92.js", - "_vendor-fca45885.js" + "_create-empty-split-b2c15454.js", + "_vendor-0ba1deae.js" ], - "integrity": "sha384-rTgD6HzwbdSD/qoN3b4vipowqanriBYLYnORI3F23R+uFbr1kyZIE1AHYA9oe2qO" + "integrity": "sha384-fvvNIwjZ9BkUU+LRImRK606sDo4vJs8/Z58Vm7T46vAl66xckgxX+GVjsltwkhus" }, - "_splice-errors-into-transactions-9c9b99c0.js": { - "file": "assets/splice-errors-into-transactions-9c9b99c0.js", + "_splice-errors-into-transactions-995deb6d.js": { + "file": "assets/splice-errors-into-transactions-995deb6d.js", "imports": [ - "_format-money-43e05102.js", - "_get-94678769.js", - "_vendor-fca45885.js" + "_format-money-a71f277a.js", + "_get-c4c00bed.js", + "_vendor-0ba1deae.js" ], - "integrity": "sha384-6QHZSbNE9w8hPmdvtcEi1wqimo8+lyJWXBaYaX7/c8qoveRKX5A2WZVhqb7bMRkV" + "integrity": "sha384-xy9kpKxM6h0137K3N9ZyXSqNwsD3sk+KrMm3tWivk/WtgXy+fxjgk08YSX7Zgc+d" }, - "_vendor-fca45885.js": { + "_vendor-0ba1deae.js": { "assets": [ "assets/layers-1dbbe9d0.png", "assets/layers-2x-066daca8.png", @@ -53,8 +53,8 @@ "css": [ "assets/vendor-49001d3f.css" ], - "file": "assets/vendor-fca45885.js", - "integrity": "sha384-xc7wHYzykc3pL46xJ1C3dJ/yReuYh0aAcdywRaE8sPW9QiKDkmpdip8ksd8qWp4b" + "file": "assets/vendor-0ba1deae.js", + "integrity": "sha384-9W7xmHUksAccX1L6MeAPa77/siJb7Gka71e+TA2dfgu4VV7xUgeqeyTCIShNLB4b" }, "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf": { "file": "assets/fa-brands-400-5656d596.ttf", @@ -102,68 +102,76 @@ "integrity": "sha384-wg83fCOXjBtqzFAWhTL9Sd9vmLUNhfEEzfmNUX9zwv2igKlz/YQbdapF4ObdxF+R" }, "resources/assets/v2/pages/dashboard/dashboard.js": { - "file": "assets/dashboard-2ad8d866.js", + "file": "assets/dashboard-60d58953.js", "imports": [ - "_format-money-43e05102.js", - "_vendor-fca45885.js", - "_get-a29f6df7.js", - "_get-94678769.js" + "_format-money-a71f277a.js", + "_vendor-0ba1deae.js", + "_get-971543fd.js", + "_get-c4c00bed.js" ], "isEntry": true, "src": "resources/assets/v2/pages/dashboard/dashboard.js", - "integrity": "sha384-drEV1+zgjVGIfpdo1BovDls72a22l303XFZq/n0BE9VMTuydOYDBBgEqjM1GgwQD" + "integrity": "sha384-KGiwIVYJZwLUgiraYW27lW+R5wW0LW30/Z0z6UA1SkfjjoeDXm1DTcSoUtMhltaG" }, "resources/assets/v2/pages/transactions/create.js": { - "file": "assets/create-46b63de1.js", + "file": "assets/create-dd6750e8.js", "imports": [ - "_format-money-43e05102.js", - "_create-empty-split-fb5bda92.js", - "_splice-errors-into-transactions-9c9b99c0.js", - "_vendor-fca45885.js", - "_get-94678769.js" + "_format-money-a71f277a.js", + "_create-empty-split-b2c15454.js", + "_splice-errors-into-transactions-995deb6d.js", + "_vendor-0ba1deae.js", + "_get-c4c00bed.js" ], "isEntry": true, "src": "resources/assets/v2/pages/transactions/create.js", - "integrity": "sha384-qacGHBXX2jXhiYdstJdUk5SBbdF1y8uj9RTdWetpmATLMNSjetRemPMk4PJoGxgZ" + "integrity": "sha384-rrUkO07lnTiSQ+5SPMwOLmnu2J+5oQmZFKfsf3ApkQG9ct3qrwBocQ9f0H5cftv2" }, "resources/assets/v2/pages/transactions/edit.js": { - "file": "assets/edit-b45ed381.js", + "file": "assets/edit-74c97acb.js", "imports": [ - "_format-money-43e05102.js", - "_get-a29f6df7.js", - "_parse-downloaded-splits-4afea167.js", - "_splice-errors-into-transactions-9c9b99c0.js", - "_vendor-fca45885.js", - "_create-empty-split-fb5bda92.js", - "_get-94678769.js" + "_format-money-a71f277a.js", + "_get-971543fd.js", + "_parse-downloaded-splits-19845c1d.js", + "_splice-errors-into-transactions-995deb6d.js", + "_vendor-0ba1deae.js", + "_create-empty-split-b2c15454.js", + "_get-c4c00bed.js" ], "isEntry": true, "src": "resources/assets/v2/pages/transactions/edit.js", - "integrity": "sha384-CoTAYJsk4/69IMBbgV50+i5mK+pANKXl0hLH9nqErgit1WDdBK6U4VimDsq5fvMf" + "integrity": "sha384-gU2Nw6D5i8slOZwzR1Tlpf82FvESkn7cNoT24Pk/VJzqY3JQo3Mwr0vb09swPwEZ" }, "resources/assets/v2/pages/transactions/index.js": { - "file": "assets/index-8df22335.js", + "file": "assets/index-cf70f728.js", "imports": [ - "_format-money-43e05102.js", - "_vendor-fca45885.js", - "_get-a29f6df7.js" + "_format-money-a71f277a.js", + "_vendor-0ba1deae.js", + "_get-971543fd.js" ], "isEntry": true, "src": "resources/assets/v2/pages/transactions/index.js", - "integrity": "sha384-UcghdFUsV8Bp01abyYn4u6sI/mWjXuY677vyQ76p1gVaMl9pVMGjdPa8Cd9Lg6M5" + "integrity": "sha384-aCoGtjOpn/zM6UGPc4bOZEGISPRJd8Vd2l/7VbFnJzjrSzMRIv5hhU1vpvw0JoTh" + }, + "resources/assets/v2/pages/transactions/show.css": { + "file": "assets/show-8b1429e5.css", + "src": "resources/assets/v2/pages/transactions/show.css", + "integrity": "sha384-D0+ADFJ1uVTJKTOYOVIjDXI7vzboM0WuC0AjpA2jhwEXxAVGnZTzqFZPuSYWBWiL" }, "resources/assets/v2/pages/transactions/show.js": { - "file": "assets/show-61e79d17.js", + "css": [ + "assets/show-8b1429e5.css" + ], + "file": "assets/show-19f421da.js", "imports": [ - "_format-money-43e05102.js", - "_vendor-fca45885.js", - "_get-a29f6df7.js", - "_parse-downloaded-splits-4afea167.js", - "_create-empty-split-fb5bda92.js" + "_format-money-a71f277a.js", + "_vendor-0ba1deae.js", + "_get-971543fd.js", + "_parse-downloaded-splits-19845c1d.js", + "_create-empty-split-b2c15454.js" ], "isEntry": true, "src": "resources/assets/v2/pages/transactions/show.js", - "integrity": "sha384-JBLT+bepNQ1x9TTUWy1H/ekjto18Jzudb4suKq+rF1YvqeSpouHzJU2l1YeObQ7y" + "integrity": "sha384-Ml/m6l4ZRqzuhW7/z2hKnrLYZKKkrswMA60W6eWSMeQkNXgzcgO4lO9YS8iYHO2O" }, "resources/assets/v2/sass/app.scss": { "file": "assets/app-fb7b26ec.css", diff --git a/resources/assets/v2/libraries/dark-editable/Modes/BaseMode.js b/resources/assets/v2/libraries/dark-editable/Modes/BaseMode.js new file mode 100755 index 0000000000..b8805dac37 --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Modes/BaseMode.js @@ -0,0 +1,42 @@ +/* + * BaseMode.js + * Copyright (c) 2024 https://github.com/DarKsandr/dark-editable + * + * License: MIT + * + * Copied and slightly edited by James Cole + */ +export default class BaseMode{ + constructor(context) { + if(this.constructor === BaseMode){ + throw new Error(`It's abstract class`); + } + this.context = context; + } + event_show(){ + this.context.typeElement.hideError(); + this.context.typeElement.element.value = this.context.value; + this.context.element.dispatchEvent(new CustomEvent("show")); + } + event_shown(){ + this.context.element.dispatchEvent(new CustomEvent("shown")); + } + event_hide(){ + this.context.element.dispatchEvent(new CustomEvent("hide")); + } + event_hidden(){ + this.context.element.dispatchEvent(new CustomEvent("hidden")); + } + init(){ + throw new Error('Method `init` not define!'); + } + enable(){ + throw new Error('Method `enable` not define!'); + } + disable(){ + throw new Error('Method `disable` not define!'); + } + hide(){ + throw new Error('Method `hide` not define!'); + } +} diff --git a/resources/assets/v2/libraries/dark-editable/Modes/InlineMode.js b/resources/assets/v2/libraries/dark-editable/Modes/InlineMode.js new file mode 100755 index 0000000000..b17fa4b44b --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Modes/InlineMode.js @@ -0,0 +1,40 @@ +/* + * InlineMode.js + * Copyright (c) 2024 https://github.com/DarKsandr/dark-editable + * + * License: MIT + * + * Copied and slightly edited by James Cole + */ + +import BaseMode from "./BaseMode.js"; + +export default class InlineMode extends BaseMode{ + init(){ + const open = () => { + if(!this.context.disabled){ + const item = this.context.typeElement.create(); + this.event_show(); + this.context.element.removeEventListener('click', open); + this.context.element.innerHTML = ''; + this.context.element.append(item); + this.event_shown(); + } + } + this.context.element.addEventListener('click', open); + } + enable(){ + + } + disable(){ + + } + hide(){ + this.event_hide(); + this.context.element.innerHTML = this.context.value; + setTimeout(() => { + this.init(); + this.event_hidden(); + }, 100); + } +} diff --git a/resources/assets/v2/libraries/dark-editable/Modes/PopupMode.js b/resources/assets/v2/libraries/dark-editable/Modes/PopupMode.js new file mode 100755 index 0000000000..8ffbfaa738 --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Modes/PopupMode.js @@ -0,0 +1,53 @@ +/* + * PopupMode.js + * Copyright (c) 2024 https://github.com/DarKsandr/dark-editable + * + * License: MIT + * + * Copied and slightly edited by James Cole + */ + +import BaseMode from "./BaseMode.js"; + +export default class PopupMode extends BaseMode{ + init(){ + this.popover = new bootstrap.Popover(this.context.element, { + container: "body", + content: this.context.typeElement.create(), + html: true, + customClass: "dark-editable", + title: this.context.title, + }); + this.context.element.addEventListener('show.bs.popover', () => { + this.event_show(); + }); + this.context.element.addEventListener('shown.bs.popover', () => { + this.event_shown(); + }); + this.context.element.addEventListener('hide.bs.popover', () => { + this.event_hide(); + }); + this.context.element.addEventListener('hidden.bs.popover', () => { + this.event_hidden(); + }); + + document.addEventListener('click', (e) => { + const target = e.target; + if(target === this.popover.tip || target === this.context.element) return; + let current = target; + while(current = current.parentNode){ + if(current === this.popover.tip) return; + } + this.hide(); + }) + } + enable(){ + this.popover.enable(); + } + disable(){ + this.popover.disable(); + } + hide(){ + this.popover.hide(); + } +} diff --git a/resources/assets/v2/libraries/dark-editable/Types/BaseType.js b/resources/assets/v2/libraries/dark-editable/Types/BaseType.js new file mode 100755 index 0000000000..9650a87f89 --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Types/BaseType.js @@ -0,0 +1,255 @@ +/* + * BaseMode.js + * Copyright (c) 2024 https://github.com/DarKsandr/dark-editable + * + * License: MIT + * + * Copied and slightly edited by James Cole + */ + +export default class BaseType { + context = null; + element = null; + error = null; + form = null; + load = null; + buttonGroup = null; + buttons = {success: null, cancel: null}; + + constructor(context) { + if (this.constructor === BaseType) { + throw new Error(`It's abstract class`); + } + this.context = context; + } + + create() { + throw new Error('Method `create` not define!'); + } + + createContainer(element) { + const div = document.createElement(`div`); + + // original list of elements: + this.element = element; + this.error = this.createContainerError(); + this.form = this.createContainerForm(); + this.load = this.createContainerLoad(); + this.buttons.success = this.createButtonSuccess(); + this.buttons.cancel = this.createButtonCancel(); + + // create first div, with label and input: + const topDiv = document.createElement(`div`); + topDiv.classList.add("col-12"); + + // create label: + const label = document.createElement(`label`); + label.classList.add("visually-hidden"); + label.for = element.id; + + // add label + input to top div: + topDiv.append(label, element); + + // create second div, with button group: + const bottomDiv = document.createElement(`div`); + bottomDiv.classList.add("col-12"); + + // create button group: + this.buttonGroup = this.createButtonGroup(); + + // append buttons to button group: + this.buttonGroup.append(this.buttons.success, this.buttons.cancel); + bottomDiv.append(this.buttonGroup); + + // append bottom and top div to form: + this.form.append(topDiv, bottomDiv); + + //this.form.append(element, this.load, this.buttons.success, this.buttons.cancel); + //this.form.append(element, this.load, this.buttonGroup); + div.append(this.error, this.form); + return div; + } + + createButtonGroup() { + const div = document.createElement(`div`); + div.classList.add("btn-group", "btn-group-sm"); + return div; + } + + createContainerError() { + const div = document.createElement(`div`); + div.classList.add("text-danger", "fst-italic", "mb-2", "fw-bold"); + div.style.display = "none"; + return div; + } + + createContainerForm() { + + + const form = document.createElement(`form`); + form.classList.add("row", "row-cols-lg-auto", "g-3", "align-items-center"); + //form.style.gap = "20px"; + form.addEventListener('submit', async e => { + e.preventDefault(); + const newValue = this.getValue(); + if (this.context.send && this.context.pk && this.context.url && (this.context.value !== newValue)) { + this.showLoad(); + let msg; + try { + const response = await this.ajax(newValue); + if (response.ok) { + msg = await this.context.success(response, newValue); + } else { + msg = await this.context.error(response, newValue) || `${response.status} ${response.statusText}`; + } + } catch (error) { + console.error(error); + msg = error; + } + + if (msg) { + this.setError(msg); + this.showError(); + } else { + this.setError(null); + this.hideError(); + this.context.value = this.getValue(); + this.context.modeElement.hide(); + this.initText(); + } + this.hideLoad(); + } else { + this.context.value = this.getValue(); + this.context.modeElement.hide(); + this.initText(); + } + this.context.element.dispatchEvent(new CustomEvent("save")); + }) + return form; + } + + createContainerLoad() { + const div = document.createElement(`div`); + div.style.display = "none"; + div.style.position = "absolute"; + div.style.background = "white"; + div.style.width = "100%"; + div.style.height = "100%"; + div.style.top = 0; + div.style.left = 0; + const loader = document.createElement(`div`); + loader.classList.add("dark-editable-loader"); + div.append(loader); + return div; + } + + createButton() { + const button = document.createElement("button"); + button.type = "button"; + button.classList.add("btn", "btn-sm"); + button.style.color = "transparent"; + button.style.textShadow = "0 0 0 white"; + return button; + } + + createButtonSuccess() { + const btn_success = this.createButton(); + btn_success.type = "submit"; + btn_success.classList.add("btn-success"); + btn_success.innerHTML = "✔"; + return btn_success; + } + + createButtonCancel() { + const btn_cancel = this.createButton(); + btn_cancel.classList.add("btn-danger"); + const div = document.createElement("div"); + div.innerHTML = "✖"; + btn_cancel.append(div); + btn_cancel.addEventListener("click", () => { + this.context.modeElement.hide(); + }); + return btn_cancel; + } + + hideLoad() { + this.load.style.display = "none"; + } + + showLoad() { + this.load.style.display = "block"; + } + + ajax(new_value) { + let url = this.context.url; + const form = new FormData; + form.append("pk", this.context.pk); + form.append("name", this.context.name); + form.append("value", new_value); + const option = {}; + option.method = this.context.ajaxOptions.method; + if (option.method === "POST") { + option.body = form; + } else { + url += "?" + new URLSearchParams(form).toString(); + } + return fetch(url, option); + } + + async successResponse(response, newValue) { + + } + + async errorResponse(response, newValue) { + + } + + setError(errorMsg) { + this.error.innerHTML = errorMsg; + } + + showError() { + this.error.style.display = "block"; + } + + hideError() { + if (this.error) { + this.error.style.display = "none"; + } + } + + createElement(name) { + const element = document.createElement(name); + console.log(element); + element.classList.add("form-control"); + if (this.context.required) { + element.required = this.context.required; + } + this.add_focus(element); + return element; + } + + add_focus(element) { + this.context.element.addEventListener('shown', function () { + element.focus(); + }); + } + + initText() { + if (this.context.value === "") { + this.context.element.innerHTML = this.context.emptytext; + return true; + } else { + this.context.element.innerHTML = this.context.value; + return false; + } + } + + initOptions() { + + } + + getValue() { + return this.element.value; + } +} diff --git a/resources/assets/v2/libraries/dark-editable/Types/DateTimeType.js b/resources/assets/v2/libraries/dark-editable/Types/DateTimeType.js new file mode 100755 index 0000000000..70947aee3e --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Types/DateTimeType.js @@ -0,0 +1,16 @@ +import DateType from "./DateType.js"; + +export default class DateTimeType extends DateType{ + create(){ + const input = this.createElement(`input`); + input.type = "datetime-local"; + + return this.createContainer(input); + } + + initOptions(){ + this.context.get_opt("format", "YYYY-MM-DD HH:mm"); + this.context.get_opt("viewformat", "YYYY-MM-DD HH:mm"); + this.context.value = moment(this.context.value).format("YYYY-MM-DDTHH:mm"); + } +} \ No newline at end of file diff --git a/resources/assets/v2/libraries/dark-editable/Types/DateType.js b/resources/assets/v2/libraries/dark-editable/Types/DateType.js new file mode 100755 index 0000000000..9e3e279fdc --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Types/DateType.js @@ -0,0 +1,25 @@ +import BaseType from "./BaseType.js"; + +export default class DateType extends BaseType{ + create(){ + const input = this.createElement(`input`); + input.type = "date"; + + return this.createContainer(input); + } + + initText(){ + if(this.value === ""){ + this.context.element.innerHTML = this.context.emptytext; + return true; + } else { + this.context.element.innerHTML = moment(this.context.value).format(this.context.viewformat); + return false; + } + } + + initOptions(){ + this.context.get_opt("format", "YYYY-MM-DD"); + this.context.get_opt("viewformat", "YYYY-MM-DD"); + } +} \ No newline at end of file diff --git a/resources/assets/v2/libraries/dark-editable/Types/InputType.js b/resources/assets/v2/libraries/dark-editable/Types/InputType.js new file mode 100755 index 0000000000..a931713951 --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Types/InputType.js @@ -0,0 +1,19 @@ +import BaseType from "./BaseType.js"; + +export default class InputType extends BaseType{ + create(){ + // expand input element with necessary classes and things. + // + + + const input = this.createElement(`input`); + const id = this.context.element.id + '_input'; + input.type = this.context.type; + input.id = id; + input.autocomplete = 'off'; + input.placeholder = this.context.element.innerText; + input.classList.add("form-control", "form-control-md"); + + return this.createContainer(input); + } +} diff --git a/resources/assets/v2/libraries/dark-editable/Types/SelectType.js b/resources/assets/v2/libraries/dark-editable/Types/SelectType.js new file mode 100755 index 0000000000..1519d2977f --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Types/SelectType.js @@ -0,0 +1,36 @@ +import BaseType from "./BaseType.js"; + +export default class SelectType extends BaseType{ + create(){ + const select = this.createElement(`select`); + this.context.source.forEach(item => { + const opt = document.createElement(`option`); + opt.value = item.value; + opt.innerHTML = item.text; + select.append(opt); + }); + + return this.createContainer(select); + } + + initText(){ + this.context.element.innerHTML = this.context.emptytext; + if(this.context.value !== "" && this.context.source.length > 0){ + for(const key in this.context.source){ + const item = this.context.source[ key ]; + if(item.value == this.context.value){ + this.context.element.innerHTML = item.text; + return false; + } + } + } + return true; + } + + initOptions(){ + this.context.get_opt("source", []); + if(typeof this.context.source === "string" && this.context.source !== ""){ + this.context.source = JSON.parse(this.context.source); + } + } +} \ No newline at end of file diff --git a/resources/assets/v2/libraries/dark-editable/Types/TextAreaType.js b/resources/assets/v2/libraries/dark-editable/Types/TextAreaType.js new file mode 100755 index 0000000000..81eb16ce33 --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/Types/TextAreaType.js @@ -0,0 +1,9 @@ +import BaseType from "./BaseType.js"; + +export default class TextAreaType extends BaseType{ + create(){ + const textarea = this.createElement(`textarea`); + + return this.createContainer(textarea); + } +} \ No newline at end of file diff --git a/resources/assets/v2/libraries/dark-editable/dark-editable.css b/resources/assets/v2/libraries/dark-editable/dark-editable.css new file mode 100755 index 0000000000..368b06e55a --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/dark-editable.css @@ -0,0 +1,87 @@ +.dark-editable-element{ + border-bottom: dashed 1px #0088cc; + text-decoration: none; + cursor: pointer; +} +.dark-editable-element-disabled{ + border-bottom: none; + cursor: default; +} +.dark-editable-element-empty{ + font-style: italic; + color: #DD1144; +} +.dark-editable{ + max-width: none; +} + +.dark-editable-loader { + font-size: 5px; + left: 50%; + top: 50%; + width: 1em; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + -webkit-animation: load5 1.1s infinite ease; + animation: load5 1.1s infinite ease; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + } + @-webkit-keyframes load5 { + 0%, + 100% { + box-shadow: 0em -2.6em 0em 0em #000000, 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.5), -1.8em -1.8em 0 0em rgba(0,0,0, 0.7); + } + 12.5% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.7), 1.8em -1.8em 0 0em #000000, 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.5); + } + 25% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.5), 1.8em -1.8em 0 0em rgba(0,0,0, 0.7), 2.5em 0em 0 0em #000000, 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 37.5% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.5), 2.5em 0em 0 0em rgba(0,0,0, 0.7), 1.75em 1.75em 0 0em #000000, 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 50% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.5), 1.75em 1.75em 0 0em rgba(0,0,0, 0.7), 0em 2.5em 0 0em #000000, -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 62.5% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.5), 0em 2.5em 0 0em rgba(0,0,0, 0.7), -1.8em 1.8em 0 0em #000000, -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 75% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.5), -1.8em 1.8em 0 0em rgba(0,0,0, 0.7), -2.6em 0em 0 0em #000000, -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 87.5% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.5), -2.6em 0em 0 0em rgba(0,0,0, 0.7), -1.8em -1.8em 0 0em #000000; + } + } + @keyframes load5 { + 0%, + 100% { + box-shadow: 0em -2.6em 0em 0em #000000, 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.5), -1.8em -1.8em 0 0em rgba(0,0,0, 0.7); + } + 12.5% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.7), 1.8em -1.8em 0 0em #000000, 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.5); + } + 25% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.5), 1.8em -1.8em 0 0em rgba(0,0,0, 0.7), 2.5em 0em 0 0em #000000, 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 37.5% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.5), 2.5em 0em 0 0em rgba(0,0,0, 0.7), 1.75em 1.75em 0 0em #000000, 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 50% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.5), 1.75em 1.75em 0 0em rgba(0,0,0, 0.7), 0em 2.5em 0 0em #000000, -1.8em 1.8em 0 0em rgba(0,0,0, 0.2), -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 62.5% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.5), 0em 2.5em 0 0em rgba(0,0,0, 0.7), -1.8em 1.8em 0 0em #000000, -2.6em 0em 0 0em rgba(0,0,0, 0.2), -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 75% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.5), -1.8em 1.8em 0 0em rgba(0,0,0, 0.7), -2.6em 0em 0 0em #000000, -1.8em -1.8em 0 0em rgba(0,0,0, 0.2); + } + 87.5% { + box-shadow: 0em -2.6em 0em 0em rgba(0,0,0, 0.2), 1.8em -1.8em 0 0em rgba(0,0,0, 0.2), 2.5em 0em 0 0em rgba(0,0,0, 0.2), 1.75em 1.75em 0 0em rgba(0,0,0, 0.2), 0em 2.5em 0 0em rgba(0,0,0, 0.2), -1.8em 1.8em 0 0em rgba(0,0,0, 0.5), -2.6em 0em 0 0em rgba(0,0,0, 0.7), -1.8em -1.8em 0 0em #000000; + } + } + \ No newline at end of file diff --git a/resources/assets/v2/libraries/dark-editable/dark-editable.js b/resources/assets/v2/libraries/dark-editable/dark-editable.js new file mode 100644 index 0000000000..e9ea1d03f5 --- /dev/null +++ b/resources/assets/v2/libraries/dark-editable/dark-editable.js @@ -0,0 +1,181 @@ +/* + * dark-editable.js + * Copyright (c) 2024 https://github.com/DarKsandr/dark-editable + * + * License: MIT + * + * Copied and slightly edited by James Cole + */ + +import "./dark-editable.css"; +import PopupMode from "./Modes/PopupMode.js"; +import InlineMode from "./Modes/InlineMode.js"; +import BaseType from "./Types/BaseType.js"; +import InputType from "./Types/InputType.js"; +import TextAreaType from "./Types/TextAreaType.js"; +import SelectType from "./Types/SelectType.js"; +import DateType from "./Types/DateType.js"; +import DateTimeType from "./Types/DateTimeType.js"; + +export default class DarkEditable{ + modeElement = null; + typeElement = null; + mode = null; + type = null; + emptytext = null; + viewformat = null; + pk = null; + name = null; + + constructor(element, options = {}){ + this.element = element; + this.options = options; + + this.init_options(); + this.typeElement = this.route_type(); + this.typeElement.initOptions(); + this.modeElement = this.route_mode(); + this.modeElement.init(); + this.init_text(); + this.init_style(); + if(this.disabled){ + this.disable(); + } + this.element.dispatchEvent(new CustomEvent("init")); + } + + /* INIT METHODS */ + + get_opt(name, default_value){ + return this[ name ] = this.element.dataset?.[ name ] ?? this.options?.[ name ] ?? default_value; + } + get_opt_bool(name, default_value){ + this.get_opt(name, default_value); + if(typeof this[ name ] !== "boolean"){ + if(this[ name ] === "true") { + this[ name ] = true; + } else if(this[ name ] === "false") { + this[ name ] = false; + } else { + this[ name ] = default_value; + } + } + return this[ name ]; + } + + init_options(){ + //priority date elements + this.get_opt("value", this.element.innerHTML); + this.get_opt("name", this.element.id); + this.get_opt("pk", null); + this.get_opt("title", ""); + this.get_opt("type", "text"); + this.get_opt("emptytext", "Empty"); + this.get_opt("mode", "popup"); + this.get_opt("url", null); + this.get_opt("ajaxOptions", {}); + this.ajaxOptions = Object.assign({ + method: "POST", + dataType: "text", + }, this.ajaxOptions); + this.get_opt_bool("send", true); + this.get_opt_bool("disabled", false); + this.get_opt_bool("required", false); + if(this.options?.success && typeof this.options?.success == "function"){ + this.success = this.options.success; + } + if(this.options?.error && typeof this.options?.error == "function"){ + this.error = this.options.error; + } + } + + init_text(){ + const empty_class = "dark-editable-element-empty"; + this.element.classList.remove(empty_class); + if(this.typeElement.initText()){ + this.element.classList.add(empty_class); + } + } + + init_style(){ + this.element.classList.add("dark-editable-element"); + } + + /* INIT METHODS END */ + route_mode(){ + switch (this.mode){ + default: + throw new Error(`Mode ${this.mode} not found!`) + case 'popup': + return new PopupMode(this); + case 'inline': + return new InlineMode(this); + } + } + + route_type(){ + if(this.type.prototype instanceof BaseType){ + return new this.type(this); + } + if(typeof this.type === 'string'){ + switch(this.type){ + case "text": + case "password": + case "email": + case "url": + case "tel": + case "number": + case "range": + case "time": + return new InputType(this); + case "textarea": + return new TextAreaType(this); + case "select": + return new SelectType(this); + case "date": + return new DateType(this); + case "datetime": + return new DateTimeType(this); + } + } + throw new Error(`Undefined type`); + } + + /* AJAX */ + + async success(response, newValue){ + return await this.typeElement.successResponse(response, newValue); + } + + async error(response, newValue){ + return await this.typeElement.errorResponse(response, newValue); + } + + /* AJAX END */ + + /* METHODS */ + + enable(){ + this.disabled = false; + this.element.classList.remove("dark-editable-element-disabled"); + this.modeElement.enable(); + + } + + disable(){ + this.disabled = true; + this.element.classList.add("dark-editable-element-disabled"); + this.modeElement.enable(); + } + + setValue(value){ + this.value = value; + this.init_text(); + } + + getValue(){ + return this.value; + } + + /* METHODS END */ +} diff --git a/resources/assets/v2/pages/transactions/create.js b/resources/assets/v2/pages/transactions/create.js index 3c254da576..9a6293a5f0 100644 --- a/resources/assets/v2/pages/transactions/create.js +++ b/resources/assets/v2/pages/transactions/create.js @@ -349,7 +349,7 @@ let transactions = function () { this.detectTransactionType(); // parse transaction: - let transactions = parseFromEntries(this.entries, this.groupProperties.transactionType); + let transactions = parseFromEntries(this.entries, null, this.groupProperties.transactionType); let submission = { group_title: this.groupProperties.title, fire_webhooks: this.formStates.webhooksButton, @@ -466,7 +466,7 @@ let transactions = function () { // onRenderItem: renderAccount, onChange: changeSourceAccount, onSelectItem: selectSourceAccount, - hiddenValue: this.items[count].source_account.alpine_name, + hiddenValue: this.entries[count].source_account.alpine_name }); addAutocomplete({ selector: 'input.ac-dest', diff --git a/resources/assets/v2/pages/transactions/edit.js b/resources/assets/v2/pages/transactions/edit.js index 6337b346d9..c046adf777 100644 --- a/resources/assets/v2/pages/transactions/edit.js +++ b/resources/assets/v2/pages/transactions/edit.js @@ -58,6 +58,7 @@ let transactions = function () { return { // transactions are stored in "entries": entries: [], + originals: [], // state of the form is stored in formState: formStates: { @@ -126,7 +127,7 @@ let transactions = function () { this.formStates.isSubmitting = true; // parse transaction: - let transactions = parseFromEntries(this.entries, this.groupProperties.transactionType); + let transactions = parseFromEntries(this.entries, this.originals, this.groupProperties.transactionType); let submission = { group_title: this.groupProperties.title, fire_webhooks: this.formStates.webhooksButton, @@ -263,7 +264,7 @@ let transactions = function () { getter.show(groupId, {}).then((response) => { const data = response.data.data; this.groupProperties.id = parseInt(data.id); - this.groupProperties.transactionType = data.attributes.transactions[0].type; + this.groupProperties.transactionType = data.attributes.transactions[0].type.toLowerCase(); this.groupProperties.title = data.attributes.title ?? data.attributes.transactions[0].description; this.entries = parseDownloadedSplits(data.attributes.transactions); diff --git a/resources/assets/v2/pages/transactions/shared/manage-locations.js b/resources/assets/v2/pages/transactions/shared/manage-locations.js index 506fa53308..92fce38165 100644 --- a/resources/assets/v2/pages/transactions/shared/manage-locations.js +++ b/resources/assets/v2/pages/transactions/shared/manage-locations.js @@ -43,12 +43,14 @@ function addPointToMap(e) { markers[index].on('dragend', dragEnd); markers[index].addTo(maps[index]); - const setEvent = new CustomEvent('location-set', {detail: { + const setEvent = new CustomEvent('location-set', { + detail: { latitude: e.latlng.lat, longitude: e.latlng.lng, index: index, zoomLevel: maps[index].getZoom() - }}); + } + }); document.dispatchEvent(setEvent); } } @@ -56,10 +58,12 @@ function addPointToMap(e) { function saveZoomOfMap(e) { //let index = parseInt(e.sourceTarget._container.attributes['data-index'].value); let index = 0; - const zoomEvent = new CustomEvent('location-zoom', {detail: { + const zoomEvent = new CustomEvent('location-zoom', { + detail: { index: index, zoomLevel: maps[index].getZoom() - }}); + } + }); document.dispatchEvent(zoomEvent); } @@ -87,13 +91,15 @@ export function addLocation(index) { //let holder = document.getElementById('location_map_' + index); let holder = document.getElementById('location_map'); - maps[index] = L.map(holder).setView([holder.dataset.latitude, holder.dataset.longitude], holder.dataset.zoomLevel); + if (holder) { + maps[index] = L.map(holder).setView([holder.dataset.latitude, holder.dataset.longitude], holder.dataset.zoomLevel); - L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { - maxZoom: 19, - attribution: '© OpenStreetMap' - }).addTo(maps[index]); - maps[index].on('click', addPointToMap); - maps[index].on('zoomend', saveZoomOfMap); + L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { + maxZoom: 19, + attribution: '© OpenStreetMap' + }).addTo(maps[index]); + maps[index].on('click', addPointToMap); + maps[index].on('zoomend', saveZoomOfMap); + } } } diff --git a/resources/assets/v2/pages/transactions/shared/parse-from-entries.js b/resources/assets/v2/pages/transactions/shared/parse-from-entries.js index 124578c8d1..f3e0c93fea 100644 --- a/resources/assets/v2/pages/transactions/shared/parse-from-entries.js +++ b/resources/assets/v2/pages/transactions/shared/parse-from-entries.js @@ -21,15 +21,23 @@ /** * */ -export function parseFromEntries(entries, transactionType) { +export function parseFromEntries(entries, originals, transactionType) { let returnArray = []; for (let i in entries) { if (entries.hasOwnProperty(i)) { const entry = entries[i]; + let compare = false; + let original = {}; + if (originals !== null && originals.hasOwnProperty(i)) { + compare = true; + let original = originals[i]; + } let current = {}; // fields for transaction - current.description = entry.description; + if ((compare && original.description !== entry.description) || !compare) { + current.description = entry.description; + } // source and destination current.source_name = entry.source_account.name; diff --git a/resources/assets/v2/pages/transactions/show.js b/resources/assets/v2/pages/transactions/show.js index 009dc38ed0..99480315d1 100644 --- a/resources/assets/v2/pages/transactions/show.js +++ b/resources/assets/v2/pages/transactions/show.js @@ -25,6 +25,8 @@ import Get from "../../api/v2/model/transaction/get.js"; import {parseDownloadedSplits} from "./shared/parse-downloaded-splits.js"; import {format} from "date-fns"; import formatMoney from "../../util/format-money.js"; +import DarkEditable from "../../libraries/dark-editable/dark-editable.js"; + let show = function () { return { @@ -56,6 +58,10 @@ let show = function () { pageProperties: {}, formatMoney(amount, currencyCode) { + console.log('formatting', amount, currencyCode); + if('' === currencyCode) { + currencyCode = 'EUR'; + } return formatMoney(amount, currencyCode); }, format(date) { @@ -95,6 +101,12 @@ let show = function () { } } } + + // at this point do the inline change fields + //inlineEdit('journal_description') + const usernameEl = document.getElementById('journal_description'); + const popover = new DarkEditable(usernameEl, {mode: 'inline', url: '/something-else'}); + }).catch((error) => { // todo auto generated. this.notifications.error.show = true; diff --git a/resources/views/v2/transactions/show.blade.php b/resources/views/v2/transactions/show.blade.php index 8f81a197a5..7e886bb83b 100644 --- a/resources/views/v2/transactions/show.blade.php +++ b/resources/views/v2/transactions/show.blade.php @@ -45,6 +45,16 @@ +
@@ -123,10 +133,17 @@