From faeab5f0f51d588be223c7a822a6fc06b1874913 Mon Sep 17 00:00:00 2001 From: seo Date: Sun, 7 Jun 2026 00:33:58 +0900 Subject: [PATCH] Initial financial project import --- .gitignore | 12 + README.md | 33 + app/config/database.php | 12 + app/lib/account_service.php | 76 ++ app/lib/auth.php | 284 +++++ app/lib/card_billing_service.php | 274 +++++ app/lib/db.php | 32 + app/lib/helpers.php | 98 ++ app/lib/installment_service.php | 704 +++++++++++ app/lib/loan_service.php | 1154 ++++++++++++++++++ app/lib/merchant_pattern_service.php | 172 +++ app/lib/recurring_service.php | 49 + app/lib/transaction_form_service.php | 325 +++++ app/lib/transaction_service.php | 441 +++++++ app/views/footer.php | 6 + app/views/header.php | 82 ++ public/account_create.php | 329 +++++ public/account_edit.php | 362 ++++++ public/accounts.php | 174 +++ public/api/category_suggest.php | 61 + public/assets/app.css | 576 +++++++++ public/assets/pwa.js | 9 + public/assets/vendor/bootstrap.bundle.min.js | 7 + public/assets/vendor/bootstrap.min.css | 6 + public/assets/vendor/chart.umd.js | 14 + public/categories.php | 117 ++ public/dashboard.php | 498 ++++++++ public/favicon.png | Bin 0 -> 488250 bytes public/index.php | 3 + public/installment_billing.php | 430 +++++++ public/installment_prepay.php | 554 +++++++++ public/installments.php | 325 +++++ public/loan_create.php | 247 ++++ public/loan_detail.php | 206 ++++ public/loan_edit.php | 223 ++++ public/loan_payment_create.php | 153 +++ public/loan_prepay.php | 271 ++++ public/loans.php | 276 +++++ public/login.php | 125 ++ public/logout.php | 6 + public/manifest.webmanifest | 39 + public/merchant_rules.php | 264 ++++ public/offline.html | 22 + public/recurring.php | 182 +++ public/register.php | 139 +++ public/sw.js | 60 + public/transaction_create.php | 880 +++++++++++++ public/transaction_delete.php | 19 + public/transaction_edit.php | 656 ++++++++++ public/transactions.php | 280 +++++ 50 files changed, 11267 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/config/database.php create mode 100644 app/lib/account_service.php create mode 100644 app/lib/auth.php create mode 100644 app/lib/card_billing_service.php create mode 100644 app/lib/db.php create mode 100644 app/lib/helpers.php create mode 100644 app/lib/installment_service.php create mode 100644 app/lib/loan_service.php create mode 100644 app/lib/merchant_pattern_service.php create mode 100644 app/lib/recurring_service.php create mode 100644 app/lib/transaction_form_service.php create mode 100644 app/lib/transaction_service.php create mode 100644 app/views/footer.php create mode 100644 app/views/header.php create mode 100644 public/account_create.php create mode 100644 public/account_edit.php create mode 100644 public/accounts.php create mode 100644 public/api/category_suggest.php create mode 100644 public/assets/app.css create mode 100644 public/assets/pwa.js create mode 100644 public/assets/vendor/bootstrap.bundle.min.js create mode 100644 public/assets/vendor/bootstrap.min.css create mode 100644 public/assets/vendor/chart.umd.js create mode 100644 public/categories.php create mode 100644 public/dashboard.php create mode 100644 public/favicon.png create mode 100644 public/index.php create mode 100644 public/installment_billing.php create mode 100644 public/installment_prepay.php create mode 100644 public/installments.php create mode 100644 public/loan_create.php create mode 100644 public/loan_detail.php create mode 100644 public/loan_edit.php create mode 100644 public/loan_payment_create.php create mode 100644 public/loan_prepay.php create mode 100644 public/loans.php create mode 100644 public/login.php create mode 100644 public/logout.php create mode 100644 public/manifest.webmanifest create mode 100644 public/merchant_rules.php create mode 100644 public/offline.html create mode 100644 public/recurring.php create mode 100644 public/register.php create mode 100644 public/sw.js create mode 100644 public/transaction_create.php create mode 100644 public/transaction_delete.php create mode 100644 public/transaction_edit.php create mode 100644 public/transactions.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e19f4c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +.env +.agents/ +.codex/ +*.log +*.db +*.sqlite +*.sql +cache/ +tmp/ +uploads/ +secrets/ +secret/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..0331edd --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# Financial + +PHP based personal finance service for accounts, transactions, categories, installments, loans, recurring transactions, and merchant classification rules. + +## Main Features + +- Server-rendered authenticated screens for personal finance data. +- Account, transaction, installment, loan, recurring transaction, and merchant rule management. +- CSRF protected form POST workflows. +- Category suggestion API based on merchant rules and confidence. + +## Main APIs + +- `public/api/category_suggest.php` +- Standard authenticated form POST save flows. + +## Structure + +- `app/config/database.php`: DB config bridge. +- `app/lib/auth.php`: authentication, remember token, CSRF, and no-store headers. +- `app/lib/*_service.php`: domain services. +- `public/*.php`: screens and form handlers. + +## Secrets + +DB credentials are loaded from `/home/seo/secret/financial.php`. Do not commit that file. + +## Security + +- Uses login sessions and remember tokens. +- POST forms validate CSRF tokens. +- Personal financial responses should remain private and no-store. + diff --git a/app/config/database.php b/app/config/database.php new file mode 100644 index 0000000..202f875 --- /dev/null +++ b/app/config/database.php @@ -0,0 +1,12 @@ + getenv('FINANCIAL_DB_HOST') ?: ($financialSecretConfig['host'] ?? '127.0.0.1'), + 'port' => (int)(getenv('FINANCIAL_DB_PORT') ?: ($financialSecretConfig['port'] ?? 3306)), + 'dbname' => getenv('FINANCIAL_DB_NAME') ?: ($financialSecretConfig['dbname'] ?? 'financial'), + 'username' => getenv('FINANCIAL_DB_USER') ?: ($financialSecretConfig['username'] ?? 'financial'), + 'password' => getenv('FINANCIAL_DB_PASSWORD') ?: ($financialSecretConfig['password'] ?? ''), + 'charset' => getenv('FINANCIAL_DB_CHARSET') ?: ($financialSecretConfig['charset'] ?? 'utf8mb4'), +]; diff --git a/app/lib/account_service.php b/app/lib/account_service.php new file mode 100644 index 0000000..ac7cc0b --- /dev/null +++ b/app/lib/account_service.php @@ -0,0 +1,76 @@ +prepare("SELECT id, account_type, opening_balance FROM accounts WHERE id = ?"); + $stmt->execute([$accountId]); + $account = $stmt->fetch(); + + if (!$account) { + return; + } + + $opening = (float)$account['opening_balance']; + $type = $account['account_type']; + $balance = $opening; + + if ($type === 'bank' || $type === 'cash' || $type === 'other') { + $stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(CASE + WHEN transaction_type = 'income' AND account_id = :id THEN amount + ELSE 0 END), 0) AS income_sum, + + COALESCE(SUM(CASE + WHEN transaction_type = 'expense' AND account_id = :id THEN amount + ELSE 0 END), 0) AS expense_sum, + + COALESCE(SUM(CASE + WHEN transaction_type = 'transfer' AND account_id = :id THEN amount + ELSE 0 END), 0) AS transfer_out_sum, + + COALESCE(SUM(CASE + WHEN transaction_type = 'transfer' AND related_account_id = :id THEN amount + ELSE 0 END), 0) AS transfer_in_sum, + + COALESCE(SUM(CASE + WHEN transaction_type = 'card_payment' AND account_id = :id THEN amount + ELSE 0 END), 0) AS card_payment_sum + FROM transactions + WHERE account_id = :id OR related_account_id = :id + "); + $stmt->execute(['id' => $accountId]); + $row = $stmt->fetch(); + + $balance += (float)$row['income_sum']; + $balance -= (float)$row['expense_sum']; + $balance -= (float)$row['transfer_out_sum']; + $balance += (float)$row['transfer_in_sum']; + $balance -= (float)$row['card_payment_sum']; + } elseif ($type === 'card') { + $stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(CASE + WHEN transaction_type = 'expense' AND account_id = :id THEN amount + ELSE 0 END), 0) AS card_use_sum, + + COALESCE(SUM(CASE + WHEN transaction_type = 'card_payment' AND related_account_id = :id THEN amount + ELSE 0 END), 0) AS paid_sum + FROM transactions + WHERE account_id = :id OR related_account_id = :id + "); + $stmt->execute(['id' => $accountId]); + $row = $stmt->fetch(); + + $balance += (float)$row['card_use_sum']; + $balance -= (float)$row['paid_sum']; + } + + $stmt = $pdo->prepare("UPDATE accounts SET current_balance = ? WHERE id = ?"); + $stmt->execute([$balance, $accountId]); +} \ No newline at end of file diff --git a/app/lib/auth.php b/app/lib/auth.php new file mode 100644 index 0000000..ecfd0d8 --- /dev/null +++ b/app/lib/auth.php @@ -0,0 +1,284 @@ + 0, + 'path' => '/', + 'secure' => !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off', + 'httponly' => true, + 'samesite' => 'Lax', + ]); + session_start(); +} + +function send_private_no_store_headers(): void +{ + if (headers_sent()) { + return; + } + + header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); + header('Pragma: no-cache'); + header('Expires: 0'); + header('X-Content-Type-Options: nosniff'); + header('Referrer-Policy: same-origin'); +} + +function csrf_token(): string +{ + if (empty($_SESSION['csrf_token'])) { + $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); + } + + return $_SESSION['csrf_token']; +} + +function csrf_field(): string +{ + return ''; +} + +function verify_csrf_token(?string $token): bool +{ + return is_string($token) + && isset($_SESSION['csrf_token']) + && hash_equals($_SESSION['csrf_token'], $token); +} + +function require_valid_csrf_for_post(): void +{ + if (($_SERVER['REQUEST_METHOD'] ?? '') !== 'POST') { + return; + } + + if (verify_csrf_token($_POST['csrf_token'] ?? null)) { + return; + } + + http_response_code(419); + exit('Invalid CSRF token.'); +} + +function enable_csrf_form_injection(): void +{ + if (PHP_SAPI === 'cli' || defined('FINANCIAL_CSRF_INJECTION_ENABLED')) { + return; + } + + define('FINANCIAL_CSRF_INJECTION_ENABLED', true); + + ob_start(static function (string $buffer): string { + if ( + stripos($buffer, ']*)>/i', + static function (array $matches) use ($field): string { + $tag = $matches[0]; + + if ( + stripos($tag, 'method="post"') === false && + stripos($tag, "method='post'") === false && + !preg_match('/method\s*=\s*post/i', $tag) + ) { + return $tag; + } + + if (stripos($tag, 'csrf_token') !== false) { + return $tag; + } + + return $tag . $field; + }, + $buffer + ) ?? $buffer; + }); +} + +function throttle_login_attempts(string $username): void +{ + $key = 'login_attempts_' . hash('sha256', strtolower($username) . '|' . ($_SERVER['REMOTE_ADDR'] ?? '')); + $now = time(); + $attempt = $_SESSION[$key] ?? ['count' => 0, 'first_at' => $now]; + + if (($now - (int)$attempt['first_at']) > 900) { + $attempt = ['count' => 0, 'first_at' => $now]; + } + + if ((int)$attempt['count'] >= 8) { + throw new RuntimeException('로그인 시도가 많습니다. 잠시 후 다시 시도하세요.'); + } + + $attempt['count']++; + $_SESSION[$key] = $attempt; +} + +function clear_login_attempts(string $username): void +{ + $key = 'login_attempts_' . hash('sha256', strtolower($username) . '|' . ($_SERVER['REMOTE_ADDR'] ?? '')); + unset($_SESSION[$key]); +} + +function login_user(array $user, bool $remember = false): void +{ + session_regenerate_id(true); + + $_SESSION['user_id'] = (int)$user['id']; + $_SESSION['username'] = $user['username']; + + if ($remember) { + $token = bin2hex(random_bytes(32)); + $tokenHash = hash('sha256', $token); + $expiresAt = date('Y-m-d H:i:s', strtotime('+30 days')); + + $pdo = db(); + $stmt = $pdo->prepare(" + UPDATE users + SET remember_token = ?, remember_expires_at = ? + WHERE id = ? + "); + $stmt->execute([$tokenHash, $expiresAt, $user['id']]); + + setcookie( + 'remember_token', + $token, + [ + 'expires' => strtotime('+30 days'), + 'path' => '/', + 'secure' => true, + 'httponly' => true, + 'samesite' => 'Lax', + ] + ); + } +} + +function logout_user(): void +{ + if (!empty($_SESSION['user_id'])) { + $pdo = db(); + $stmt = $pdo->prepare(" + UPDATE users + SET remember_token = NULL, remember_expires_at = NULL + WHERE id = ? + "); + $stmt->execute([$_SESSION['user_id']]); + } + + setcookie( + 'remember_token', + '', + [ + 'expires' => time() - 3600, + 'path' => '/', + 'secure' => true, + 'httponly' => true, + 'samesite' => 'Lax', + ] + ); + + $_SESSION = []; + if (ini_get('session.use_cookies')) { + $params = session_get_cookie_params(); + setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'] ?? '', $params['secure'] ?? false, $params['httponly'] ?? false); + } + session_destroy(); +} + +function try_auto_login(): void +{ + if (!empty($_SESSION['user_id'])) { + return; + } + + if (empty($_COOKIE['remember_token'])) { + return; + } + + $token = $_COOKIE['remember_token']; + $tokenHash = hash('sha256', $token); + + $pdo = db(); + $stmt = $pdo->prepare(" + SELECT * + FROM users + WHERE remember_token = ? + AND remember_expires_at IS NOT NULL + AND remember_expires_at > NOW() + LIMIT 1 + "); + $stmt->execute([$tokenHash]); + $user = $stmt->fetch(); + + if (!$user) { + setcookie( + 'remember_token', + '', + [ + 'expires' => time() - 3600, + 'path' => '/', + 'secure' => true, + 'httponly' => true, + 'samesite' => 'Lax', + ] + ); + return; + } + + $_SESSION['user_id'] = (int)$user['id']; + $_SESSION['username'] = $user['username']; + + $newToken = bin2hex(random_bytes(32)); + $newHash = hash('sha256', $newToken); + $expiresAt = date('Y-m-d H:i:s', strtotime('+30 days')); + + $stmt = $pdo->prepare(" + UPDATE users + SET remember_token = ?, remember_expires_at = ? + WHERE id = ? + "); + $stmt->execute([$newHash, $expiresAt, $user['id']]); + + setcookie( + 'remember_token', + $newToken, + [ + 'expires' => strtotime('+30 days'), + 'path' => '/', + 'secure' => true, + 'httponly' => true, + 'samesite' => 'Lax', + ] + ); +} + +function check_auth(): void +{ + try_auto_login(); + + if (empty($_SESSION['user_id'])) { + header('Location: /login.php'); + exit; + } + + send_private_no_store_headers(); +} + +function user_id(): int +{ + return (int)($_SESSION['user_id'] ?? 0); +} + +send_private_no_store_headers(); +require_valid_csrf_for_post(); +enable_csrf_form_injection(); diff --git a/app/lib/card_billing_service.php b/app/lib/card_billing_service.php new file mode 100644 index 0000000..a933479 --- /dev/null +++ b/app/lib/card_billing_service.php @@ -0,0 +1,274 @@ + 31) { + return null; + } + + $base = new DateTime($billingYearMonth . '-01'); + + if ($monthOffset !== 0) { + $base->modify(($monthOffset > 0 ? '+' : '') . $monthOffset . ' month'); + } + + $lastDay = (int)$base->format('t'); + $realDay = min($day, $lastDay); + + $base->setDate( + (int)$base->format('Y'), + (int)$base->format('m'), + $realDay + ); + + return $base; +} + +function account_has_statement_period(array $account): bool +{ + return isset( + $account['statement_start_month_offset'], + $account['statement_start_day'], + $account['statement_end_month_offset'], + $account['statement_end_day'] + ) + && $account['statement_start_month_offset'] !== null + && $account['statement_start_day'] !== null + && $account['statement_end_month_offset'] !== null + && $account['statement_end_day'] !== null + && (int)$account['statement_start_day'] >= 1 + && (int)$account['statement_start_day'] <= 31 + && (int)$account['statement_end_day'] >= 1 + && (int)$account['statement_end_day'] <= 31; +} + +function transaction_date_in_card_statement_month(array $account, string $transactionDate, string $billingYearMonth): bool +{ + $txTs = safe_date_ts($transactionDate); + if ($txTs === null) { + return false; + } + + if (!account_has_statement_period($account)) { + return false; + } + + $start = card_month_day_date( + $billingYearMonth, + (int)$account['statement_start_month_offset'], + (int)$account['statement_start_day'] + ); + + $end = card_month_day_date( + $billingYearMonth, + (int)$account['statement_end_month_offset'], + (int)$account['statement_end_day'] + ); + + if (!$start || !$end) { + return false; + } + + $tx = new DateTime(date('Y-m-d', $txTs)); + + return $tx >= $start && $tx <= $end; +} + +function get_card_billing_year_month_by_statement_period(array $account, string $transactionDate): ?string +{ + $txTs = safe_date_ts($transactionDate); + if ($txTs === null) { + return null; + } + + if (!account_has_statement_period($account)) { + return null; + } + + $tx = new DateTime(date('Y-m-d', $txTs)); + + /* + * 청구월 기준 사용기간 예: + * 2026-05 청구월 = 2026-04-11 ~ 2026-05-10 + * + * 거래일 주변의 청구월만 검사하면 됨. + * 전월/당월/익월/익익월까지 여유 있게 검사. + */ + $base = new DateTime($tx->format('Y-m-01')); + + for ($i = -1; $i <= 2; $i++) { + $candidate = clone $base; + if ($i !== 0) { + $candidate->modify(($i > 0 ? '+' : '') . $i . ' month'); + } + + $candidateYm = $candidate->format('Y-m'); + + if (transaction_date_in_card_statement_month($account, $transactionDate, $candidateYm)) { + return $candidateYm; + } + } + + return null; +} + +function get_card_billing_year_month(array $account, string $transactionDate): ?string +{ + if (($account['account_type'] ?? '') !== 'card') { + return null; + } + + $ts = safe_date_ts($transactionDate); + if ($ts === null) { + return null; + } + + $cardKind = normalize_card_kind($account); + + // 체크카드는 즉시형으로 보고 거래월 그대로 + if ($cardKind === 'check') { + return date('Y-m', $ts); + } + + // 신용카드인데 신용공여기간 계산을 안 쓰면 거래월 그대로 + if (empty($account['use_credit_grace_period'])) { + return date('Y-m', $ts); + } + + // 신규 방식: 카드사별 실제 사용기간 설정 우선 + $statementYm = get_card_billing_year_month_by_statement_period($account, $transactionDate); + if ($statementYm !== null) { + return $statementYm; + } + + // fallback: 기존 billing_day 단순 방식 + $billingDay = (int)($account['billing_day'] ?? 0); + if ($billingDay <= 0 || $billingDay > 31) { + return date('Y-m', $ts); + } + + $dt = new DateTime(date('Y-m-d', $ts)); + $day = (int)$dt->format('d'); + + if ($day <= $billingDay) { + return $dt->format('Y-m'); + } + + $dt->modify('first day of next month'); + return $dt->format('Y-m'); +} + +function get_card_payment_date(array $account, string $billingYearMonth): ?string +{ + if (($account['account_type'] ?? '') !== 'card') { + return null; + } + + if (!preg_match('/^\d{4}-\d{2}$/', $billingYearMonth)) { + return null; + } + + $paymentDay = (int)($account['payment_day'] ?? 0); + if ($paymentDay <= 0 || $paymentDay > 31) { + return null; + } + + [$year, $month] = explode('-', $billingYearMonth); + $year = (int)$year; + $month = (int)$month; + + $firstDay = new DateTime(sprintf('%04d-%02d-01', $year, $month)); + $lastDay = (int)$firstDay->format('t'); + $day = min($paymentDay, $lastDay); + + $firstDay->setDate($year, $month, $day); + return $firstDay->format('Y-m-d'); +} + +function get_card_statement_period_label(array $account): ?string +{ + if (!account_has_statement_period($account)) { + return null; + } + + $startOffset = (int)$account['statement_start_month_offset']; + $startDay = (int)$account['statement_start_day']; + $endOffset = (int)$account['statement_end_month_offset']; + $endDay = (int)$account['statement_end_day']; + + $monthText = function (int $offset): string { + if ($offset === -2) return '전전월'; + if ($offset === -1) return '전월'; + if ($offset === 0) return '당월'; + if ($offset === 1) return '익월'; + if ($offset === 2) return '익익월'; + return $offset . '개월'; + }; + + return $monthText($startOffset) . ' ' . $startDay . '일 ~ ' . + $monthText($endOffset) . ' ' . $endDay . '일 사용분'; +} + +function get_card_billing_label(array $account): string +{ + if (($account['account_type'] ?? '') !== 'card') { + return '-'; + } + + $cardKind = normalize_card_kind($account); + + if ($cardKind === 'check') { + return '체크카드 · 즉시출금'; + } + + if ($cardKind === 'credit') { + $paymentDay = (int)($account['payment_day'] ?? 0); + + if (!empty($account['billing_cycle_memo'])) { + return (string)$account['billing_cycle_memo']; + } + + $periodLabel = get_card_statement_period_label($account); + if ($periodLabel !== null && $paymentDay > 0) { + return '신용카드 · ' . $periodLabel . ' / 납부일 ' . $paymentDay . '일'; + } + + if ($periodLabel !== null) { + return '신용카드 · ' . $periodLabel; + } + + $billingDay = (int)($account['billing_day'] ?? 0); + if ($billingDay > 0 && $paymentDay > 0) { + return '신용카드 · 결제기준일 ' . $billingDay . '일 / 납부일 ' . $paymentDay . '일'; + } + + return '신용카드'; + } + + return '카드'; +} \ No newline at end of file diff --git a/app/lib/db.php b/app/lib/db.php new file mode 100644 index 0000000..07bbd66 --- /dev/null +++ b/app/lib/db.php @@ -0,0 +1,32 @@ + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + ] + ); + + return $pdo; +} \ No newline at end of file diff --git a/app/lib/helpers.php b/app/lib/helpers.php new file mode 100644 index 0000000..c78e507 --- /dev/null +++ b/app/lib/helpers.php @@ -0,0 +1,98 @@ + $type, + 'message' => $message, + ]; +} + +function get_flash_message(): ?array +{ + if (session_status() === PHP_SESSION_NONE) { + session_start(); + } + + if (empty($_SESSION['flash_message'])) { + return null; + } + + $flash = $_SESSION['flash_message']; + unset($_SESSION['flash_message']); + return $flash; +} \ No newline at end of file diff --git a/app/lib/installment_service.php b/app/lib/installment_service.php new file mode 100644 index 0000000..0d12004 --- /dev/null +++ b/app/lib/installment_service.php @@ -0,0 +1,704 @@ + 0) { + $amounts[$months - 1] += $remainder; + } + + return $amounts; +} + +function calculate_installment_interest_total( + float $principalAmount, + int $installmentMonths, + float $annualInterestRate +): float { + if ($installmentMonths <= 1 || $annualInterestRate <= 0) { + return 0.0; + } + + $principalAmount = floor($principalAmount); + $monthlyRate = ($annualInterestRate / 100.0) / 12.0; + + $averageOutstanding = $principalAmount / 2.0; + $interestTotal = $averageOutstanding * $monthlyRate * $installmentMonths; + + // 원화 기준 버림 + return (float)floor($interestTotal); +} + +function create_installment_schedule( + int $userId, + int $transactionId, + int $accountId, + float $principalAmount, + int $installmentMonths, + string $transactionDate, + float $annualInterestRate = 0.0, + ?float $interestTotal = null, + ?float $totalBilledAmount = null, + string $interestType = 'none' +): void { + $pdo = db(); + + if ($installmentMonths <= 1) { + return; + } + + // 원화 기준 + $principalAmount = (float)floor($principalAmount); + $annualInterestRate = round($annualInterestRate, 4); + + if ($interestTotal === null) { + $interestTotal = calculate_installment_interest_total( + $principalAmount, + $installmentMonths, + $annualInterestRate + ); + } + + $interestTotal = (float)floor($interestTotal); + + if ($totalBilledAmount === null) { + $totalBilledAmount = $principalAmount + $interestTotal; + } + + $totalBilledAmount = (float)floor($totalBilledAmount); + + if ($totalBilledAmount < $principalAmount) { + throw new RuntimeException('총 청구금액은 원금보다 작을 수 없습니다.'); + } + + if (($principalAmount + $interestTotal) !== $totalBilledAmount) { + throw new RuntimeException('원금 + 총이자와 총 청구금액이 일치해야 합니다.'); + } + + $pdo->beginTransaction(); + + try { + $stmtAcc = $pdo->prepare(" + SELECT * + FROM accounts + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmtAcc->execute([$accountId, $userId]); + $account = $stmtAcc->fetch(); + + /* + * 핵심: + * 1회차 시작월은 거래월이 아니라 + * 카드사 신용공여기간 계산 결과인 billing_year_month 기준. + * + * 예: + * 2026-04-24 사용 + 우리카드 25일 결제 + * => startYm = 2026-05 + * => 1회차 2026-05 + */ + $startYm = null; + + if ($account) { + $startYm = get_card_billing_year_month($account, $transactionDate); + } + + if (!$startYm) { + $startYm = date('Y-m', strtotime($transactionDate)); + } + + $principalParts = split_amount_evenly($principalAmount, $installmentMonths); + $interestParts = split_amount_evenly($interestTotal, $installmentMonths); + + $stmt = $pdo->prepare(" + INSERT INTO installments + ( + user_id, + transaction_id, + account_id, + principal_amount, + interest_total, + total_billed_amount, + installment_months, + annual_interest_rate, + start_year_month, + interest_type, + current_cycle, + is_completed, + prepaid_principal_amount, + prepaid_interest_amount + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, 0, 0, 0) + "); + + $stmt->execute([ + $userId, + $transactionId, + $accountId, + $principalAmount, + $interestTotal, + $totalBilledAmount, + $installmentMonths, + $annualInterestRate, + $startYm, + $annualInterestRate > 0 ? $interestType : 'none' + ]); + + $installmentId = (int)$pdo->lastInsertId(); + + $stmt = $pdo->prepare(" + INSERT INTO installment_schedules + ( + installment_id, + cycle_no, + bill_year_month, + principal_amount, + interest_amount, + total_amount, + is_billed, + billed_at + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + "); + + $currentYm = date('Y-m'); + + for ($i = 1; $i <= $installmentMonths; $i++) { + $ym = date('Y-m', strtotime($startYm . '-01 +' . ($i - 1) . ' month')); + + $principalPart = (float)$principalParts[$i - 1]; + $interestPart = (float)$interestParts[$i - 1]; + $totalPart = $principalPart + $interestPart; + + // 과거 청구월은 자동 청구완료 + $isBilled = ($ym < $currentYm) ? 1 : 0; + $billedAt = $isBilled ? date('Y-m-d H:i:s') : null; + + $stmt->execute([ + $installmentId, + $i, + $ym, + $principalPart, + $interestPart, + $totalPart, + $isBilled, + $billedAt + ]); + } + + recalculate_installment_status($installmentId); + + $pdo->commit(); + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function delete_installment_by_transaction_id(int $transactionId): void +{ + $pdo = db(); + $stmt = $pdo->prepare("DELETE FROM installments WHERE transaction_id = ?"); + $stmt->execute([$transactionId]); +} + +function get_installment_due_this_month(int $userId, string $yearMonth): float +{ + $pdo = db(); + + $stmt = $pdo->prepare(" + SELECT COALESCE(SUM(s.total_amount), 0) AS total_due + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + WHERE i.user_id = ? + AND s.bill_year_month = ? + AND s.is_billed = 0 + "); + $stmt->execute([$userId, $yearMonth]); + $row = $stmt->fetch(); + + return (float)($row['total_due'] ?? 0); +} + +function get_installment_remaining_principal(int $userId): float +{ + $pdo = db(); + + $stmt = $pdo->prepare(" + SELECT COALESCE(SUM(s.principal_amount), 0) AS total_principal + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + WHERE i.user_id = ? + AND s.is_billed = 0 + "); + $stmt->execute([$userId]); + $row = $stmt->fetch(); + + return (float)($row['total_principal'] ?? 0); +} + +function get_installment_remaining_interest(int $userId): float +{ + $pdo = db(); + + $stmt = $pdo->prepare(" + SELECT COALESCE(SUM(s.interest_amount), 0) AS total_interest + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + WHERE i.user_id = ? + AND s.is_billed = 0 + "); + $stmt->execute([$userId]); + $row = $stmt->fetch(); + + return (float)($row['total_interest'] ?? 0); +} + +function get_installment_remaining_total(int $userId): float +{ + $pdo = db(); + + $stmt = $pdo->prepare(" + SELECT COALESCE(SUM(s.total_amount), 0) AS remaining_total + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + WHERE i.user_id = ? + AND s.is_billed = 0 + "); + $stmt->execute([$userId]); + $row = $stmt->fetch(); + + return (float)($row['remaining_total'] ?? 0); +} + +function recalculate_installment_status(int $installmentId): void +{ + $pdo = db(); + + $stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(CASE WHEN is_billed = 0 THEN 1 ELSE 0 END), 0) AS remaining_count, + COALESCE(MIN(CASE WHEN is_billed = 0 THEN cycle_no ELSE NULL END), 0) AS next_cycle + FROM installment_schedules + WHERE installment_id = ? + "); + $stmt->execute([$installmentId]); + $row = $stmt->fetch(); + + $remainingCount = (int)($row['remaining_count'] ?? 0); + $nextCycle = (int)($row['next_cycle'] ?? 0); + + $stmt = $pdo->prepare(" + UPDATE installments + SET + current_cycle = ?, + is_completed = ? + WHERE id = ? + "); + $stmt->execute([ + $nextCycle > 0 ? $nextCycle : 0, + $remainingCount === 0 ? 1 : 0, + $installmentId + ]); +} + +function mark_installment_month_billed_for_card_payment( + int $userId, + int $cardAccountId, + string $yearMonth +): int { + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT s.id, s.installment_id + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + WHERE i.user_id = ? + AND i.account_id = ? + AND s.bill_year_month = ? + AND s.is_billed = 0 + ORDER BY s.id ASC + "); + $stmt->execute([$userId, $cardAccountId, $yearMonth]); + $rows = $stmt->fetchAll(); + + if (!$rows) { + $pdo->commit(); + return 0; + } + + $scheduleIds = array_column($rows, 'id'); + $installmentIds = array_values(array_unique(array_map( + fn($r) => (int)$r['installment_id'], + $rows + ))); + + $placeholders = implode(',', array_fill(0, count($scheduleIds), '?')); + + $stmt = $pdo->prepare(" + UPDATE installment_schedules + SET is_billed = 1, + billed_at = NOW() + WHERE id IN ($placeholders) + "); + $stmt->execute($scheduleIds); + + foreach ($installmentIds as $installmentId) { + recalculate_installment_status($installmentId); + } + + $pdo->commit(); + return count($scheduleIds); + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function prepay_installment( + int $userId, + int $installmentId, + int $paymentAccountId, + string $prepayDate, + float $prepayPrincipalAmount, + float $prepayInterestAmount = 0.0, + ?string $description = null, + ?int $targetScheduleId = null +): void { + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT i.*, t.merchant_name + FROM installments i + JOIN transactions t ON t.id = i.transaction_id + WHERE i.id = ? + AND i.user_id = ? + "); + $stmt->execute([$installmentId, $userId]); + $installment = $stmt->fetch(); + + if (!$installment) { + throw new RuntimeException('할부 정보를 찾을 수 없습니다.'); + } + + $prepayPrincipalAmount = (float)floor($prepayPrincipalAmount); + $prepayInterestAmount = (float)floor($prepayInterestAmount); + + if ($prepayPrincipalAmount <= 0 && $prepayInterestAmount <= 0) { + throw new RuntimeException('선결제 금액이 0보다 커야 합니다.'); + } + + $sql = " + SELECT id, principal_amount, interest_amount, total_amount + FROM installment_schedules + WHERE installment_id = ? + AND is_billed = 0 + "; + + $params = [$installmentId]; + + if ($targetScheduleId !== null && $targetScheduleId > 0) { + $sql .= " AND id = ? "; + $params[] = $targetScheduleId; + } + + $sql .= " ORDER BY cycle_no ASC "; + + $stmt = $pdo->prepare($sql); + $stmt->execute($params); + $remainingSchedules = $stmt->fetchAll(); + + if (!$remainingSchedules) { + throw new RuntimeException('남아있는 회차가 없습니다.'); + } + + $remainingPrincipal = (float)floor(array_sum(array_map( + fn($r) => (float)$r['principal_amount'], + $remainingSchedules + ))); + + $remainingInterest = (float)floor(array_sum(array_map( + fn($r) => (float)$r['interest_amount'], + $remainingSchedules + ))); + + // 초과 입력 시 남은 금액까지만 자동 보정 + if ($prepayPrincipalAmount > $remainingPrincipal) { + $prepayPrincipalAmount = $remainingPrincipal; + } + + if ($prepayInterestAmount > $remainingInterest) { + $prepayInterestAmount = $remainingInterest; + } + + if ($prepayPrincipalAmount <= 0 && $prepayInterestAmount <= 0) { + throw new RuntimeException('남아있는 선결제 가능 금액이 없습니다.'); + } + + $remainingPrincipalToApply = $prepayPrincipalAmount; + $remainingInterestToApply = $prepayInterestAmount; + + foreach ($remainingSchedules as $schedule) { + $scheduleId = (int)$schedule['id']; + $principal = (float)$schedule['principal_amount']; + $interest = (float)$schedule['interest_amount']; + + $newPrincipal = $principal; + $newInterest = $interest; + + if ($remainingPrincipalToApply > 0) { + $deduct = min($newPrincipal, $remainingPrincipalToApply); + $newPrincipal = $newPrincipal - $deduct; + $remainingPrincipalToApply = $remainingPrincipalToApply - $deduct; + } + + if ($remainingInterestToApply > 0) { + $deduct = min($newInterest, $remainingInterestToApply); + $newInterest = $newInterest - $deduct; + $remainingInterestToApply = $remainingInterestToApply - $deduct; + } + + $newPrincipal = (float)max(0, floor($newPrincipal)); + $newInterest = (float)max(0, floor($newInterest)); + $newTotal = $newPrincipal + $newInterest; + + $isNowZero = ($newTotal <= 0) ? 1 : 0; + + $stmt2 = $pdo->prepare(" + UPDATE installment_schedules + SET principal_amount = ?, + interest_amount = ?, + total_amount = ?, + is_billed = CASE WHEN ? = 1 THEN 1 ELSE is_billed END, + billed_at = CASE WHEN ? = 1 THEN NOW() ELSE billed_at END + WHERE id = ? + "); + + $stmt2->execute([ + $newPrincipal, + $newInterest, + $newTotal, + $isNowZero, + $isNowZero, + $scheduleId + ]); + } + + $totalAmount = $prepayPrincipalAmount + $prepayInterestAmount; + + $stmt = $pdo->prepare(" + INSERT INTO installment_prepayments + ( + user_id, + installment_id, + account_id, + prepay_date, + principal_amount, + interest_amount, + total_amount, + description + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + "); + $stmt->execute([ + $userId, + $installmentId, + $paymentAccountId, + $prepayDate, + $prepayPrincipalAmount, + $prepayInterestAmount, + $totalAmount, + $description + ]); + + $stmt = $pdo->prepare(" + UPDATE installments + SET + prepaid_principal_amount = prepaid_principal_amount + ?, + prepaid_interest_amount = prepaid_interest_amount + ? + WHERE id = ? + "); + $stmt->execute([ + $prepayPrincipalAmount, + $prepayInterestAmount, + $installmentId + ]); + + recalculate_installment_status($installmentId); + + $stmt = $pdo->prepare(" + INSERT INTO transactions + ( + user_id, + account_id, + category_id, + transaction_type, + amount, + is_installment, + installment_months, + installment_interest_rate, + installment_interest_total, + installment_total_billed, + installment_prepay_amount, + transaction_date, + merchant_name, + description, + related_account_id, + fingerprint + ) + VALUES (?, ?, ?, 'expense', ?, 0, NULL, 0, 0, NULL, ?, ?, ?, ?, NULL, ?) + "); + + $desc = $description ?: '할부 선결제/중도상환'; + + $fingerprint = hash('sha256', implode('|', [ + $userId, + $paymentAccountId, + 'installment_prepay', + $installmentId, + $prepayDate, + number_format($totalAmount, 2, '.', ''), + $desc + ])); + + $stmtCat = $pdo->prepare(" + SELECT id + FROM categories + WHERE user_id = ? + AND category_type = 'expense' + AND name = '기타지출' + LIMIT 1 + "); + $stmtCat->execute([$userId]); + $category = $stmtCat->fetch(); + + if (!$category) { + throw new RuntimeException('선결제 기록용 expense 카테고리(기타지출)를 찾을 수 없습니다.'); + } + + $stmt->execute([ + $userId, + $paymentAccountId, + (int)$category['id'], + $totalAmount, + $totalAmount, + $prepayDate, + $installment['merchant_name'], + '[할부 선결제] ' . $desc, + $fingerprint + ]); + + $pdo->commit(); + + recalculate_account_balance($paymentAccountId); + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function rebuild_all_installments_for_user(int $userId): int +{ + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT + id, + account_id, + amount, + transaction_date, + installment_months, + installment_interest_rate, + installment_interest_total, + installment_total_billed + FROM transactions + WHERE user_id = ? + AND transaction_type = 'expense' + AND is_installment = 1 + AND installment_months > 1 + ORDER BY transaction_date ASC, id ASC + "); + $stmt->execute([$userId]); + $rows = $stmt->fetchAll(); + + $stmt = $pdo->prepare(" + DELETE ip + FROM installment_prepayments ip + JOIN installments i ON i.id = ip.installment_id + WHERE i.user_id = ? + "); + $stmt->execute([$userId]); + + $stmt = $pdo->prepare(" + DELETE s + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + WHERE i.user_id = ? + "); + $stmt->execute([$userId]); + + $stmt = $pdo->prepare(" + DELETE FROM installments + WHERE user_id = ? + "); + $stmt->execute([$userId]); + + $pdo->commit(); + + $count = 0; + + foreach ($rows as $row) { + create_installment_schedule( + $userId, + (int)$row['id'], + (int)$row['account_id'], + (float)$row['amount'], + (int)$row['installment_months'], + (string)$row['transaction_date'], + (float)($row['installment_interest_rate'] ?? 0), + $row['installment_interest_total'] !== null + ? (float)$row['installment_interest_total'] + : null, + $row['installment_total_billed'] !== null + ? (float)$row['installment_total_billed'] + : null, + ((float)($row['installment_interest_rate'] ?? 0) > 0) + ? 'fixed_total' + : 'none' + ); + + $count++; + } + + return $count; + } catch (Throwable $e) { + if ($pdo->inTransaction()) { + $pdo->rollBack(); + } + + throw $e; + } +} \ No newline at end of file diff --git a/app/lib/loan_service.php b/app/lib/loan_service.php new file mode 100644 index 0000000..591b5c5 --- /dev/null +++ b/app/lib/loan_service.php @@ -0,0 +1,1154 @@ +modify('first day of this month'); + + if ($months > 0) { + $base->modify('+' . $months . ' month'); + } + + $lastDay = (int)$base->format('t'); + $day = min($paymentDay, $lastDay); + $base->setDate((int)$base->format('Y'), (int)$base->format('m'), $day); + + return $base->format('Y-m-d'); +} + +function monthly_rate(float $annualRate): float +{ + return ($annualRate / 100.0) / 12.0; +} + +function calc_equal_payment_monthly_amount(float $principal, float $annualRate, int $months): float +{ + if ($months <= 0) { + return 0; + } + + $r = monthly_rate($annualRate); + + if ($r <= 0) { + return round($principal / $months, 2); + } + + $payment = $principal * ($r * pow(1 + $r, $months)) / (pow(1 + $r, $months) - 1); + return round($payment, 2); +} + +function build_loan_schedule_rows( + float $principal, + float $annualRate, + string $startDate, + int $graceMonths, + int $repaymentMonths, + string $repaymentMethod, + int $paymentDay +): array { + $rows = []; + $balance = round($principal, 2); + $cycleNo = 1; + $firstDueOffset = 1; + + for ($i = 0; $i < $graceMonths; $i++) { + $dueDate = add_months_keep_day($startDate, $i + $firstDueOffset, $paymentDay); + $interest = round($balance * monthly_rate($annualRate), 2); + + $rows[] = [ + 'cycle_no' => $cycleNo++, + 'due_date' => $dueDate, + 'opening_principal' => $balance, + 'scheduled_principal' => 0.00, + 'scheduled_interest' => $interest, + 'scheduled_total' => round($interest, 2), + 'closing_principal' => $balance, + 'payment_phase' => 'grace', + ]; + } + + $repaymentStartOffset = $graceMonths + $firstDueOffset; + + if ($repaymentMethod === 'interest_only_then_equal_payment' || $repaymentMethod === 'equal_payment') { + $monthlyPayment = calc_equal_payment_monthly_amount($balance, $annualRate, $repaymentMonths); + + for ($i = 0; $i < $repaymentMonths; $i++) { + $dueDate = add_months_keep_day($startDate, $repaymentStartOffset + $i, $paymentDay); + $opening = $balance; + $interest = round($opening * monthly_rate($annualRate), 2); + $principalPart = round($monthlyPayment - $interest, 2); + + if ($i === $repaymentMonths - 1 || $principalPart > $balance) { + $principalPart = $balance; + } + + $total = round($principalPart + $interest, 2); + $balance = round($balance - $principalPart, 2); + + $rows[] = [ + 'cycle_no' => $cycleNo++, + 'due_date' => $dueDate, + 'opening_principal' => $opening, + 'scheduled_principal' => $principalPart, + 'scheduled_interest' => $interest, + 'scheduled_total' => $total, + 'closing_principal' => $balance, + 'payment_phase' => 'repayment', + ]; + } + } elseif ($repaymentMethod === 'interest_only_then_equal_principal' || $repaymentMethod === 'equal_principal') { + $principalBase = round($balance / $repaymentMonths, 2); + + for ($i = 0; $i < $repaymentMonths; $i++) { + $dueDate = add_months_keep_day($startDate, $repaymentStartOffset + $i, $paymentDay); + $opening = $balance; + $interest = round($opening * monthly_rate($annualRate), 2); + + $principalPart = $principalBase; + if ($i === $repaymentMonths - 1 || $principalPart > $balance) { + $principalPart = $balance; + } + + $total = round($principalPart + $interest, 2); + $balance = round($balance - $principalPart, 2); + + $rows[] = [ + 'cycle_no' => $cycleNo++, + 'due_date' => $dueDate, + 'opening_principal' => $opening, + 'scheduled_principal' => $principalPart, + 'scheduled_interest' => $interest, + 'scheduled_total' => $total, + 'closing_principal' => $balance, + 'payment_phase' => 'repayment', + ]; + } + } elseif ($repaymentMethod === 'interest_only_then_bullet' || $repaymentMethod === 'bullet') { + for ($i = 0; $i < $repaymentMonths; $i++) { + $dueDate = add_months_keep_day($startDate, $repaymentStartOffset + $i, $paymentDay); + $opening = $balance; + $interest = round($opening * monthly_rate($annualRate), 2); + + $principalPart = 0.00; + if ($i === $repaymentMonths - 1) { + $principalPart = $balance; + } + + $total = round($principalPart + $interest, 2); + $balance = round($balance - $principalPart, 2); + + $rows[] = [ + 'cycle_no' => $cycleNo++, + 'due_date' => $dueDate, + 'opening_principal' => $opening, + 'scheduled_principal' => $principalPart, + 'scheduled_interest' => $interest, + 'scheduled_total' => $total, + 'closing_principal' => $balance, + 'payment_phase' => 'repayment', + ]; + } + } else { + throw new RuntimeException('지원하지 않는 상환 방식입니다.'); + } + + return $rows; +} + +function get_category_id_by_name(int $userId, string $categoryType, string $name): ?int +{ + $pdo = db(); + + $stmt = $pdo->prepare(" + SELECT id + FROM categories + WHERE user_id = ? + AND category_type = ? + AND name = ? + LIMIT 1 + "); + $stmt->execute([$userId, $categoryType, $name]); + $row = $stmt->fetch(); + + return $row ? (int)$row['id'] : null; +} + +function build_tx_fingerprint( + int $userId, + int $accountId, + ?int $relatedAccountId, + int $categoryId, + string $transactionType, + float $amount, + string $transactionDate, + ?string $merchantName, + ?string $description, + ?int $sourceLoanId = null +): string { + $raw = implode('|', [ + $userId, + $accountId, + $relatedAccountId ?? 0, + $categoryId, + $transactionType, + number_format($amount, 2, '.', ''), + $transactionDate, + trim((string)$merchantName), + trim((string)$description), + $sourceLoanId ?? 0, + ]); + + return hash('sha256', $raw); +} + +function insert_transaction_row(array $data): int +{ + $pdo = db(); + + $sourceLoanId = !empty($data['source_loan_id']) ? (int)$data['source_loan_id'] : null; + + $fingerprint = build_tx_fingerprint( + (int)$data['user_id'], + (int)$data['account_id'], + !empty($data['related_account_id']) ? (int)$data['related_account_id'] : null, + (int)$data['category_id'], + (string)$data['transaction_type'], + (float)$data['amount'], + (string)$data['transaction_date'], + $data['merchant_name'] ?? null, + $data['description'] ?? null, + $sourceLoanId + ); + + $stmt = $pdo->prepare(" + SELECT id + FROM transactions + WHERE user_id = ? + AND fingerprint = ? + LIMIT 1 + "); + $stmt->execute([ + $data['user_id'], + $fingerprint + ]); + $exists = $stmt->fetch(); + + if ($exists) { + return (int)$exists['id']; + } + + $stmt = $pdo->prepare(" + INSERT INTO transactions + ( + user_id, + account_id, + category_id, + transaction_type, + amount, + is_installment, + installment_months, + installment_interest_rate, + installment_interest_total, + installment_total_billed, + installment_prepay_amount, + transaction_date, + merchant_name, + description, + related_account_id, + source_loan_id, + fingerprint + ) + VALUES (?, ?, ?, ?, ?, 0, NULL, 0, 0, NULL, 0, ?, ?, ?, ?, ?, ?) + "); + + $stmt->execute([ + $data['user_id'], + $data['account_id'], + $data['category_id'], + $data['transaction_type'], + $data['amount'], + $data['transaction_date'], + $data['merchant_name'], + $data['description'], + $data['related_account_id'], + $sourceLoanId, + $fingerprint, + ]); + + return (int)$pdo->lastInsertId(); +} + +function create_loan_schedule_only( + int $loanId, + float $principalAmount, + float $annualInterestRate, + string $startDate, + int $graceMonths, + int $repaymentMonths, + string $repaymentMethod, + int $paymentDay +): void { + $pdo = db(); + + $rows = build_loan_schedule_rows( + $principalAmount, + $annualInterestRate, + $startDate, + $graceMonths, + $repaymentMonths, + $repaymentMethod, + $paymentDay + ); + + $stmt = $pdo->prepare(" + INSERT INTO loan_schedules + ( + loan_id, cycle_no, due_date, + opening_principal, scheduled_principal, scheduled_interest, scheduled_total, + closing_principal, payment_phase, is_paid, paid_at + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0, NULL) + "); + + foreach ($rows as $row) { + $stmt->execute([ + $loanId, + $row['cycle_no'], + $row['due_date'], + $row['opening_principal'], + $row['scheduled_principal'], + $row['scheduled_interest'], + $row['scheduled_total'], + $row['closing_principal'], + $row['payment_phase'], + ]); + } +} + +function create_loan_with_schedule(array $data): int +{ + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + INSERT INTO loans + ( + user_id, account_id, loan_name, lender_name, + principal_amount, annual_interest_rate, + start_date, maturity_date, + grace_period_months, repayment_months, repayment_method, + payment_day, current_principal_balance, status, description + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'active', ?) + "); + + $stmt->execute([ + $data['user_id'], + $data['account_id'] ?: null, + $data['loan_name'], + $data['lender_name'] ?: null, + $data['principal_amount'], + $data['annual_interest_rate'], + $data['start_date'], + $data['maturity_date'] ?: null, + $data['grace_period_months'], + $data['repayment_months'], + $data['repayment_method'], + $data['payment_day'], + $data['principal_amount'], + $data['description'] ?: null, + ]); + + $loanId = (int)$pdo->lastInsertId(); + + create_loan_schedule_only( + $loanId, + (float)$data['principal_amount'], + (float)$data['annual_interest_rate'], + (string)$data['start_date'], + (int)$data['grace_period_months'], + (int)$data['repayment_months'], + (string)$data['repayment_method'], + (int)$data['payment_day'] + ); + + $pdo->commit(); + return $loanId; + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function backfill_loan_transactions_and_mark_paid( + int $userId, + int $loanId, + ?int $accountId, + string $todayDate +): void { + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT * + FROM loans + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmt->execute([$loanId, $userId]); + $loan = $stmt->fetch(); + + if (!$loan) { + throw new RuntimeException('대출 정보를 찾을 수 없습니다.'); + } + + if (empty($accountId)) { + throw new RuntimeException('과거 거래 일괄 생성에는 입출금 계좌가 필요합니다.'); + } + + $incomeCategoryId = get_category_id_by_name($userId, 'income', '대출금'); + if (!$incomeCategoryId) { + throw new RuntimeException('income 카테고리 "대출금"이 없습니다.'); + } + + $expenseCategoryId = get_category_id_by_name($userId, 'expense', '대출상환'); + if (!$expenseCategoryId) { + throw new RuntimeException('expense 카테고리 "대출상환"이 없습니다.'); + } + + insert_transaction_row([ + 'user_id' => $userId, + 'account_id' => $accountId, + 'category_id' => $incomeCategoryId, + 'transaction_type' => 'income', + 'amount' => (float)$loan['principal_amount'], + 'transaction_date' => $loan['start_date'], + 'merchant_name' => $loan['loan_name'], + 'description' => '[대출실행] ' . ($loan['lender_name'] ?: $loan['loan_name']), + 'related_account_id' => null, + 'source_loan_id' => $loanId, + ]); + + $stmt = $pdo->prepare(" + SELECT * + FROM loan_schedules + WHERE loan_id = ? + AND due_date <= ? + ORDER BY due_date ASC, cycle_no ASC + "); + $stmt->execute([$loanId, $todayDate]); + $pastSchedules = $stmt->fetchAll(); + + foreach ($pastSchedules as $schedule) { + if ((int)$schedule['is_paid'] === 1) { + continue; + } + + $principal = (float)$schedule['scheduled_principal']; + $interest = (float)$schedule['scheduled_interest']; + $total = (float)$schedule['scheduled_total']; + + $stmt2 = $pdo->prepare(" + INSERT INTO loan_payments + ( + user_id, loan_id, loan_schedule_id, account_id, + payment_date, principal_amount, interest_amount, fee_amount, + total_amount, payment_type, is_auto_generated, description + ) + VALUES (?, ?, ?, ?, ?, ?, ?, 0, ?, 'scheduled', 1, ?) + "); + $stmt2->execute([ + $userId, + $loanId, + $schedule['id'], + $accountId, + $schedule['due_date'], + $principal, + $interest, + $total, + '[자동반영] 대출 상환 회차 ' . $schedule['cycle_no'], + ]); + + insert_transaction_row([ + 'user_id' => $userId, + 'account_id' => $accountId, + 'category_id' => $expenseCategoryId, + 'transaction_type' => 'expense', + 'amount' => $total, + 'transaction_date' => $schedule['due_date'], + 'merchant_name' => $loan['loan_name'], + 'description' => '[대출상환] 원금 ' . number_format($principal, 0) . ' / 이자 ' . number_format($interest, 0), + 'related_account_id' => null, + 'source_loan_id' => $loanId, + ]); + + $stmt2 = $pdo->prepare(" + UPDATE loan_schedules + SET is_paid = 1, paid_at = NOW() + WHERE id = ? + "); + $stmt2->execute([$schedule['id']]); + } + + $stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(CASE WHEN is_paid = 0 THEN scheduled_principal ELSE 0 END), 0) AS remaining_principal + FROM loan_schedules + WHERE loan_id = ? + "); + $stmt->execute([$loanId]); + $remaining = $stmt->fetch(); + + $remainingPrincipal = (float)($remaining['remaining_principal'] ?? 0); + + $stmt = $pdo->prepare(" + UPDATE loans + SET + current_principal_balance = ?, + status = CASE WHEN ? <= 0.009 THEN 'closed' ELSE 'active' END + WHERE id = ? + "); + $stmt->execute([$remainingPrincipal, $remainingPrincipal, $loanId]); + + $pdo->commit(); + recalculate_account_balance($accountId); + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function create_loan_with_full_backfill(array $data): int +{ + $loanId = create_loan_with_schedule($data); + + if (!empty($data['create_full_history'])) { + backfill_loan_transactions_and_mark_paid( + (int)$data['user_id'], + $loanId, + !empty($data['account_id']) ? (int)$data['account_id'] : null, + $data['today_date'] ?? date('Y-m-d') + ); + } + + return $loanId; +} + +function reset_loan_auto_history_and_reapply( + int $userId, + int $loanId, + string $todayDate +): void { + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT * + FROM loans + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmt->execute([$loanId, $userId]); + $loan = $stmt->fetch(); + + if (!$loan) { + throw new RuntimeException('대출 정보를 찾을 수 없습니다.'); + } + + if (empty($loan['account_id'])) { + throw new RuntimeException('연결된 입출금 계좌가 없어 자동반영 리셋을 할 수 없습니다.'); + } + + // 자동 생성 거래 삭제 + $stmt = $pdo->prepare(" + DELETE FROM transactions + WHERE user_id = ? + AND source_loan_id = ? + "); + $stmt->execute([$userId, $loanId]); + + // 자동반영 payment 삭제 + $stmt = $pdo->prepare(" + DELETE FROM loan_payments + WHERE user_id = ? + AND loan_id = ? + AND is_auto_generated = 1 + "); + $stmt->execute([$userId, $loanId]); + + // 스케줄 초기화 + $stmt = $pdo->prepare("DELETE FROM loan_schedules WHERE loan_id = ?"); + $stmt->execute([$loanId]); + + // 원금/상태 초기화 + $stmt = $pdo->prepare(" + UPDATE loans + SET + current_principal_balance = principal_amount, + status = 'active' + WHERE id = ? + "); + $stmt->execute([$loanId]); + + // 초기 스케줄 재생성 + create_loan_schedule_only( + $loanId, + (float)$loan['principal_amount'], + (float)$loan['annual_interest_rate'], + (string)$loan['start_date'], + (int)$loan['grace_period_months'], + (int)$loan['repayment_months'], + (string)$loan['repayment_method'], + (int)$loan['payment_day'] + ); + + $pdo->commit(); + + // 다시 자동반영 적용 + backfill_loan_transactions_and_mark_paid( + $userId, + $loanId, + (int)$loan['account_id'], + $todayDate + ); + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function get_loan_remaining_summary(int $loanId): array +{ + $pdo = db(); + + $stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(CASE WHEN is_paid = 0 THEN scheduled_principal ELSE 0 END), 0) AS remaining_principal, + COALESCE(SUM(CASE WHEN is_paid = 0 THEN scheduled_interest ELSE 0 END), 0) AS remaining_interest, + COALESCE(SUM(CASE WHEN is_paid = 0 THEN scheduled_total ELSE 0 END), 0) AS remaining_total + FROM loan_schedules + WHERE loan_id = ? + "); + $stmt->execute([$loanId]); + $row = $stmt->fetch(); + + return [ + 'remaining_principal' => (float)($row['remaining_principal'] ?? 0), + 'remaining_interest' => (float)($row['remaining_interest'] ?? 0), + 'remaining_total' => (float)($row['remaining_total'] ?? 0), + ]; +} + +function pay_loan_schedule( + int $userId, + int $loanScheduleId, + ?int $accountId, + string $paymentDate, + ?string $description = null +): void { + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT + ls.*, + l.user_id, + l.id AS loan_id, + l.loan_name + FROM loan_schedules ls + JOIN loans l ON l.id = ls.loan_id + WHERE ls.id = ? + AND l.user_id = ? + "); + $stmt->execute([$loanScheduleId, $userId]); + $schedule = $stmt->fetch(); + + if (!$schedule) { + throw new RuntimeException('상환 회차를 찾을 수 없습니다.'); + } + + if ((int)$schedule['is_paid'] === 1) { + throw new RuntimeException('이미 납부된 회차입니다.'); + } + + $principal = (float)$schedule['scheduled_principal']; + $interest = (float)$schedule['scheduled_interest']; + $total = (float)$schedule['scheduled_total']; + + $stmt = $pdo->prepare(" + INSERT INTO loan_payments + ( + user_id, loan_id, loan_schedule_id, account_id, + payment_date, principal_amount, interest_amount, fee_amount, + total_amount, payment_type, is_auto_generated, description + ) + VALUES (?, ?, ?, ?, ?, ?, ?, 0, ?, 'scheduled', 0, ?) + "); + $stmt->execute([ + $userId, + $schedule['loan_id'], + $loanScheduleId, + $accountId ?: null, + $paymentDate, + $principal, + $interest, + $total, + $description, + ]); + + if (!empty($accountId) && $total > 0) { + $expenseCategoryId = get_category_id_by_name($userId, 'expense', '대출상환'); + + if ($expenseCategoryId) { + insert_transaction_row([ + 'user_id' => $userId, + 'account_id' => $accountId, + 'category_id' => $expenseCategoryId, + 'transaction_type' => 'expense', + 'amount' => $total, + 'transaction_date' => $paymentDate, + 'merchant_name' => $schedule['loan_name'], + 'description' => '[대출상환] 원금 ' . + number_format($principal, 0) . + ' / 이자 ' . + number_format($interest, 0), + 'related_account_id' => null, + 'source_loan_id' => $schedule['loan_id'], + ]); + } + } + + $stmt = $pdo->prepare(" + UPDATE loan_schedules + SET is_paid = 1, paid_at = NOW() + WHERE id = ? + "); + $stmt->execute([$loanScheduleId]); + + $stmt = $pdo->prepare(" + UPDATE loans + SET current_principal_balance = GREATEST(current_principal_balance - ?, 0) + WHERE id = ? + "); + $stmt->execute([$principal, $schedule['loan_id']]); + + $stmt = $pdo->prepare(" + SELECT current_principal_balance + FROM loans + WHERE id = ? + "); + $stmt->execute([$schedule['loan_id']]); + $loan = $stmt->fetch(); + + if ($loan && (float)$loan['current_principal_balance'] <= 0.009) { + $stmt = $pdo->prepare("UPDATE loans SET status = 'closed' WHERE id = ?"); + $stmt->execute([$schedule['loan_id']]); + } + + $pdo->commit(); + + if (!empty($accountId)) { + recalculate_account_balance((int)$accountId); + } + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function rebuild_remaining_loan_schedules(int $loanId): void +{ + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT * + FROM loans + WHERE id = ? + LIMIT 1 + "); + $stmt->execute([$loanId]); + $loan = $stmt->fetch(); + + if (!$loan) { + throw new RuntimeException('대출 정보를 찾을 수 없습니다.'); + } + + $stmt = $pdo->prepare(" + SELECT * + FROM loan_schedules + WHERE loan_id = ? + AND is_paid = 0 + ORDER BY cycle_no ASC + "); + $stmt->execute([$loanId]); + $remaining = $stmt->fetchAll(); + + if (!$remaining) { + $stmt = $pdo->prepare("UPDATE loans SET status = 'closed', current_principal_balance = 0 WHERE id = ?"); + $stmt->execute([$loanId]); + $pdo->commit(); + return; + } + + $remainingMonths = count($remaining); + $firstUnpaid = $remaining[0]; + $newStartDate = $firstUnpaid['due_date']; + + if ($firstUnpaid['payment_phase'] === 'grace') { + $graceCount = 0; + foreach ($remaining as $r) { + if ($r['payment_phase'] === 'grace') { + $graceCount++; + } else { + break; + } + } + $graceMonths = $graceCount; + $repaymentMonths = $remainingMonths - $graceMonths; + } else { + $graceMonths = 0; + $repaymentMonths = $remainingMonths; + } + + $stmt = $pdo->prepare(" + DELETE FROM loan_schedules + WHERE loan_id = ? + AND is_paid = 0 + "); + $stmt->execute([$loanId]); + + $rows = build_loan_schedule_rows( + (float)$loan['current_principal_balance'], + (float)$loan['annual_interest_rate'], + $newStartDate, + $graceMonths, + $repaymentMonths, + (string)$loan['repayment_method'], + (int)$loan['payment_day'] + ); + + $maxPaidCycleStmt = $pdo->prepare(" + SELECT COALESCE(MAX(cycle_no), 0) AS max_cycle + FROM loan_schedules + WHERE loan_id = ? + AND is_paid = 1 + "); + $maxPaidCycleStmt->execute([$loanId]); + $maxPaidCycle = (int)($maxPaidCycleStmt->fetch()['max_cycle'] ?? 0); + + $stmt = $pdo->prepare(" + INSERT INTO loan_schedules + ( + loan_id, cycle_no, due_date, + opening_principal, scheduled_principal, scheduled_interest, scheduled_total, + closing_principal, payment_phase, is_paid, paid_at + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0, NULL) + "); + + foreach ($rows as $row) { + $stmt->execute([ + $loanId, + $maxPaidCycle + (int)$row['cycle_no'], + $row['due_date'], + $row['opening_principal'], + $row['scheduled_principal'], + $row['scheduled_interest'], + $row['scheduled_total'], + $row['closing_principal'], + $row['payment_phase'], + ]); + } + + $pdo->commit(); + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function prepay_loan( + int $userId, + int $loanId, + ?int $accountId, + string $paymentDate, + float $principalAmount, + float $interestAmount = 0.0, + float $feeAmount = 0.0, + ?string $description = null +): void { + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT * + FROM loans + WHERE id = ? + AND user_id = ? + "); + $stmt->execute([$loanId, $userId]); + $loan = $stmt->fetch(); + + if (!$loan) { + throw new RuntimeException('대출 정보를 찾을 수 없습니다.'); + } + + $principalAmount = round($principalAmount, 2); + $interestAmount = round($interestAmount, 2); + $feeAmount = round($feeAmount, 2); + + if ($principalAmount <= 0 && $interestAmount <= 0 && $feeAmount <= 0) { + throw new RuntimeException('중도상환 금액이 0보다 커야 합니다.'); + } + + if ($principalAmount > (float)$loan['current_principal_balance']) { + throw new RuntimeException('중도상환 원금이 남은 원금을 초과합니다.'); + } + + $totalAmount = round($principalAmount + $interestAmount + $feeAmount, 2); + + $stmt = $pdo->prepare(" + INSERT INTO loan_payments + ( + user_id, loan_id, loan_schedule_id, account_id, + payment_date, principal_amount, interest_amount, fee_amount, + total_amount, payment_type, is_auto_generated, description + ) + VALUES (?, ?, NULL, ?, ?, ?, ?, ?, ?, 'prepayment', 0, ?) + "); + $stmt->execute([ + $userId, + $loanId, + $accountId ?: null, + $paymentDate, + $principalAmount, + $interestAmount, + $feeAmount, + $totalAmount, + $description, + ]); + + if ($principalAmount > 0) { + $stmt = $pdo->prepare(" + UPDATE loans + SET current_principal_balance = GREATEST(current_principal_balance - ?, 0) + WHERE id = ? + "); + $stmt->execute([$principalAmount, $loanId]); + } + + $stmt = $pdo->prepare(" + SELECT current_principal_balance + FROM loans + WHERE id = ? + "); + $stmt->execute([$loanId]); + $updatedLoan = $stmt->fetch(); + + if ((float)$updatedLoan['current_principal_balance'] <= 0.009) { + $stmt = $pdo->prepare("UPDATE loans SET current_principal_balance = 0, status = 'closed' WHERE id = ?"); + $stmt->execute([$loanId]); + + $stmt = $pdo->prepare(" + DELETE FROM loan_schedules + WHERE loan_id = ? + AND is_paid = 0 + "); + $stmt->execute([$loanId]); + } else { + $pdo->commit(); + rebuild_remaining_loan_schedules($loanId); + $pdo = db(); + $pdo->beginTransaction(); + } + + $pdo->commit(); + + if (!empty($accountId)) { + recalculate_account_balance((int)$accountId); + } + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function delete_loan_with_history(int $userId, int $loanId): void +{ + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT * + FROM loans + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmt->execute([$loanId, $userId]); + $loan = $stmt->fetch(); + + if (!$loan) { + throw new RuntimeException('대출 정보를 찾을 수 없습니다.'); + } + + $stmt = $pdo->prepare(" + DELETE FROM transactions + WHERE user_id = ? + AND source_loan_id = ? + "); + $stmt->execute([$userId, $loanId]); + + $stmt = $pdo->prepare(" + DELETE FROM loans + WHERE id = ? + AND user_id = ? + "); + $stmt->execute([$loanId, $userId]); + + $pdo->commit(); + + if (!empty($loan['account_id'])) { + recalculate_account_balance((int)$loan['account_id']); + } + } catch (Throwable $e) { + $pdo->rollBack(); + throw $e; + } +} + +function update_loan_and_rebuild_full_history(int $userId, int $loanId, array $data): void +{ + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT * + FROM loans + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmt->execute([$loanId, $userId]); + $oldLoan = $stmt->fetch(); + + if (!$oldLoan) { + throw new RuntimeException('대출 정보를 찾을 수 없습니다.'); + } + + if (!empty($data['create_full_history']) && empty($data['account_id'])) { + throw new RuntimeException('완전 반영 방식을 사용할 때는 입출금 계좌를 선택하세요.'); + } + + $oldAccountId = !empty($oldLoan['account_id']) ? (int)$oldLoan['account_id'] : 0; + $newAccountId = !empty($data['account_id']) ? (int)$data['account_id'] : 0; + + // 기존 자동 생성 거래/납부/스케줄 제거 + $stmt = $pdo->prepare(" + DELETE FROM transactions + WHERE user_id = ? + AND source_loan_id = ? + "); + $stmt->execute([$userId, $loanId]); + + $stmt = $pdo->prepare(" + DELETE FROM loan_payments + WHERE loan_id = ? + "); + $stmt->execute([$loanId]); + + $stmt = $pdo->prepare(" + DELETE FROM loan_schedules + WHERE loan_id = ? + "); + $stmt->execute([$loanId]); + + // 대출 기본정보 수정 + $stmt = $pdo->prepare(" + UPDATE loans + SET + account_id = ?, + loan_name = ?, + lender_name = ?, + principal_amount = ?, + annual_interest_rate = ?, + start_date = ?, + maturity_date = NULL, + grace_period_months = ?, + repayment_months = ?, + repayment_method = ?, + payment_day = ?, + current_principal_balance = ?, + status = 'active', + description = ?, + updated_at = NOW() + WHERE id = ? + AND user_id = ? + "); + $stmt->execute([ + $newAccountId ?: null, + $data['loan_name'], + $data['lender_name'] ?: null, + $data['principal_amount'], + $data['annual_interest_rate'], + $data['start_date'], + $data['grace_period_months'], + $data['repayment_months'], + $data['repayment_method'], + $data['payment_day'], + $data['principal_amount'], + $data['description'] ?: null, + $loanId, + $userId + ]); + + // 새 스케줄 생성 + create_loan_schedule_only( + $loanId, + (float)$data['principal_amount'], + (float)$data['annual_interest_rate'], + (string)$data['start_date'], + (int)$data['grace_period_months'], + (int)$data['repayment_months'], + (string)$data['repayment_method'], + (int)$data['payment_day'] + ); + + $pdo->commit(); + + if (!empty($data['create_full_history'])) { + backfill_loan_transactions_and_mark_paid( + $userId, + $loanId, + $newAccountId ?: null, + $data['today_date'] ?? date('Y-m-d') + ); + } + + if ($oldAccountId > 0) { + recalculate_account_balance($oldAccountId); + } + if ($newAccountId > 0 && $newAccountId !== $oldAccountId) { + recalculate_account_balance($newAccountId); + } + } catch (Throwable $e) { + if ($pdo->inTransaction()) { + $pdo->rollBack(); + } + throw $e; + } +} \ No newline at end of file diff --git a/app/lib/merchant_pattern_service.php b/app/lib/merchant_pattern_service.php new file mode 100644 index 0000000..5a59923 --- /dev/null +++ b/app/lib/merchant_pattern_service.php @@ -0,0 +1,172 @@ + '', + '-' => '', + '_' => '', + '(' => '', + ')' => '', + '[' => '', + ']' => '', + '{' => '', + '}' => '', + '.' => '', + ',' => '', + ':' => '', + ';' => '', + '/' => '', + '\\' => '', + '|' => '', + '\'' => '', + '"' => '', + "\t" => '', + "\n" => '', + "\r" => '', + ]; + + $text = strtr($text, $replace); + + // 금액/시간/승인번호처럼 추천에 방해되는 숫자 덩어리 완화 + $text = preg_replace('/\d{4,}/u', '', $text); + + return trim((string)$text); +} + +function map_transaction_type_to_category_type(string $transactionType): string +{ + if ($transactionType === 'income') { + return 'income'; + } + + if ($transactionType === 'expense') { + return 'expense'; + } + + return 'transfer'; +} + +function merchant_starts_with(string $haystack, string $needle): bool +{ + if ($needle === '') { + return false; + } + + return mb_substr($haystack, 0, mb_strlen($needle, 'UTF-8'), 'UTF-8') === $needle; +} + +function suggest_category_from_merchant(int $userId, string $merchantText, string $transactionType): ?array +{ + $pdo = db(); + + $merchantText = trim($merchantText); + if ($merchantText === '') { + return null; + } + + $normalized = normalize_merchant_text($merchantText); + if ($normalized === '') { + return null; + } + + $categoryType = map_transaction_type_to_category_type($transactionType); + + $stmt = $pdo->prepare(" + SELECT + r.id, + r.pattern_text, + r.normalized_pattern, + r.match_type, + r.priority, + r.confidence, + c.id AS category_id, + c.name AS category_name, + c.category_type + FROM merchant_pattern_rules r + JOIN categories c + ON c.id = r.category_id + AND c.user_id = r.user_id + WHERE r.user_id = ? + AND r.is_active = 1 + AND c.is_active = 1 + AND c.category_type = ? + AND r.normalized_pattern IS NOT NULL + AND r.normalized_pattern <> '' + ORDER BY + CASE r.match_type + WHEN 'exact' THEN 1 + WHEN 'prefix' THEN 2 + ELSE 3 + END ASC, + r.priority ASC, + CHAR_LENGTH(r.normalized_pattern) DESC, + r.id ASC + "); + $stmt->execute([$userId, $categoryType]); + $rows = $stmt->fetchAll(); + + foreach ($rows as $row) { + $pattern = (string)$row['normalized_pattern']; + + if ($pattern === '') { + continue; + } + + $matched = false; + + if ($row['match_type'] === 'exact') { + $matched = ($normalized === $pattern); + } elseif ($row['match_type'] === 'prefix') { + $matched = merchant_starts_with($normalized, $pattern); + } else { + $matched = mb_strpos($normalized, $pattern, 0, 'UTF-8') !== false; + } + + if ($matched) { + return [ + 'rule_id' => (int)$row['id'], + 'pattern_text' => (string)$row['pattern_text'], + 'keyword' => (string)$row['pattern_text'], + 'match_type' => (string)$row['match_type'], + 'priority' => (int)$row['priority'], + 'confidence' => (float)$row['confidence'], + 'category_id' => (int)$row['category_id'], + 'category_name' => (string)$row['category_name'], + 'category_type' => (string)$row['category_type'], + 'normalized_input' => $normalized, + ]; + } + } + + return null; +} \ No newline at end of file diff --git a/app/lib/recurring_service.php b/app/lib/recurring_service.php new file mode 100644 index 0000000..453c0aa --- /dev/null +++ b/app/lib/recurring_service.php @@ -0,0 +1,49 @@ +prepare(" + SELECT * + FROM recurring_transactions + WHERE user_id = ? + AND is_active = 1 + AND (last_applied_ym IS NULL OR last_applied_ym <> ?) + ORDER BY id ASC + "); + $stmt->execute([$userId, $ym]); + $items = $stmt->fetchAll(); + + $count = 0; + $lastDay = (int)date('t', strtotime($ym . '-01')); + + foreach ($items as $item) { + $day = min((int)$item['day_of_month'], $lastDay); + $date = sprintf('%s-%02d', $ym, $day); + + $inserted = create_transaction([ + 'user_id' => $userId, + 'account_id' => (int)$item['account_id'], + 'category_id' => (int)$item['category_id'], + 'transaction_type' => $item['transaction_type'], + 'amount' => (float)$item['amount'], + 'transaction_date' => $date, + 'merchant_name' => $item['merchant_name'], + 'description' => $item['description'], + 'related_account_id' => $item['related_account_id'] ? (int)$item['related_account_id'] : null, + ], $skipDuplicates); + + $stmt2 = $pdo->prepare("UPDATE recurring_transactions SET last_applied_ym = ? WHERE id = ?"); + $stmt2->execute([$ym, $item['id']]); + + if ($inserted) { + $count++; + } + } + + return $count; +} \ No newline at end of file diff --git a/app/lib/transaction_form_service.php b/app/lib/transaction_form_service.php new file mode 100644 index 0000000..0d582d7 --- /dev/null +++ b/app/lib/transaction_form_service.php @@ -0,0 +1,325 @@ +prepare(" + SELECT * + FROM user_transaction_defaults + WHERE user_id = ? + LIMIT 1 + "); + $stmt->execute([$userId]); + + $row = $stmt->fetch(); + + if (!$row) { + return get_transaction_form_default_seed(); + } + + $row['keep_last_values'] = (int)$row['keep_last_values']; + $row['continue_after_save'] = (int)$row['continue_after_save']; + $row['quick_amounts'] = parse_quick_amounts($row['quick_amounts'] ?? ''); + + return array_merge(get_transaction_form_default_seed(), $row); +} + +function get_transaction_form_default_seed(): array +{ + return [ + 'default_account_id' => null, + 'default_card_account_id' => null, + + 'default_income_category_id' => null, + 'default_expense_category_id' => null, + 'default_transfer_category_id' => null, + 'default_card_payment_category_id' => null, + + 'keep_last_values' => 1, + 'continue_after_save' => 1, + + 'quick_amounts' => [10000, 30000, 50000, 100000], + ]; +} + +function save_transaction_form_defaults(int $userId, array $data): void +{ + $pdo = db(); + + $quickAmounts = normalize_quick_amounts( + $data['quick_amounts'] ?? [] + ); + + $stmt = $pdo->prepare(" + INSERT INTO user_transaction_defaults + ( + user_id, + default_account_id, + default_card_account_id, + default_income_category_id, + default_expense_category_id, + default_transfer_category_id, + default_card_payment_category_id, + keep_last_values, + continue_after_save, + quick_amounts + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ON DUPLICATE KEY UPDATE + default_account_id = VALUES(default_account_id), + default_card_account_id = VALUES(default_card_account_id), + default_income_category_id = VALUES(default_income_category_id), + default_expense_category_id = VALUES(default_expense_category_id), + default_transfer_category_id = VALUES(default_transfer_category_id), + default_card_payment_category_id = VALUES(default_card_payment_category_id), + keep_last_values = VALUES(keep_last_values), + continue_after_save = VALUES(continue_after_save), + quick_amounts = VALUES(quick_amounts) + "); + + $stmt->execute([ + $userId, + + nullable_id($data['default_account_id'] ?? null), + nullable_id($data['default_card_account_id'] ?? null), + + nullable_id($data['default_income_category_id'] ?? null), + nullable_id($data['default_expense_category_id'] ?? null), + nullable_id($data['default_transfer_category_id'] ?? null), + nullable_id($data['default_card_payment_category_id'] ?? null), + + !empty($data['keep_last_values']) ? 1 : 0, + !empty($data['continue_after_save']) ? 1 : 0, + + implode(',', $quickAmounts), + ]); +} + +function nullable_id($value): ?int +{ + $v = (int)$value; + + return $v > 0 ? $v : null; +} + +function parse_quick_amounts(string $csv): array +{ + if (trim($csv) === '') { + return [10000, 30000, 50000, 100000]; + } + + $items = explode(',', $csv); + $result = []; + + foreach ($items as $item) { + $v = (int)trim($item); + if ($v > 0) { + $result[] = $v; + } + } + + if (!$result) { + return [10000, 30000, 50000, 100000]; + } + + return array_values(array_unique($result)); +} + +function normalize_quick_amounts(array $items): array +{ + $result = []; + + foreach ($items as $item) { + $v = (int)$item; + if ($v > 0) { + $result[] = $v; + } + } + + if (!$result) { + $result = [10000, 30000, 50000, 100000]; + } + + $result = array_values(array_unique($result)); + sort($result); + + return $result; +} + +/** + * 거래 등록 화면 초기값 + */ +function build_transaction_form_state( + int $userId, + array $defaults, + ?array $lastState = null +): array { + $state = [ + 'transaction_date' => current_date_ymd(), + 'transaction_type' => 'expense', + + 'account_id' => $defaults['default_account_id'] ?: 0, + 'related_account_id' => 0, + + 'category_id' => $defaults['default_expense_category_id'] ?: 0, + + 'amount' => '', + 'merchant_name' => '', + 'description' => '', + + 'is_installment' => 0, + 'installment_months' => '', + 'installment_interest_rate' => '', + + 'continue_after_save' => $defaults['continue_after_save'], + 'keep_last_values' => $defaults['keep_last_values'], + 'save_as_defaults' => 0, + ]; + + if (!empty($defaults['keep_last_values']) && is_array($lastState)) { + $state = array_merge($state, $lastState); + $state['transaction_date'] = current_date_ymd(); + $state['amount'] = ''; + } + + return $state; +} + +/** + * 유형 변경 시 기본 카테고리 자동 선택 + */ +function apply_default_category_by_type(array &$state, array $defaults): void +{ + $type = $state['transaction_type'] ?? 'expense'; + + if ($type === 'income') { + $state['category_id'] = $defaults['default_income_category_id'] ?: 0; + return; + } + + if ($type === 'expense') { + $state['category_id'] = $defaults['default_expense_category_id'] ?: 0; + return; + } + + if ($type === 'transfer') { + $state['category_id'] = $defaults['default_transfer_category_id'] ?: 0; + return; + } + + if ($type === 'card_payment') { + $state['category_id'] = $defaults['default_card_payment_category_id'] ?: 0; + return; + } +} + +/** + * 카드 지출이면 카드 기본계좌 우선 적용 + */ +function apply_default_card_account(array &$state, array $defaults): void +{ + if (($state['transaction_type'] ?? '') !== 'expense') { + return; + } + + if (!empty($defaults['default_card_account_id'])) { + $state['account_id'] = (int)$defaults['default_card_account_id']; + } +} + +/** + * 저장 후 마지막 상태 저장 + */ +function remember_transaction_form_state(array $state): void +{ + $_SESSION['tx_create_last_form'] = [ + 'transaction_type' => $state['transaction_type'], + 'account_id' => $state['account_id'], + 'related_account_id' => $state['related_account_id'], + 'category_id' => $state['category_id'], + + 'merchant_name' => $state['merchant_name'], + 'description' => '', + + 'is_installment' => $state['is_installment'], + 'installment_months' => $state['installment_months'], + 'installment_interest_rate' => $state['installment_interest_rate'], + + 'continue_after_save' => $state['continue_after_save'], + 'keep_last_values' => $state['keep_last_values'], + + 'transaction_date' => current_date_ymd(), + 'amount' => '', + ]; +} + +function get_remembered_transaction_form_state(): ?array +{ + return $_SESSION['tx_create_last_form'] ?? null; +} + +function clear_remembered_transaction_form_state(): void +{ + unset($_SESSION['tx_create_last_form']); +} + +/** + * 기본값 자동 저장용 데이터 만들기 + */ +function make_default_payload_from_form(array $state): array +{ + $payload = [ + 'default_account_id' => 0, + 'default_card_account_id' => 0, + + 'default_income_category_id' => 0, + 'default_expense_category_id' => 0, + 'default_transfer_category_id' => 0, + 'default_card_payment_category_id' => 0, + + 'keep_last_values' => $state['keep_last_values'] ?? 1, + 'continue_after_save' => $state['continue_after_save'] ?? 1, + ]; + + $type = $state['transaction_type'] ?? 'expense'; + + if ($type === 'income') { + $payload['default_account_id'] = $state['account_id']; + $payload['default_income_category_id'] = $state['category_id']; + } elseif ($type === 'expense') { + $payload['default_account_id'] = $state['account_id']; + $payload['default_expense_category_id'] = $state['category_id']; + $payload['default_card_account_id'] = $state['account_id']; + } elseif ($type === 'transfer') { + $payload['default_account_id'] = $state['account_id']; + $payload['default_transfer_category_id'] = $state['category_id']; + } elseif ($type === 'card_payment') { + $payload['default_account_id'] = $state['account_id']; + $payload['default_card_payment_category_id'] = $state['category_id']; + } + + return $payload; +} \ No newline at end of file diff --git a/app/lib/transaction_service.php b/app/lib/transaction_service.php new file mode 100644 index 0000000..f58fdf0 --- /dev/null +++ b/app/lib/transaction_service.php @@ -0,0 +1,441 @@ +prepare(" + SELECT * + FROM accounts + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmt->execute([$accountId, $userId]); + + $row = $stmt->fetch(); + return $row ?: null; +} + +function create_transaction(array $data, bool $skipIfDuplicate = false): bool +{ + $pdo = db(); + $pdo->beginTransaction(); + + try { + $fingerprint = build_transaction_fingerprint( + (int)$data['user_id'], + (int)$data['account_id'], + !empty($data['related_account_id']) ? (int)$data['related_account_id'] : null, + (int)$data['category_id'], + (string)$data['transaction_type'], + (float)$data['amount'], + (string)$data['transaction_date'], + $data['merchant_name'] ?? null, + $data['description'] ?? null + ); + + if ($skipIfDuplicate) { + $stmt = $pdo->prepare(" + SELECT id + FROM transactions + WHERE user_id = ? + AND fingerprint = ? + LIMIT 1 + "); + $stmt->execute([$data['user_id'], $fingerprint]); + + if ($stmt->fetch()) { + $pdo->commit(); + return false; + } + } + + $account = get_account_for_transaction( + (int)$data['user_id'], + (int)$data['account_id'] + ); + + $billingYearMonth = null; + if ($account) { + $billingYearMonth = get_card_billing_year_month( + $account, + (string)$data['transaction_date'] + ); + } + + $isInstallment = !empty($data['is_installment']) ? 1 : 0; + $installmentMonths = !empty($data['installment_months']) ? (int)$data['installment_months'] : null; + $installmentInterestRate = !empty($data['installment_interest_rate']) ? (float)$data['installment_interest_rate'] : 0.0; + + $installmentInterestTotal = + isset($data['installment_interest_total']) && + $data['installment_interest_total'] !== null && + $data['installment_interest_total'] !== '' + ? (float)$data['installment_interest_total'] + : null; + + $installmentTotalBilled = + isset($data['installment_total_billed']) && + $data['installment_total_billed'] !== null && + $data['installment_total_billed'] !== '' + ? (float)$data['installment_total_billed'] + : null; + + if ($isInstallment && ($installmentMonths === null || $installmentMonths <= 1)) { + throw new RuntimeException('할부 개월 수가 올바르지 않습니다.'); + } + + if ($isInstallment) { + if ($installmentInterestTotal === null) { + $installmentInterestTotal = calculate_installment_interest_total( + (float)$data['amount'], + $installmentMonths, + $installmentInterestRate + ); + } + + $expectedTotal = round( + (float)$data['amount'] + (float)$installmentInterestTotal, + 2 + ); + + if ($installmentTotalBilled === null) { + $installmentTotalBilled = $expectedTotal; + } + + if (round($installmentTotalBilled, 2) !== $expectedTotal) { + throw new RuntimeException('총 청구금액은 원금 + 할부이자와 같아야 합니다.'); + } + } else { + $installmentMonths = null; + $installmentInterestRate = 0.0; + $installmentInterestTotal = 0.0; + $installmentTotalBilled = null; + } + + $stmt = $pdo->prepare(" + INSERT INTO transactions + ( + user_id, + account_id, + category_id, + transaction_type, + amount, + is_installment, + installment_months, + installment_interest_rate, + installment_interest_total, + installment_total_billed, + installment_prepay_amount, + transaction_date, + billing_year_month, + merchant_name, + description, + related_account_id, + fingerprint + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, ?) + "); + + $stmt->execute([ + $data['user_id'], + $data['account_id'], + $data['category_id'], + $data['transaction_type'], + $data['amount'], + $isInstallment, + $installmentMonths, + $installmentInterestRate, + $installmentInterestTotal, + $installmentTotalBilled, + $data['transaction_date'], + $billingYearMonth, + $data['merchant_name'], + $data['description'], + $data['related_account_id'], + $fingerprint, + ]); + + $transactionId = (int)$pdo->lastInsertId(); + $pdo->commit(); + + if ( + $data['transaction_type'] === 'expense' && + $isInstallment === 1 && + $installmentMonths !== null && + $installmentMonths > 1 + ) { + create_installment_schedule( + (int)$data['user_id'], + $transactionId, + (int)$data['account_id'], + (float)$data['amount'], + $installmentMonths, + (string)$data['transaction_date'], + $installmentInterestRate, + $installmentInterestTotal, + $installmentTotalBilled, + $installmentInterestRate > 0 ? 'fixed_total' : 'none' + ); + } + + if ( + $data['transaction_type'] === 'card_payment' && + !empty($data['related_account_id']) + ) { + $yearMonth = date('Y-m', strtotime((string)$data['transaction_date'])); + + $processedCount = mark_installment_month_billed_for_card_payment( + (int)$data['user_id'], + (int)$data['related_account_id'], + $yearMonth + ); + + if ($processedCount > 0) { + set_flash_message( + 'success', + $yearMonth . ' 할부 청구 회차 ' . intvalf($processedCount) . '건 자동 처리' + ); + } + } + + recalculate_account_balance((int)$data['account_id']); + + if (!empty($data['related_account_id'])) { + recalculate_account_balance((int)$data['related_account_id']); + } + + return true; + + } catch (Throwable $e) { + if ($pdo->inTransaction()) { + $pdo->rollBack(); + } + throw $e; + } +} + +function update_transaction(int $transactionId, int $userId, array $data): void +{ + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT account_id, related_account_id + FROM transactions + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmt->execute([$transactionId, $userId]); + + $old = $stmt->fetch(); + + if (!$old) { + throw new RuntimeException('거래를 찾을 수 없습니다.'); + } + + $fingerprint = build_transaction_fingerprint( + $userId, + (int)$data['account_id'], + !empty($data['related_account_id']) ? (int)$data['related_account_id'] : null, + (int)$data['category_id'], + (string)$data['transaction_type'], + (float)$data['amount'], + (string)$data['transaction_date'], + $data['merchant_name'] ?? null, + $data['description'] ?? null + ); + + $account = get_account_for_transaction( + $userId, + (int)$data['account_id'] + ); + + $billingYearMonth = null; + if ($account) { + $billingYearMonth = get_card_billing_year_month( + $account, + (string)$data['transaction_date'] + ); + } + + $isInstallment = !empty($data['is_installment']) ? 1 : 0; + $installmentMonths = !empty($data['installment_months']) ? (int)$data['installment_months'] : null; + $installmentInterestRate = !empty($data['installment_interest_rate']) ? (float)$data['installment_interest_rate'] : 0.0; + + $stmt = $pdo->prepare(" + UPDATE transactions + SET + account_id = ?, + category_id = ?, + transaction_type = ?, + amount = ?, + is_installment = ?, + installment_months = ?, + installment_interest_rate = ?, + installment_interest_total = ?, + installment_total_billed = ?, + transaction_date = ?, + billing_year_month = ?, + merchant_name = ?, + description = ?, + related_account_id = ?, + fingerprint = ? + WHERE id = ? + AND user_id = ? + "); + + $stmt->execute([ + $data['account_id'], + $data['category_id'], + $data['transaction_type'], + $data['amount'], + $isInstallment, + $installmentMonths, + $installmentInterestRate, + $data['installment_interest_total'] ?? 0, + $data['installment_total_billed'] ?? null, + $data['transaction_date'], + $billingYearMonth, + $data['merchant_name'], + $data['description'], + $data['related_account_id'], + $fingerprint, + $transactionId, + $userId + ]); + + delete_installment_by_transaction_id($transactionId); + + if ( + $data['transaction_type'] === 'expense' && + $isInstallment === 1 && + $installmentMonths !== null && + $installmentMonths > 1 + ) { + $interestTotal = calculate_installment_interest_total( + (float)$data['amount'], + $installmentMonths, + $installmentInterestRate + ); + + $totalBilled = round( + (float)$data['amount'] + (float)$interestTotal, + 2 + ); + + create_installment_schedule( + $userId, + $transactionId, + (int)$data['account_id'], + (float)$data['amount'], + $installmentMonths, + (string)$data['transaction_date'], + $installmentInterestRate, + $interestTotal, + $totalBilled, + $installmentInterestRate > 0 ? 'fixed_total' : 'none' + ); + } + + $pdo->commit(); + + $recalcIds = array_unique(array_filter([ + (int)$old['account_id'], + !empty($old['related_account_id']) ? (int)$old['related_account_id'] : null, + (int)$data['account_id'], + !empty($data['related_account_id']) ? (int)$data['related_account_id'] : null, + ])); + + foreach ($recalcIds as $id) { + recalculate_account_balance((int)$id); + } + + } catch (Throwable $e) { + if ($pdo->inTransaction()) { + $pdo->rollBack(); + } + throw $e; + } +} + +function delete_transaction(int $transactionId, int $userId): void +{ + $pdo = db(); + $pdo->beginTransaction(); + + try { + $stmt = $pdo->prepare(" + SELECT account_id, related_account_id + FROM transactions + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmt->execute([$transactionId, $userId]); + + $row = $stmt->fetch(); + + if (!$row) { + throw new RuntimeException('거래를 찾을 수 없습니다.'); + } + + delete_installment_by_transaction_id($transactionId); + + $stmt = $pdo->prepare(" + DELETE FROM transactions + WHERE id = ? + AND user_id = ? + "); + $stmt->execute([$transactionId, $userId]); + + $pdo->commit(); + + recalculate_account_balance((int)$row['account_id']); + + if (!empty($row['related_account_id'])) { + recalculate_account_balance((int)$row['related_account_id']); + } + + } catch (Throwable $e) { + if ($pdo->inTransaction()) { + $pdo->rollBack(); + } + throw $e; + } +} \ No newline at end of file diff --git a/app/views/footer.php b/app/views/footer.php new file mode 100644 index 0000000..bfde468 --- /dev/null +++ b/app/views/footer.php @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/views/header.php b/app/views/header.php new file mode 100644 index 0000000..104199d --- /dev/null +++ b/app/views/header.php @@ -0,0 +1,82 @@ + + + + + + + Financial | 개인 자산관리 · 가계부 · 대출 · 할부 통합 관리 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ diff --git a/public/account_create.php b/public/account_create.php new file mode 100644 index 0000000..7dc3edc --- /dev/null +++ b/public/account_create.php @@ -0,0 +1,329 @@ + 31) { + throw new RuntimeException('납부일은 1~31 사이여야 합니다.'); + } + + if ($useCreditGracePeriod) { + if ($statementStartMonthOffset === null || $statementEndMonthOffset === null) { + throw new RuntimeException('사용기간 기준 월을 선택하세요.'); + } + + if ($statementStartDay === null || $statementStartDay < 1 || $statementStartDay > 31) { + throw new RuntimeException('사용기간 시작일은 1~31 사이여야 합니다.'); + } + + if ($statementEndDay === null || $statementEndDay < 1 || $statementEndDay > 31) { + throw new RuntimeException('사용기간 종료일은 1~31 사이여야 합니다.'); + } + } else { + $statementStartMonthOffset = null; + $statementStartDay = null; + $statementEndMonthOffset = null; + $statementEndDay = null; + } + + if ($billingCycleMemo === '') { + $billingCycleMemo = null; + } + } + } + + $stmt = $pdo->prepare(" + INSERT INTO accounts + ( + user_id, + account_type, + institution_name, + account_name, + opening_balance, + current_balance, + is_active, + card_kind, + billing_day, + payment_day, + use_credit_grace_period, + statement_start_month_offset, + statement_start_day, + statement_end_month_offset, + statement_end_day, + billing_cycle_memo + ) + VALUES + (?, ?, ?, ?, ?, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?) + "); + + $stmt->execute([ + $uid, + $accountType, + $institutionName, + $accountName, + $openingBalance, + $openingBalance, + $cardKind, + $billingDay, + $paymentDay, + $useCreditGracePeriod, + $statementStartMonthOffset, + $statementStartDay, + $statementEndMonthOffset, + $statementEndDay, + $billingCycleMemo + ]); + + redirect('/accounts.php'); + + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

계좌 / 카드 추가

+ 목록 +
+ + +
+ + +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + +
+ + 목록 +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/public/account_edit.php b/public/account_edit.php new file mode 100644 index 0000000..66b77af --- /dev/null +++ b/public/account_edit.php @@ -0,0 +1,362 @@ +prepare("SELECT * FROM accounts WHERE id = ? AND user_id = ?"); +$stmt->execute([$id, $uid]); +$account = $stmt->fetch(); + +if (!$account) { + exit('계좌를 찾을 수 없습니다.'); +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $accountType = $_POST['account_type'] ?? ''; + $institutionName = trim($_POST['institution_name'] ?? ''); + $accountName = trim($_POST['account_name'] ?? ''); + $openingBalance = (float)str_replace(',', '', (string)($_POST['opening_balance'] ?? 0)); + $isActive = isset($_POST['is_active']) ? 1 : 0; + + $cardKind = $_POST['card_kind'] ?? null; + $billingDay = !empty($_POST['billing_day']) ? (int)$_POST['billing_day'] : null; + $paymentDay = !empty($_POST['payment_day']) ? (int)$_POST['payment_day'] : null; + $useCreditGracePeriod = !empty($_POST['use_credit_grace_period']) ? 1 : 0; + $billingCycleMemo = trim($_POST['billing_cycle_memo'] ?? ''); + + $statementStartMonthOffset = isset($_POST['statement_start_month_offset']) && $_POST['statement_start_month_offset'] !== '' + ? (int)$_POST['statement_start_month_offset'] + : null; + $statementStartDay = !empty($_POST['statement_start_day']) ? (int)$_POST['statement_start_day'] : null; + $statementEndMonthOffset = isset($_POST['statement_end_month_offset']) && $_POST['statement_end_month_offset'] !== '' + ? (int)$_POST['statement_end_month_offset'] + : null; + $statementEndDay = !empty($_POST['statement_end_day']) ? (int)$_POST['statement_end_day'] : null; + + if (!in_array($accountType, ['bank', 'card', 'cash', 'other'], true)) { + throw new RuntimeException('계정 유형이 올바르지 않습니다.'); + } + + if ($institutionName === '' || $accountName === '') { + throw new RuntimeException('기관명과 계좌명을 입력하세요.'); + } + + if ($accountType !== 'card') { + $cardKind = null; + $billingDay = null; + $paymentDay = null; + $useCreditGracePeriod = 0; + $billingCycleMemo = null; + $statementStartMonthOffset = null; + $statementStartDay = null; + $statementEndMonthOffset = null; + $statementEndDay = null; + } else { + if (!in_array($cardKind, ['credit', 'check'], true)) { + throw new RuntimeException('카드 종류를 선택하세요.'); + } + + if ($cardKind === 'check') { + $billingDay = null; + $paymentDay = null; + $useCreditGracePeriod = 0; + $billingCycleMemo = '즉시출금'; + $statementStartMonthOffset = null; + $statementStartDay = null; + $statementEndMonthOffset = null; + $statementEndDay = null; + } + + if ($cardKind === 'credit') { + if ($paymentDay === null || $paymentDay < 1 || $paymentDay > 31) { + throw new RuntimeException('납부일은 1~31 사이여야 합니다.'); + } + + if ($useCreditGracePeriod) { + if ($statementStartMonthOffset === null || $statementEndMonthOffset === null) { + throw new RuntimeException('사용기간의 시작/종료 월 기준을 선택하세요.'); + } + + if ($statementStartDay === null || $statementStartDay < 1 || $statementStartDay > 31) { + throw new RuntimeException('사용기간 시작일은 1~31 사이여야 합니다.'); + } + + if ($statementEndDay === null || $statementEndDay < 1 || $statementEndDay > 31) { + throw new RuntimeException('사용기간 종료일은 1~31 사이여야 합니다.'); + } + } else { + $statementStartMonthOffset = null; + $statementStartDay = null; + $statementEndMonthOffset = null; + $statementEndDay = null; + } + + if ($billingCycleMemo === '') { + $billingCycleMemo = null; + } + + if ($billingDay !== null && ($billingDay < 1 || $billingDay > 31)) { + throw new RuntimeException('구형 결제기준일은 1~31 사이여야 합니다.'); + } + } + } + + $stmt = $pdo->prepare(" + UPDATE accounts + SET + account_type = ?, + institution_name = ?, + account_name = ?, + opening_balance = ?, + is_active = ?, + card_kind = ?, + billing_day = ?, + payment_day = ?, + use_credit_grace_period = ?, + statement_start_month_offset = ?, + statement_start_day = ?, + statement_end_month_offset = ?, + statement_end_day = ?, + billing_cycle_memo = ? + WHERE id = ? + AND user_id = ? + "); + $stmt->execute([ + $accountType, + $institutionName, + $accountName, + $openingBalance, + $isActive, + $cardKind, + $billingDay, + $paymentDay, + $useCreditGracePeriod, + $statementStartMonthOffset, + $statementStartDay, + $statementEndMonthOffset, + $statementEndDay, + $billingCycleMemo, + $id, + $uid + ]); + + recalculate_account_balance($id); + + redirect('/accounts.php'); + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

계좌 / 카드 수정

+ 목록 +
+ + +
+ + +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ > + +
+
+ + + +
+ + 목록 +
+
+
+
+ + + + \ No newline at end of file diff --git a/public/accounts.php b/public/accounts.php new file mode 100644 index 0000000..5f0f16f --- /dev/null +++ b/public/accounts.php @@ -0,0 +1,174 @@ +prepare(" + SELECT * + FROM accounts + WHERE user_id = ? + ORDER BY FIELD(account_type, 'bank', 'card', 'cash', 'other'), id ASC +"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +$cardDueMap = []; + +$stmt = $pdo->prepare(" + SELECT + t.account_id, + t.billing_year_month, + COALESCE(SUM(t.amount),0) total_amount + FROM transactions t + JOIN accounts a ON a.id=t.account_id + WHERE t.user_id=? + AND t.transaction_type='expense' + AND a.account_type='card' + AND a.card_kind='credit' + AND COALESCE(t.is_installment,0)=0 + AND t.billing_year_month IN (?,?) + GROUP BY t.account_id,t.billing_year_month +"); +$stmt->execute([$uid,$ym,$nextYm]); + +foreach ($stmt->fetchAll() as $row) { + $aid = (int)$row['account_id']; + $billYm = $row['billing_year_month']; + + $cardDueMap[$aid][$billYm] = + ($cardDueMap[$aid][$billYm] ?? 0) + (float)$row['total_amount']; +} + +$stmt = $pdo->prepare(" + SELECT + i.account_id AS account_id, + s.bill_year_month, + COALESCE(SUM(s.total_amount),0) total_amount + FROM installment_schedules s + JOIN installments i ON i.id=s.installment_id + WHERE i.user_id=? + AND s.is_billed=0 + AND s.total_amount>0 + AND s.bill_year_month IN (?,?) + GROUP BY i.account_id,s.bill_year_month +"); +$stmt->execute([$uid,$ym,$nextYm]); + +foreach ($stmt->fetchAll() as $row) { + $aid = (int)$row['account_id']; + $billYm = $row['bill_year_month']; + + $cardDueMap[$aid][$billYm] = + ($cardDueMap[$aid][$billYm] ?? 0) + (float)$row['total_amount']; +} + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

계좌 / 카드 현황

+
+
+ + +
+ 추가 +
+
+ +
+ + +
+
+
+
+
+
+ / +
+
+
+ + + + +
+ + +
+ + + +
+ + +
+
+
청구예정
+
+
+
+
이월예정
+
+
+ +
+
결제기준일
+
+ +
+
+
+
납부일
+
+ +
+
+
+ +
+ +
+ +
체크카드 잔액 기준
+
+
체크카드는 신용공여기간 없이 거래월 기준으로 반영됩니다.
+ + +
현재 잔액
+
+ + +
+ 수정 +
+
+
+
+ + + +
+
+
등록된 계좌/카드가 없습니다.
+
+
+ +
+ + \ No newline at end of file diff --git a/public/api/category_suggest.php b/public/api/category_suggest.php new file mode 100644 index 0000000..52cef0b --- /dev/null +++ b/public/api/category_suggest.php @@ -0,0 +1,61 @@ + true, + 'found' => false, + ], JSON_UNESCAPED_UNICODE); + exit; +} + +if (mb_strlen($merchant, 'UTF-8') < 2) { + echo json_encode([ + 'ok' => true, + 'found' => false, + ], JSON_UNESCAPED_UNICODE); + exit; +} + +try { + $suggested = suggest_category_from_merchant(user_id(), $merchant, $transactionType); + + if (!$suggested) { + echo json_encode([ + 'ok' => true, + 'found' => false, + ], JSON_UNESCAPED_UNICODE); + exit; + } + + echo json_encode([ + 'ok' => true, + 'found' => true, + 'category_id' => (int)$suggested['category_id'], + 'category_name' => (string)$suggested['category_name'], + 'category_type' => (string)$suggested['category_type'], + 'pattern_text' => (string)($suggested['pattern_text'] ?? ''), + 'keyword' => (string)($suggested['keyword'] ?? $suggested['pattern_text'] ?? ''), + 'match_type' => (string)($suggested['match_type'] ?? ''), + 'priority' => (int)($suggested['priority'] ?? 0), + 'confidence' => (float)($suggested['confidence'] ?? 0), + ], JSON_UNESCAPED_UNICODE); +} catch (Throwable $e) { + http_response_code(500); + echo json_encode([ + 'ok' => false, + 'found' => false, + 'message' => '자동추천 조회 실패', + ], JSON_UNESCAPED_UNICODE); +} \ No newline at end of file diff --git a/public/assets/app.css b/public/assets/app.css new file mode 100644 index 0000000..0b6a122 --- /dev/null +++ b/public/assets/app.css @@ -0,0 +1,576 @@ +:root { + --app-bg: #f3f6fb; + --card-bg: #ffffff; + --text-main: #07152b; + --text-sub: #51627a; + --border: #dbe4f0; + --line: #e7edf5; + --primary: #2563eb; + --primary-dark: #1d4ed8; + --danger: #dc2626; + --success: #16a34a; + --warning: #f59e0b; + --shadow: 0 10px 28px rgba(15, 23, 42, 0.06); +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + background: var(--app-bg); + color: var(--text-main); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", sans-serif; + font-size: 15px; + font-weight: 600; +} + +.app-tabbar { + display: none; +} + +main, +.container, +.container-fluid { + max-width: 1480px; + margin: 0 auto; + padding: 28px 22px 60px; +} + +/* top nav */ +.navbar, +header.navbar { + min-height: 52px; + background: #fff !important; + border-bottom: 1px solid var(--line); + padding: 0 20px; +} + +.navbar-brand { + font-size: 22px; + font-weight: 900; + color: var(--text-main) !important; + margin-right: 26px; +} + +.navbar-nav { + gap: 2px; +} + +.nav-link { + color: #334155 !important; + font-size: 15px; + font-weight: 800; + padding: 15px 9px !important; + white-space: nowrap; +} + +.nav-link:hover { + color: var(--primary) !important; +} + +/* page head */ +.page-head { + display: flex; + justify-content: space-between; + align-items: center; + gap: 14px; + flex-wrap: wrap; + margin-bottom: 22px; +} + +.page-head h1, +.page-head h2 { + margin: 0; + font-size: 32px; + font-weight: 950; + letter-spacing: -0.05em; +} + +/* card */ +.card, +.finance-card, +.finance-summary-card { + border: 0 !important; + border-radius: 16px !important; + background: var(--card-bg); + box-shadow: var(--shadow); +} + +.card-body { + padding: 24px !important; +} + +.finance-summary-card .card-body { + padding: 26px !important; +} + +.finance-summary-income { + background: linear-gradient(135deg, #dcfce7, #ffffff); +} + +.finance-summary-expense { + background: linear-gradient(135deg, #fee2e2, #ffffff); +} + +.finance-summary-loan { + background: linear-gradient(135deg, #fef3c7, #ffffff); +} + +.finance-summary-net { + background: linear-gradient(135deg, #dbeafe, #ffffff); +} + +/* text */ +.eyebrow { + color: var(--text-sub); + font-size: 13px; + font-weight: 900; + margin-bottom: 8px; +} + +.card-title-lg { + font-size: 24px; + font-weight: 950; + letter-spacing: -0.05em; + line-height: 1.25; + word-break: keep-all; +} + +.card-title-sm { + font-size: 20px; + font-weight: 950; + letter-spacing: -0.04em; + line-height: 1.25; +} + +.stat-label { + color: #334155; + font-size: 13px; + font-weight: 900; + margin-bottom: 8px; +} + +.stat-value { + font-size: 24px; + font-weight: 950; + letter-spacing: -0.04em; + line-height: 1.2; +} + +.hero-value { + font-size: 34px; + font-weight: 950; + letter-spacing: -0.05em; + line-height: 1.15; +} + +.small, +.form-text, +.text-secondary { + color: var(--text-sub) !important; + font-weight: 650; +} + +/* amount colors */ +.text-primary, +.amount-income { + color: #0b63ff !important; +} + +.text-danger, +.amount-expense { + color: #c90000 !important; +} + +.amount-card { + color: #7c3aed !important; +} + +.amount-transfer { + color: var(--text-main); +} + +/* forms */ +.form-label { + color: #26364d; + font-size: 14px; + font-weight: 900; + margin-bottom: 8px; +} + +.form-control, +.form-select { + min-height: 48px; + border-radius: 12px !important; + border: 1px solid #c9d5e6 !important; + color: var(--text-main); + font-weight: 700; + background-color: #fff; +} + +.form-control:focus, +.form-select:focus { + border-color: var(--primary) !important; + box-shadow: 0 0 0 0.18rem rgba(37, 99, 235, 0.12) !important; +} + +/* buttons */ +.btn { + border-radius: 12px !important; + font-weight: 900 !important; + min-height: 42px; + padding: 9px 16px; +} + +.btn-sm { + min-height: 34px; + padding: 6px 12px; + border-radius: 10px !important; + font-size: 13px; +} + +.btn-primary { + background: var(--primary) !important; + border-color: var(--primary) !important; +} + +.btn-primary:hover { + background: var(--primary-dark) !important; +} + +.btn-outline-primary { + color: var(--primary) !important; + border-color: #adc6ff !important; +} + +.btn-outline-danger { + color: var(--danger) !important; + border-color: #f5b5b5 !important; +} + +/* badges */ +.badge { + border-radius: 999px; + padding: 7px 11px; + font-size: 12px; + font-weight: 900; +} + +.text-bg-success { + background: #dcfce7 !important; + color: #047857 !important; +} + +.text-bg-warning { + background: #fef3c7 !important; + color: #92400e !important; +} + +.text-bg-secondary { + background: #e5e7eb !important; + color: #374151 !important; +} + +.text-bg-info { + background: #dbeafe !important; + color: #1d4ed8 !important; +} + +/* tables */ +.table { + margin-bottom: 0; + color: var(--text-main); +} + +.table th { + color: #334155; + font-size: 13px; + font-weight: 950; + white-space: nowrap; + border-bottom: 1px solid var(--border) !important; + padding: 14px 10px !important; +} + +.table td { + font-size: 15px; + font-weight: 650; + vertical-align: middle; + padding: 14px 10px !important; + border-bottom: 1px solid var(--line) !important; +} + +.table-hover tbody tr:hover { + background: #f8fbff; +} + +.mobile-scroll { + width: 100%; + overflow-x: auto; +} + +.mobile-scroll table { + min-width: 900px; +} + +/* progress */ +.finance-progress, +.progress.finance-progress { + width: 100%; + height: 12px; + background: #e5edf7; + border-radius: 999px; + overflow: hidden; +} + +.finance-progress .progress-bar, +.progress.finance-progress .progress-bar { + height: 100%; + background: linear-gradient(90deg, #2563eb, #60a5fa); + border-radius: 999px; +} + +/* highlight */ +.loan-create-highlight { + border: 1px solid #bfdbfe; + background: #eff6ff; + border-radius: 16px; + padding: 18px; +} + +.loan-create-highlight .title { + color: #1d4ed8; + font-size: 15px; + font-weight: 950; + margin-bottom: 6px; +} + +.loan-create-highlight .desc { + color: #475569; + font-size: 13px; + font-weight: 700; +} + +/* alert */ +.alert { + border: 0; + border-radius: 14px; + font-weight: 800; + box-shadow: var(--shadow); +} + +/* empty */ +.empty-state { + text-align: center; + color: var(--text-sub); + font-weight: 800; + padding: 42px 10px; +} + +/* charts */ +canvas { + min-height: 280px; +} + +/* card link */ +a.text-decoration-none .finance-card, +a .finance-card { + transition: transform 0.12s ease, box-shadow 0.12s ease; +} + +a.text-decoration-none:hover .finance-card, +a:hover .finance-card { + transform: translateY(-2px); + box-shadow: 0 14px 32px rgba(15, 23, 42, 0.1); +} + +/* loan/installment cards */ +.finance-card .row.g-3 { + row-gap: 18px !important; +} + +.finance-card .stat-value { + word-break: keep-all; +} + +/* long text */ +.text-truncate-cell { + max-width: 220px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +td { + word-break: keep-all; +} + +/* danger border */ +.border-danger { + border: 1px solid rgba(220, 38, 38, 0.75) !important; +} + +/* responsive */ +@media (max-width: 1200px) { + .nav-link { + font-size: 14px; + padding-left: 6px !important; + padding-right: 6px !important; + } + + .hero-value { + font-size: 30px; + } + + .stat-value { + font-size: 22px; + } +} + +@media (max-width: 768px) { + body { + padding-bottom: 76px; + } + + main, + .container, + .container-fluid { + padding: 20px 14px 44px; + } + + .page-head { + align-items: stretch; + } + + .page-head h1, + .page-head h2 { + font-size: 28px; + } + + .page-head > * { + width: 100%; + } + + .page-head .d-flex, + .page-head form { + width: 100%; + } + + .page-head .btn { + flex: 1; + } + + .card-body { + padding: 18px !important; + } + + .hero-value { + font-size: 28px; + } + + .stat-value { + font-size: 21px; + } + + .card-title-lg { + font-size: 21px; + } + + .navbar { + overflow-x: auto; + white-space: nowrap; + } + + .navbar-nav { + flex-direction: row; + } + + .app-tabbar { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 4px; + padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); + background: rgba(255, 255, 255, 0.96); + border-top: 1px solid var(--line); + box-shadow: 0 -10px 24px rgba(15, 23, 42, 0.08); + } + + .app-tabbar-item { + display: flex; + min-height: 42px; + align-items: center; + justify-content: center; + border-radius: 10px; + color: #334155; + font-size: 12px; + font-weight: 900; + text-decoration: none; + white-space: nowrap; + } + + .app-tabbar-primary { + background: var(--primary); + color: #fff; + } + + .transaction-list-table { + min-width: 0 !important; + border-collapse: separate; + border-spacing: 0 12px; + } + + .transaction-list-table thead { + display: none; + } + + .transaction-list-table, + .transaction-list-table tbody, + .transaction-list-table tr, + .transaction-list-table td { + display: block; + width: 100%; + } + + .transaction-list-table tr { + padding: 14px; + border: 1px solid var(--line); + border-radius: 14px; + background: #fff; + box-shadow: 0 8px 18px rgba(15, 23, 42, 0.05); + } + + .transaction-list-table td { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 14px; + border-bottom: 0 !important; + padding: 6px 0 !important; + text-align: right !important; + word-break: break-word; + } + + .transaction-list-table td::before { + content: attr(data-label); + flex: 0 0 78px; + color: var(--text-sub); + font-size: 12px; + font-weight: 900; + text-align: left; + } + + .transaction-list-table td:last-child { + justify-content: flex-end; + padding-top: 12px !important; + } + + .transaction-list-table td:last-child::before { + display: none; + } +} diff --git a/public/assets/pwa.js b/public/assets/pwa.js new file mode 100644 index 0000000..00be5cf --- /dev/null +++ b/public/assets/pwa.js @@ -0,0 +1,9 @@ +(function () { + if (!('serviceWorker' in navigator)) { + return; + } + + window.addEventListener('load', function () { + navigator.serviceWorker.register('/sw.js').catch(function () {}); + }); +})(); diff --git a/public/assets/vendor/bootstrap.bundle.min.js b/public/assets/vendor/bootstrap.bundle.min.js new file mode 100644 index 0000000..04e9185 --- /dev/null +++ b/public/assets/vendor/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=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 O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function j(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function M(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${M(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${M(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=j(t.dataset[n])}return e},getDataAttribute:(t,e)=>j(t.getAttribute(`data-bs-${M(e)}`))};class H{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=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}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 B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map((t=>n(t))).join(","):null},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(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<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[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=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),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(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",jt="collapsing",Mt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(jt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(jt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(Mt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function je(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const Me={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:je(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:je(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},j=p?3:1;j>0&&"break"!==P(j);j--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],j=f?-T[$]/2:0,M=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-j-q-z-O.mainAxis:M-q-z-O.mainAxis,K=v?-E[$]/2+j+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?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||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),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("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{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,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({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=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_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(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),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 t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,jn=`hide${xn}`,Mn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,jn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,Mn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,Mn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],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:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}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[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);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},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,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"},ls={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"};class cs extends W{constructor(t,e){if(void 0===vi)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 as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,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("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(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(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".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(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(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:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,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(){this._isShown()||this._isHovered?this._isHovered=!0:(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=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(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=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}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=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",js="Home",Ms="End",Fs="active",Hs="fade",Ws="show",Bs=".dropdown-toggle",zs=`:not(${Bs})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ks extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,js,Ms].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([js,Ms].includes(t.key))i=e[t.key===js?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return z.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_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=z.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("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(Bs,Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:z.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Ks.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(Vs))Ks.getOrCreateInstance(t)})),m(Ks);const Qs=".bs.toast",Xs=`mouseover${Qs}`,Ys=`mouseout${Qs}`,Us=`focusin${Qs}`,Gs=`focusout${Qs}`,Js=`hide${Qs}`,Zs=`hidden${Qs}`,to=`show${Qs}`,eo=`shown${Qs}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){N.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),d(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),N.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),N.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_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}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Xs,(t=>this._onInteraction(t,!0))),N.on(this._element,Ys,(t=>this._onInteraction(t,!1))),N.on(this._element,Us,(t=>this._onInteraction(t,!0))),N.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ao),m(ao),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Ks,Toast:ao,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/public/assets/vendor/bootstrap.min.css b/public/assets/vendor/bootstrap.min.css new file mode 100644 index 0000000..3993414 --- /dev/null +++ b/public/assets/vendor/bootstrap.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8";/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/public/assets/vendor/chart.umd.js b/public/assets/vendor/chart.umd.js new file mode 100644 index 0000000..008464f --- /dev/null +++ b/public/assets/vendor/chart.umd.js @@ -0,0 +1,14 @@ +/*! + * Chart.js v4.5.1 + * https://www.chartjs.org + * (c) 2025 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Jo},get Decimation(){return ta},get Filler(){return ba},get Legend(){return Ma},get SubTitle(){return Pa},get Title(){return ka},get Tooltip(){return Na}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return nt[s][e]et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const n=e.length;let o=0,a=n;if(t._sorted){const{iScale:r,vScale:l,_parsed:h}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,d=r.axis,{min:u,max:f,minDefined:g,maxDefined:p}=r.getUserBounds();if(g){if(o=Math.min(it(h,d,u).lo,i?n:it(e,d,r.getPixelForValue(u)).lo),c){const t=h.slice(0,o+1).reverse().findIndex((t=>!s(t[l.axis])));o-=Math.max(0,t)}o=Z(o,0,n-1)}if(p){let t=Math.max(it(h,r.axis,f,!0).hi+1,i?0:it(e,d,r.getPixelForValue(f),!0).hi+1);if(c){const e=h.slice(t-1).findIndex((t=>!s(t[l.axis])));t+=Math.max(0,e)}a=Z(t,o,n)-o}else a=n-o}return{start:o,count:a}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var bt=new xt; +/*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Jt{constructor(t){if(t instanceof Jt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Jt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Zt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Zt(t)?t:new Jt(t)}function te(t){return Zt(t)?t:new Jt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Me(t.height*s),o=Me(t.width*s);t.height=Me(t.height),t.width=Me(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Ze(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Ze(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Ze(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Je(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Ze(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Je(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:J,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r!s(t[e.axis])));n.lo-=Math.max(0,a);const r=i.slice(n.hi).findIndex((t=>!s(t[e.axis])));n.hi+=Math.max(0,r)}return n}if(o._sharedOptions){const t=a[0],s="function"==typeof t.getRange&&t.getRange(e);if(s){const t=r(a,e,i-s),n=r(a,e,i+s);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function $i(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Ki={evaluateInteractionItems:$i,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tYi(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Xi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>qi(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>qi(t,ve(e,t),"y",i.intersect,s)}};const Gi=["left","top","right","bottom"];function Ji(t,e){return t.filter((t=>t.pos===e))}function Zi(t,e){return t.filter((t=>-1===Gi.indexOf(t.pos)&&t.box.axis===e))}function Qi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function ts(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Gi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function os(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Qi(Ji(e,"left"),!0),n=Qi(Ji(e,"right")),o=Qi(Ji(e,"top"),!0),a=Qi(Ji(e,"bottom")),r=Zi(e,"x"),l=Zi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ji(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);is(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=ts(l.concat(h),d);os(r.fullSize,g,d,p),os(l,g,d,p),os(h,g,d,p)&&os(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),rs(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,rs(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class hs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class cs extends hs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ds="$chartjs",us={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},fs=t=>null===t||""===t;const gs=!!Se&&{passive:!0};function ps(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,gs)}function ms(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function xs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.addedNodes,s),e=e&&!ms(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function bs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.removedNodes,s),e=e&&!ms(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const _s=new Map;let ys=0;function vs(){const t=window.devicePixelRatio;t!==ys&&(ys=t,_s.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function Ms(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){_s.size||window.addEventListener("resize",vs),_s.set(t,e)}(t,o),a}function ws(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){_s.delete(t),_s.size||window.removeEventListener("resize",vs)}(t)}function ks(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=us[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,gs)}(s,e,n),n}class Ss extends hs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[ds]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",fs(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(fs(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[ds])return!1;const i=e[ds].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[ds],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:xs,detach:bs,resize:Ms}[e]||ks;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ws,detach:ws,resize:ws}[e]||ps)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function Ps(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?cs:Ss}var Ds=Object.freeze({__proto__:null,BasePlatform:hs,BasicPlatform:cs,DomPlatform:Ss,_detectPlatform:Ps});const Cs="transparent",Os={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Cs),n=s.valid&&Qt(e||Cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class As{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Os[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new As(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function Ls(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Es(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function Vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ws(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Ns=t=>"reset"===t||"none"===t,Hs=(t,e)=>e?t:Object.assign({},t);class js{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Is(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ws(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Bs(t,"x")),o=e.yAxisID=l(i.yAxisID,Bs(t,"y")),a=e.rAxisID=l(i.rAxisID,Bs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Ws(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:Es(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Hs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ts(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ns(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Ns(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Ns(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ys(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;io)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Us(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t"top"===e||"left"===e?t[e]+i:t[e]-i,qs=(t,e)=>Math.min(e||t,t);function Ks(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Js(t){return t.drawTicks?t.tickLength:0}function Zs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class tn extends $s{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=Z(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Js(t.grid)-e.padding-Zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(Z((h.highest.height+6)/o,-1,1)),Math.asin(Z(a/r,-1,1))-Math.asin(Z(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Js(n)+o):(t.height=this.maxHeight,t.width=Js(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Js(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class sn{constructor(){this.controllers=new en(js,"datasets",!0),this.elements=new en($s,"elements"),this.plugins=new en(Object,"plugins"),this.scales=new en(tn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function an(t,e){return e||!1!==t?!0===t?{}:t:null}function rn(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ln(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function hn(t){if("x"===t||"y"===t||"r"===t)return t}function cn(t,...e){if(hn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&hn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function dn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function un(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=ln(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=cn(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return dn(t,"x",i[0])||dn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||ln(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function fn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=un(t,e)}function gn(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const pn=new Map,mn=new Set;function xn(t,e){let i=pn.get(t);return i||(i=e(),pn.set(t,i),mn.add(i)),i}const bn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class _n{constructor(t){this._config=function(t){return(t=t||{}).data=gn(t.data),fn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=gn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),fn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return xn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return xn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return xn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return xn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>bn(r,t,e)))),e.forEach((t=>bn(r,s,t))),e.forEach((t=>bn(r,re[n]||{},t))),e.forEach((t=>bn(r,ue,t))),e.forEach((t=>bn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),mn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=yn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||vn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=yn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function yn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const vn=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const Mn=["top","bottom","left","right","chartArea"];function wn(t,e){return"top"===t||"bottom"===t||-1===Mn.indexOf(t)&&"x"===e}function kn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function Sn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function Pn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Dn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Cn={},On=t=>{const e=Dn(t);return Object.values(Cn).filter((t=>t.canvas===e)).pop()};function An(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class Tn{static defaults=ue;static instances=Cn;static overrides=re;static registry=nn;static version="4.5.1";static getChart=On;static register(...t){nn.add(...t),Ln()}static unregister(...t){nn.remove(...t),Ln()}constructor(t,e){const s=this.config=new _n(e),n=Dn(t),o=On(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||Ps(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new on,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Cn[this.id]=this,r&&l?(bt.listen(this,"complete",Sn),bt.listen(this,"progress",Pn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return nn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=cn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=cn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&wn(n.position,a)===wn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(nn.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ls.configure(this,t,t.options),ls.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(kn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ls.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){An(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ls.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},s=Ni(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(s&&Ie(e,s),t.controller.draw(),s&&ze(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Ki.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Ln(){return u(Tn.instances,(t=>t._plugins.invalidate()))}function En(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Rn{static override(t){Object.assign(Rn.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return En()}parse(){return En()}format(){return En()}add(){return En()}diff(){return En()}startOf(){return En()}endOf(){return En()}}var In={_date:Rn};function zn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Vn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data,{labels:{pointStyle:i,textAlign:s,color:n,useBorderRadius:o,borderRadius:a}}=t.legend.options;return e.labels.length&&e.datasets.length?e.labels.map(((e,r)=>{const l=t.getDatasetMeta(0).controller.getStyle(r);return{text:e,fillStyle:l.backgroundColor,fontColor:n,hidden:!t.getDataVisibility(r),lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:l.borderWidth,strokeStyle:l.borderColor,textAlign:s,pointStyle:i,borderRadius:o&&(a||l.borderRadius),index:r}})):[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;nJ(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>J(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Un=Object.freeze({__proto__:null,BarController:class extends js{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Vn(t,e,i,s)}parseArrayData(t,e,i,s){return Vn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;dt.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter((i=>t[i].axis===e)).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const i of this.chart.data.datasets)t[l("x"===this.chart.options.indexAxis?i.xAxisID:i.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;const c=this._getAxisCount();if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,d="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends $n{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:Yn,RadarController:class extends js{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Xn(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return Z(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Z(n.innerStart,0,a),innerEnd:Z(n.innerEnd,0,a)}}function qn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Kn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Xn(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=qn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=qn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=qn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=qn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=qn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=qn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Gn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u,borderRadius:f}=l,g="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,g?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let p=e.endAngle;if(o){Kn(t,e,i,s,p,n);for(let e=0;en?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,p),l.selfJoin&&p-a>=C&&0===f&&"miter"!==c&&function(t,e,i){const{startAngle:s,x:n,y:o,outerRadius:a,innerRadius:r,options:l}=e,{borderWidth:h,borderJoinStyle:c}=l,d=Math.min(h/a,G(s-i));if(t.beginPath(),t.arc(n,o,a-h/2,s+d/2,i-d/2),r>0){const e=Math.min(h/r,G(s-i));t.arc(n,o,r+h/2,i-e/2,s+e/2,!0)}else{const e=Math.min(h/2,a*G(s-i));if("round"===c)t.arc(n,o,e,i-C/2,s+C/2,!0);else if("bevel"===c){const a=2*e*e,r=-a*Math.cos(i+C/2)+n,l=-a*Math.sin(i+C/2)+o,h=a*Math.cos(s+C/2)+n,c=a*Math.sin(s+C/2)+o;t.lineTo(r,l),t.lineTo(h,c)}}t.closePath(),t.moveTo(0,0),t.rect(0,0,t.canvas.width,t.canvas.height),t.clip("evenodd")}(t,e,p),o||(Kn(t,e,i,s,p,n),t.stroke())}function Jn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Qn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=nr&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function io(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?eo:to}const so="function"==typeof Path2D;function no(t,e,i,s){so&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Jn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=io(e);for(const r of n)Jn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class oo extends $s{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a),g=J(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Kn(t,e,i,s,l,n);for(let e=0;e("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function mo(t){const e=this.getLabels();return t>=0&&ts=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),Mr)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,xo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class _o extends bo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const yo=t=>Math.floor(z(t)),vo=(t,e)=>Math.pow(10,yo(t)+e);function Mo(t){return 1===t/Math.pow(10,yo(t))}function wo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function ko(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=yo(e);let o=function(t,e){let i=yo(e-t);for(;wo(t,e,i)>10;)i++;for(;wo(t,e,i)<10;)i--;return Math.min(i,yo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:Mo(g),significand:u}),s}class So extends tn{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===vo(this.min,0)?vo(this.min,-1):vo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(vo(i,-1)),o(vo(s,1)))),i<=0&&n(vo(s,-1)),s<=0&&o(vo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=ko({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Po(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Do(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:tn?{start:e-i,end:e}:{start:e,end:e+i}}function Co(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Ao(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function To(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function Lo(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Eo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(Po(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Po(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Co(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));Lo(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Eo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Io={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},zo=Object.keys(Io);function Fo(t,e){return t-e}function Vo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Bo(t,e,i,s){const n=zo.length;for(let o=zo.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function No(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ho extends tn{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new In._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Vo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Bo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=zo.length-1;o>=zo.indexOf(i);o--){const i=zo[o];if(Io[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return zo[i?zo.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=zo.indexOf(t)+1,i=zo.length;e+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=Z(s,0,o),n=Z(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Bo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var $o=Object.freeze({__proto__:null,CategoryScale:class extends tn{static id="category";static defaults={ticks:{callback:mo}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:Z(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:po(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return mo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:_o,LogarithmicScale:So,RadialLinearScale:Ro,TimeScale:Ho,TimeSeriesScale:class extends Ho{static id="timeseries";static defaults=Ho.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=jo(e,this.min),this._tableRange=jo(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;ot-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(jo(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return jo(this._table,i*this._tableRange+this._minPos,!0)}}});const Yo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Uo=Yo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Xo(t){return Yo[t%Yo.length]}function qo(t){return Uo[t%Uo.length]}function Ko(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n instanceof Yn?e=function(t,e){return t.backgroundColor=t.data.map((()=>qo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Xo(e),t.backgroundColor=qo(e),++e}(i,e))}}function Go(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Jo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Go(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Go(o)||"rgba(0,0,0,0.1)"!==ue.borderColor||"rgba(0,0,0,0.1)"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=Ko(t);s.forEach(l)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Qo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var ta={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Qo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=Z(it(e,o.axis,a).lo,0,i-1)),s=h?Z(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Qo(t)}};function ea(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ia(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function sa(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function na(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ia(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new oo({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function oa(t){return t&&!1!==t.fill}function aa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function ra(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function la(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&ua(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;oa(i)&&ua(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;oa(s)&&"beforeDatasetDraw"===i.drawTime&&ua(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const _a=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class ya extends $s{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=_a(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=va(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=_a(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=va(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class wa extends $s{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var ka={id:"title",_element:wa,start(t,e,i){!function(t,e){const i=new wa({ctx:t.ctx,options:e,chart:t});ls.configure(t,i,e),ls.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ls.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sa=new WeakMap;var Pa={id:"subtitle",start(t,e,i){const s=new wa({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s),Sa.set(t,s)},stop(t){ls.removeBox(t,Sa.get(t)),Sa.delete(t)},beforeUpdate(t,e,i){const s=Sa.get(t);ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Da={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;et+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i-1?t.split("\n"):t}function Aa(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ta(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function La(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ea(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||La(t,e,i,s),yAlign:s}}function Ra(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:Z(g,0,s.width-e.width),y:Z(p,0,s.height-e.height)}}function Ia(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function za(t){return Ca([],Oa(t))}function Fa(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Va={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=Fa(i,t);Ca(e.before,Oa(Ba(n,"beforeLabel",this,t))),Ca(e.lines,Ba(n,"label",this,t)),Ca(e.after,Oa(Ba(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return za(Ba(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Ba(i,"beforeFooter",this,t),n=Ba(i,"footer",this,t),o=Ba(i,"afterFooter",this,t);let a=[];return a=Ca(a,Oa(s)),a=Ca(a,Oa(n)),a=Ca(a,Oa(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Fa(t.callbacks,e);s.push(Ba(i,"labelColor",this,e)),n.push(Ba(i,"labelPointStyle",this,e)),o.push(Ba(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Da[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ta(this,i),a=Object.assign({},t,e),r=Ea(this.chart,i,a),l=Ra(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ia(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ia(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Da[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ta(this,t),a=Object.assign({},i,this._size),r=Ea(e,t,a),l=Ra(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Da[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Na={id:"tooltip",_element:Wa,positioners:Da,afterInit(t,e,i){i&&(t.tooltip=new Wa({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Va},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return Tn.register(Un,$o,go,t),Tn.helpers={...Hi},Tn._adapters=In,Tn.Animation=As,Tn.Animations=Ts,Tn.animator=bt,Tn.controllers=nn.controllers.items,Tn.DatasetController=js,Tn.Element=$s,Tn.elements=go,Tn.Interaction=Ki,Tn.layouts=ls,Tn.platforms=Ds,Tn.Scale=tn,Tn.Ticks=ae,Object.assign(Tn,Un,$o,go,t,Ds),Tn.Chart=Tn,"undefined"!=typeof window&&(window.Chart=Tn),Tn})); +//# sourceMappingURL=chart.umd.min.js.map diff --git a/public/categories.php b/public/categories.php new file mode 100644 index 0000000..ef082c2 --- /dev/null +++ b/public/categories.php @@ -0,0 +1,117 @@ +prepare(" + INSERT INTO categories (user_id, category_type, name, sort_order, is_active) + VALUES (?, ?, ?, ?, 1) + "); + $stmt->execute([$uid, $type, $name, $sort]); + + redirect('/categories.php'); + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$stmt = $pdo->prepare(" + SELECT * + FROM categories + WHERE user_id = ? + ORDER BY category_type, sort_order, id +"); +$stmt->execute([$uid]); +$list = $stmt->fetchAll(); + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

카테고리 관리

+
+ + +
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ID유형이름정렬활성
+
+
+
+
+ + \ No newline at end of file diff --git a/public/dashboard.php b/public/dashboard.php new file mode 100644 index 0000000..c525329 --- /dev/null +++ b/public/dashboard.php @@ -0,0 +1,498 @@ +prepare(" + SELECT + COALESCE(SUM(CASE WHEN transaction_type = 'income' THEN amount ELSE 0 END), 0) AS income_total, + COALESCE(SUM(CASE WHEN transaction_type = 'expense' THEN amount ELSE 0 END), 0) AS expense_total, + COALESCE(SUM(CASE WHEN transaction_type = 'card_payment' THEN amount ELSE 0 END), 0) AS card_payment_total + FROM transactions + WHERE user_id = ? + AND transaction_date BETWEEN ? AND ? +"); +$stmt->execute([$uid, $start, $end]); +$summary = $stmt->fetch(); + +$stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(CASE WHEN account_type IN ('bank','cash','other') THEN current_balance ELSE 0 END), 0) AS liquid_assets + FROM accounts + WHERE user_id = ? + AND is_active = 1 +"); +$stmt->execute([$uid]); +$assetSummary = $stmt->fetch(); + +$stmt = $pdo->prepare(" + SELECT COALESCE(SUM(t.amount), 0) + FROM transactions t + JOIN accounts a ON a.id = t.account_id + WHERE t.user_id = ? + AND t.transaction_type = 'expense' + AND a.account_type = 'card' + AND a.card_kind = 'credit' + AND t.billing_year_month = ? + AND COALESCE(t.is_installment, 0) = 0 +"); +$stmt->execute([$uid, $ym]); +$cardDueThisMonth = (float)$stmt->fetchColumn(); + +$stmt = $pdo->prepare(" + SELECT COALESCE(SUM(t.amount), 0) + FROM transactions t + JOIN accounts a ON a.id = t.account_id + WHERE t.user_id = ? + AND t.transaction_type = 'expense' + AND a.account_type = 'card' + AND a.card_kind = 'credit' + AND t.billing_year_month = ? + AND COALESCE(t.is_installment, 0) = 0 +"); +$stmt->execute([$uid, $nextYm]); +$cardDueNextMonth = (float)$stmt->fetchColumn(); + +$installmentDueNextMonth = get_installment_due_this_month($uid, $nextYm); +$cardTotalDueNextMonth = $cardDueNextMonth + $installmentDueNextMonth; + +$installmentDueThisMonth = get_installment_due_this_month($uid, $ym); +$installmentRemainingPrincipal = get_installment_remaining_principal($uid); +$installmentRemainingInterest = get_installment_remaining_interest($uid); +$installmentRemainingTotal = get_installment_remaining_total($uid); + +$cardTotalDueThisMonth = $cardDueThisMonth + $installmentDueThisMonth; + +$stmt = $pdo->prepare(" + SELECT c.name, SUM(t.amount) AS total_amount + FROM transactions t + JOIN categories c ON t.category_id = c.id + WHERE t.user_id = ? + AND t.transaction_type = 'expense' + AND t.transaction_date BETWEEN ? AND ? + GROUP BY c.id, c.name + ORDER BY total_amount DESC + LIMIT 8 +"); +$stmt->execute([$uid, $start, $end]); +$expenseByCategory = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT + DATE_FORMAT(transaction_date, '%d') AS day_num, + COALESCE(SUM(CASE WHEN transaction_type = 'expense' THEN amount ELSE 0 END), 0) AS daily_expense + FROM transactions + WHERE user_id = ? + AND transaction_date BETWEEN ? AND ? + GROUP BY DATE_FORMAT(transaction_date, '%Y-%m-%d'), DATE_FORMAT(transaction_date, '%d') + ORDER BY DATE_FORMAT(transaction_date, '%Y-%m-%d') ASC +"); +$stmt->execute([$uid, $start, $end]); +$dailyRows = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT * + FROM accounts + WHERE user_id = ? + AND is_active = 1 + ORDER BY FIELD(account_type, 'bank', 'card', 'cash', 'other'), id ASC +"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(scheduled_principal), 0) AS due_principal, + COALESCE(SUM(scheduled_interest), 0) AS due_interest, + COALESCE(SUM(scheduled_total), 0) AS due_total + FROM loan_schedules ls + JOIN loans l ON l.id = ls.loan_id + WHERE l.user_id = ? + AND ls.is_paid = 0 + AND ls.due_date BETWEEN ? AND ? +"); +$stmt->execute([$uid, $start, $end]); +$loanDue = $stmt->fetch(); + +$stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(scheduled_principal), 0) AS overdue_principal, + COALESCE(SUM(scheduled_interest), 0) AS overdue_interest, + COALESCE(SUM(scheduled_total), 0) AS overdue_total + FROM loan_schedules ls + JOIN loans l ON l.id = ls.loan_id + WHERE l.user_id = ? + AND ls.is_paid = 0 + AND ls.due_date < ? +"); +$stmt->execute([$uid, $today]); +$loanOverdue = $stmt->fetch(); + +$stmt = $pdo->prepare(" + SELECT COALESCE(SUM(current_principal_balance), 0) AS remaining_principal + FROM loans + WHERE user_id = ? + AND status = 'active' +"); +$stmt->execute([$uid]); +$loanPrincipalRow = $stmt->fetch(); + +$stmt = $pdo->prepare(" + SELECT + COALESCE(SUM(CASE WHEN ls.is_paid = 0 THEN ls.scheduled_interest ELSE 0 END), 0) AS remaining_interest, + COALESCE(SUM(CASE WHEN ls.is_paid = 0 THEN ls.scheduled_total ELSE 0 END), 0) AS remaining_total + FROM loan_schedules ls + JOIN loans l ON l.id = ls.loan_id + WHERE l.user_id = ? + AND l.status = 'active' +"); +$stmt->execute([$uid]); +$loanRemaining = $stmt->fetch(); + +$stmt = $pdo->prepare(" + SELECT + DATE_FORMAT(payment_date, '%d') AS day_num, + COALESCE(SUM(total_amount), 0) AS daily_loan_payment + FROM loan_payments + WHERE user_id = ? + AND payment_date BETWEEN ? AND ? + GROUP BY DATE_FORMAT(payment_date, '%Y-%m-%d'), DATE_FORMAT(payment_date, '%d') + ORDER BY DATE_FORMAT(payment_date, '%Y-%m-%d') ASC +"); +$stmt->execute([$uid, $start, $end]); +$loanPaymentRows = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT + l.loan_name, + l.lender_name, + ls.due_date, + ls.scheduled_principal, + ls.scheduled_interest, + ls.scheduled_total + FROM loan_schedules ls + JOIN loans l ON l.id = ls.loan_id + WHERE l.user_id = ? + AND ls.is_paid = 0 + AND ls.due_date BETWEEN ? AND ? + ORDER BY ls.due_date ASC, l.id ASC + LIMIT 10 +"); +$stmt->execute([$uid, $start, $end]); +$loanUpcoming = $stmt->fetchAll(); + +$liquidAssets = (float)($assetSummary['liquid_assets'] ?? 0); + +$incomeTotal = (float)($summary['income_total'] ?? 0); +$expenseTotal = (float)($summary['expense_total'] ?? 0); +$cardPaymentTotal = (float)($summary['card_payment_total'] ?? 0); + +$loanDuePrincipal = (float)($loanDue['due_principal'] ?? 0); +$loanDueInterest = (float)($loanDue['due_interest'] ?? 0); +$loanDueTotal = (float)($loanDue['due_total'] ?? 0); + +$loanOverduePrincipal = (float)($loanOverdue['overdue_principal'] ?? 0); +$loanOverdueInterest = (float)($loanOverdue['overdue_interest'] ?? 0); +$loanOverdueTotal = (float)($loanOverdue['overdue_total'] ?? 0); + +$loanRemainingPrincipal = (float)($loanPrincipalRow['remaining_principal'] ?? 0); +$loanRemainingInterest = (float)($loanRemaining['remaining_interest'] ?? 0); +$loanRemainingTotal = (float)($loanRemaining['remaining_total'] ?? 0); + +$netCashFlow = $incomeTotal - $expenseTotal - $loanDueTotal; + +$categoryLabels = array_map(fn($r) => $r['name'], $expenseByCategory); +$categoryValues = array_map(fn($r) => (float)$r['total_amount'], $expenseByCategory); + +$dayLabels = array_map(fn($r) => $r['day_num'] . '일', $dailyRows); +$dayValues = array_map(fn($r) => (float)$r['daily_expense'], $dailyRows); + +$loanDayLabels = array_map(fn($r) => $r['day_num'] . '일', $loanPaymentRows); +$loanDayValues = array_map(fn($r) => (float)$r['daily_loan_payment'], $loanPaymentRows); + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

대시보드

+
+ + +
+
+ +
+
+
+
+
이번 달 수입
+
+
+
+
+ +
+
+
+
이번 달 지출
+
+
+
+
+ +
+
+
+
이번 달 카드 총청구액
+
+
+ 일반 · 할부 +
+
+
+
+ +
+
+
+
이번 달 대출 납부 예정액
+
+
+ 원금 · 이자 +
+
+
+
+
+ +
+
+
+
+
유동자산 합계
+
+
+
+
+ +
+
+
+
다음달 카드 예정액
+
+
+ 일반 · 할부 +
+
+
+
+ +
+
+
+
남은 할부 총액
+
+
+ 원금 · 이자 +
+
+
+
+ +
+
+
+
대출 미납액
+
+
+ 원금 · 이자 +
+
+
+
+
+ +
+
+
+
+
남은 대출 원금
+
+
+
+
+ +
+
+
+
남은 대출 이자
+
+
+
+
+ +
+
+
+
이번 달 순현금흐름
+
+ +
+
수입 - 지출 - 대출예정
+
+
+
+
+ + + +
+
+
+
카테고리별 지출
+
+ +
+
+
+ +
+
+
일자별 지출
+
+ +
+
+
+ +
+
+
일자별 대출 납부
+
+ +
+
+
+
+ +
+
+
+
이번 달 대출 납부 예정
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
대출명기관납부일원금이자합계
이번 달 대출 납부 예정이 없습니다.
+
+
+
+
+ + + + \ No newline at end of file diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1c1f7934d1ca66a66d6c7ec03877edf31ae0e420 GIT binary patch literal 488250 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 z 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 z�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%0DWFTPox=YegXYbSG(6m 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

H^4G!`R)ZD81DyALEO*S%id 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 D@}^{i literal 0 HcmV?d00001 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..9081e29 --- /dev/null +++ b/public/index.php @@ -0,0 +1,3 @@ +prepare(" + SELECT s.installment_id + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + WHERE s.id = ? + AND i.user_id = ? + "); + $stmt->execute([$scheduleId, $uid]); + $row = $stmt->fetch(); + + if (!$row) { + throw new RuntimeException('회차를 찾을 수 없습니다.'); + } + + $stmt = $pdo->prepare(" + UPDATE installment_schedules s + JOIN installments i ON i.id = s.installment_id + SET s.is_billed = 1, + s.billed_at = NOW() + WHERE s.id = ? + AND i.user_id = ? + "); + $stmt->execute([$scheduleId, $uid]); + + recalculate_installment_status((int)$row['installment_id']); + $msg = '청구완료 처리되었습니다.'; + } + + if ($mode === 'mark_unbilled') { + $scheduleId = (int)($_POST['schedule_id'] ?? 0); + + $stmt = $pdo->prepare(" + SELECT s.installment_id + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + WHERE s.id = ? + AND i.user_id = ? + "); + $stmt->execute([$scheduleId, $uid]); + $row = $stmt->fetch(); + + if (!$row) { + throw new RuntimeException('회차를 찾을 수 없습니다.'); + } + + $stmt = $pdo->prepare(" + UPDATE installment_schedules s + JOIN installments i ON i.id = s.installment_id + SET s.is_billed = 0, + s.billed_at = NULL + WHERE s.id = ? + AND i.user_id = ? + "); + $stmt->execute([$scheduleId, $uid]); + + recalculate_installment_status((int)$row['installment_id']); + $msg = '청구완료 취소되었습니다.'; + } + + if ($mode === 'mark_month_all_billed' || $mode === 'mark_month_all_unbilled') { + $targetYm = trim($_POST['target_ym'] ?? ''); + + if ($targetYm === '') { + throw new RuntimeException('대상 월이 없습니다.'); + } + + $wantBilled = ($mode === 'mark_month_all_billed'); + $fromState = $wantBilled ? 0 : 1; + + $params = [$uid, $targetYm]; + $sql = " + SELECT s.id, s.installment_id + FROM installment_schedules s + JOIN installments i ON i.id = s.installment_id + JOIN transactions t ON t.id = i.transaction_id + WHERE i.user_id = ? + AND s.bill_year_month = ? + AND s.is_billed = ? + "; + $params[] = $fromState; + + if ($accountId > 0) { + $sql .= " AND i.account_id = ? "; + $params[] = $accountId; + } + + if ($q !== '') { + $sql .= " AND (t.merchant_name LIKE ? OR t.description LIKE ?) "; + $like = '%' . $q . '%'; + $params[] = $like; + $params[] = $like; + } + + $stmt = $pdo->prepare($sql); + $stmt->execute($params); + $rows = $stmt->fetchAll(); + + if ($rows) { + $scheduleIds = array_column($rows, 'id'); + $installmentIds = array_values(array_unique(array_column($rows, 'installment_id'))); + + $placeholders = implode(',', array_fill(0, count($scheduleIds), '?')); + + if ($wantBilled) { + $stmt = $pdo->prepare(" + UPDATE installment_schedules + SET is_billed = 1, + billed_at = NOW() + WHERE id IN ($placeholders) + "); + } else { + $stmt = $pdo->prepare(" + UPDATE installment_schedules + SET is_billed = 0, + billed_at = NULL + WHERE id IN ($placeholders) + "); + } + + $stmt->execute($scheduleIds); + + foreach ($installmentIds as $iid) { + recalculate_installment_status((int)$iid); + } + } + + $msg = $wantBilled + ? $targetYm . ' 조회건 전체 청구완료 처리되었습니다.' + : $targetYm . ' 조회건 전체 취소되었습니다.'; + } + + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$params = [$uid, $ym]; +$where = [ + "i.user_id = ?", + "s.bill_year_month = ?" +]; + +if ($accountId > 0) { + $where[] = "i.account_id = ?"; + $params[] = $accountId; +} + +if ($q !== '') { + $where[] = "(t.merchant_name LIKE ? OR t.description LIKE ? OR a.account_name LIKE ?)"; + $like = '%' . $q . '%'; + $params[] = $like; + $params[] = $like; + $params[] = $like; +} + +$sql = " +SELECT + s.id AS schedule_id, + s.installment_id, + s.cycle_no, + s.bill_year_month, + s.principal_amount, + s.interest_amount, + s.total_amount, + s.is_billed, + s.billed_at, + + i.installment_months, + i.annual_interest_rate, + + a.account_name, + a.institution_name, + + t.merchant_name, + t.description + +FROM installment_schedules s +JOIN installments i ON i.id = s.installment_id +JOIN accounts a ON a.id = i.account_id +JOIN transactions t ON t.id = i.transaction_id +WHERE " . implode(' AND ', $where) . " +ORDER BY s.is_billed ASC, a.account_name ASC, s.cycle_no ASC, s.id ASC +"; + +$stmt = $pdo->prepare($sql); +$stmt->execute($params); +$list = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" +SELECT id, account_name, institution_name +FROM accounts +WHERE user_id = ? + AND is_active = 1 + AND account_type = 'card' +ORDER BY id ASC +"); +$stmt->execute([$uid]); +$cardAccounts = $stmt->fetchAll(); + +$summaryStmt = $pdo->prepare(" +SELECT + COALESCE(SUM(CASE WHEN s.is_billed=0 THEN s.principal_amount ELSE 0 END),0) AS unbilled_principal, + COALESCE(SUM(CASE WHEN s.is_billed=0 THEN s.interest_amount ELSE 0 END),0) AS unbilled_interest, + COALESCE(SUM(CASE WHEN s.is_billed=0 THEN s.total_amount ELSE 0 END),0) AS unbilled_total, + COALESCE(SUM(CASE WHEN s.is_billed=1 THEN s.total_amount ELSE 0 END),0) AS billed_total +FROM installment_schedules s +JOIN installments i ON i.id = s.installment_id +JOIN transactions t ON t.id = i.transaction_id +JOIN accounts a ON a.id = i.account_id +WHERE " . implode(' AND ', $where)); + +$summaryStmt->execute($params); +$summary = $summaryStmt->fetch(); + +require __DIR__ . '/../app/views/header.php'; +?> + +

+ + +
+ + + +
+ + +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+
미청구 원금
+
+
+
+
+ +
+
+
+
미청구 이자
+
+
+
+
+ +
+
+
+
미청구 합계
+
+
+
+
+ +
+
+
+
청구완료 합계
+
+
+
+
+ +
+ +
+
+ + + +
+ +
+ + + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
카드사용처회차청구월원금이자합계상태관리
+
+
+
+
+
+
연이자율 %
+
/ + + 청구완료 + +
+ +
+ + + 미청구 + +
+ +
+ + + +
+ +
+ + + +
+ +
조회 결과가 없습니다.
+
+
+ + \ No newline at end of file diff --git a/public/installment_prepay.php b/public/installment_prepay.php new file mode 100644 index 0000000..87cb441 --- /dev/null +++ b/public/installment_prepay.php @@ -0,0 +1,554 @@ +prepare(" + SELECT + i.*, + a.account_name, + a.institution_name, + t.transaction_date, + t.merchant_name, + t.description, + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.principal_amount ELSE 0 END), 0) AS remaining_principal, + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.interest_amount ELSE 0 END), 0) AS remaining_interest, + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.total_amount ELSE 0 END), 0) AS remaining_total, + COALESCE(SUM(CASE WHEN s.is_billed = 1 THEN s.total_amount ELSE 0 END), 0) AS billed_total, + COALESCE(MIN(CASE WHEN s.is_billed = 0 THEN s.cycle_no ELSE NULL END), 0) AS next_cycle + FROM installments i + JOIN accounts a ON a.id = i.account_id + JOIN transactions t ON t.id = i.transaction_id + LEFT JOIN installment_schedules s ON s.installment_id = i.id + WHERE i.id = ? + AND i.user_id = ? + GROUP BY + i.id, i.user_id, i.transaction_id, i.account_id, + i.principal_amount, i.interest_total, i.total_billed_amount, + i.installment_months, i.annual_interest_rate, i.start_year_month, + i.interest_type, i.current_cycle, i.is_completed, + i.prepaid_principal_amount, i.prepaid_interest_amount, + i.created_at, i.updated_at, + a.account_name, a.institution_name, + t.transaction_date, t.merchant_name, t.description +"); +$stmt->execute([$installmentId, $uid]); +$installment = $stmt->fetch(); + +if (!$installment) { + require __DIR__ . '/../app/views/header.php'; + ?> + +
+

할부 선결제 / 중도상환

+ 할부내역 +
+ +
+
+
할부 정보를 찾을 수 없습니다.
+
+ 이미 초기화되었거나 삭제된 할부 내역일 수 있습니다. +
+ +
+ 할부내역으로 이동 + +
+
+
+ + prepare(" + SELECT * + FROM accounts + WHERE user_id = ? + AND is_active = 1 + AND account_type IN ('bank','cash','other') + ORDER BY FIELD(account_type, 'bank', 'cash', 'other'), id ASC +"); +$stmt->execute([$uid]); +$paymentAccounts = $stmt->fetchAll(); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $paymentAccountId = (int)($_POST['payment_account_id'] ?? 0); + $prepayDate = $_POST['prepay_date'] ?? date('Y-m-d'); + $prepayPrincipal = (float)str_replace(',', '', (string)($_POST['prepay_principal_amount'] ?? 0)); + $prepayInterest = (float)str_replace(',', '', (string)($_POST['prepay_interest_amount'] ?? 0)); + $description = trim($_POST['description'] ?? '') ?: null; + + $targetScheduleId = !empty($_POST['target_schedule_id']) + ? (int)$_POST['target_schedule_id'] + : null; + + if ($paymentAccountId <= 0) { + throw new RuntimeException('결제 계좌를 선택하세요.'); + } + + prepay_installment( + $uid, + $installmentId, + $paymentAccountId, + $prepayDate, + $prepayPrincipal, + $prepayInterest, + $description, + $targetScheduleId + ); + + $msg = '선결제/중도상환이 처리되었습니다.'; + + $stmt = $pdo->prepare(" + SELECT + i.*, + a.account_name, + a.institution_name, + t.transaction_date, + t.merchant_name, + t.description, + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.principal_amount ELSE 0 END), 0) AS remaining_principal, + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.interest_amount ELSE 0 END), 0) AS remaining_interest, + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.total_amount ELSE 0 END), 0) AS remaining_total, + COALESCE(SUM(CASE WHEN s.is_billed = 1 THEN s.total_amount ELSE 0 END), 0) AS billed_total, + COALESCE(MIN(CASE WHEN s.is_billed = 0 THEN s.cycle_no ELSE NULL END), 0) AS next_cycle + FROM installments i + JOIN accounts a ON a.id = i.account_id + JOIN transactions t ON t.id = i.transaction_id + LEFT JOIN installment_schedules s ON s.installment_id = i.id + WHERE i.id = ? + AND i.user_id = ? + GROUP BY + i.id, i.user_id, i.transaction_id, i.account_id, + i.principal_amount, i.interest_total, i.total_billed_amount, + i.installment_months, i.annual_interest_rate, i.start_year_month, + i.interest_type, i.current_cycle, i.is_completed, + i.prepaid_principal_amount, i.prepaid_interest_amount, + i.created_at, i.updated_at, + a.account_name, a.institution_name, + t.transaction_date, t.merchant_name, t.description + "); + $stmt->execute([$installmentId, $uid]); + $installment = $stmt->fetch(); + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$stmt = $pdo->prepare(" + SELECT * + FROM installment_schedules + WHERE installment_id = ? + ORDER BY cycle_no ASC +"); +$stmt->execute([$installmentId]); +$schedules = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT * + FROM installment_prepayments + WHERE installment_id = ? + AND user_id = ? + ORDER BY prepay_date DESC, id DESC +"); +$stmt->execute([$installmentId, $uid]); +$prepayments = $stmt->fetchAll(); + +$remainingPrincipal = (float)($installment['remaining_principal'] ?? 0); +$remainingInterest = (float)($installment['remaining_interest'] ?? 0); +$remainingTotal = (float)($installment['remaining_total'] ?? 0); +$totalBilled = (float)($installment['total_billed_amount'] ?? 0); +$billedTotal = (float)($installment['billed_total'] ?? 0); + +$progress = $totalBilled > 0 ? (($totalBilled - $remainingTotal) / $totalBilled) * 100 : 0; +$progress = max(0, min(100, $progress)); +$barWidth = $progress > 0 ? max($progress, 2) : 0; + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

할부 선결제 / 중도상환

+ +
+ + +
+ + + +
+ + +
+
+
+
+
+
+
/
+
+
+ + + 0 ? '진행중' : '완료' ?> + +
+ +
+ 결제일 + · 시작 청구월 + · 개월 + +
+ +
+ +
+
+
남은 원금
+
+
+
+
남은 이자
+
+
+
+
남은 총액
+
+
+
+
연이자율
+
%
+
+
+
총 청구금액
+
+
+
+
청구완료 금액
+
+
+
+ +
+
+
+
+
+ 진행률 + 0): ?> + · 다음 회차 + +
+
+
+
+ +
+
+
선결제 입력
+ + +
+ 남아있는 할부 금액이 없습니다. +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+ +
+ + +
+ + +
+
+ +
+
+
빠른 입력
+
남은 금액 전체를 선결제하려면 전체상환 버튼을 사용하세요.
+
+ + +
+
+
+ +
+ + +
+ +
+ + 취소 +
+
+ +
+
+
+ +
+
+
+
남은 회차 상세
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
회차청구월원금이자합계상태선납
회차 + + 청구완료 + + 미청구 + + + 0): ?> + + + - + +
회차 정보가 없습니다.
+
+
+
+ +
+
+
선결제 이력
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
일자원금이자합계메모
선결제 이력이 없습니다.
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/public/installments.php b/public/installments.php new file mode 100644 index 0000000..54eba4f --- /dev/null +++ b/public/installments.php @@ -0,0 +1,325 @@ +getMessage(); + } +} + +$ym = $_GET['ym'] ?? ''; +$accountId = (int)($_GET['account_id'] ?? 0); +$q = trim($_GET['q'] ?? ''); + +$params = [$uid]; +$where = ["i.user_id = ?"]; + +if ($ym !== '') { + $where[] = "i.start_year_month = ?"; + $params[] = $ym; +} + +if ($accountId > 0) { + $where[] = "i.account_id = ?"; + $params[] = $accountId; +} + +if ($q !== '') { + $where[] = "(t.merchant_name LIKE ? OR t.description LIKE ? OR a.account_name LIKE ?)"; + $like = '%' . $q . '%'; + $params[] = $like; + $params[] = $like; + $params[] = $like; +} + +$sql = " + SELECT + i.*, + a.account_name, + a.institution_name, + t.transaction_date, + t.merchant_name, + t.description, + + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.principal_amount ELSE 0 END), 0) AS remaining_principal, + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.interest_amount ELSE 0 END), 0) AS remaining_interest, + COALESCE(SUM(CASE WHEN s.is_billed = 0 THEN s.total_amount ELSE 0 END), 0) AS remaining_total, + + COALESCE(SUM(CASE WHEN s.is_billed = 1 THEN s.total_amount ELSE 0 END), 0) AS billed_total, + COALESCE(MIN(CASE WHEN s.is_billed = 0 THEN s.cycle_no ELSE NULL END), 0) AS next_cycle + FROM installments i + JOIN accounts a ON a.id = i.account_id + JOIN transactions t ON t.id = i.transaction_id + LEFT JOIN installment_schedules s ON s.installment_id = i.id + WHERE " . implode(' AND ', $where) . " + GROUP BY + i.id, i.user_id, i.transaction_id, i.account_id, + i.principal_amount, i.interest_total, i.total_billed_amount, + i.installment_months, i.annual_interest_rate, i.start_year_month, + i.interest_type, i.current_cycle, i.is_completed, + i.prepaid_principal_amount, i.prepaid_interest_amount, + i.created_at, i.updated_at, + a.account_name, a.institution_name, + t.transaction_date, t.merchant_name, t.description + ORDER BY i.created_at DESC, i.id DESC +"; + +$stmt = $pdo->prepare($sql); +$stmt->execute($params); +$installments = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT id, account_name, institution_name + FROM accounts + WHERE user_id = ? + AND is_active = 1 + AND account_type = 'card' + ORDER BY id ASC +"); +$stmt->execute([$uid]); +$cardAccounts = $stmt->fetchAll(); + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

할부 내역

+ +
+ + 할부 청구 관리 + + +
+ + + +
+
+
+ + +
+ + + +
+ + +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + 초기화 +
+
+
+
+ +
+ + 0) { + $progress = (($row['total_billed_amount'] - $row['remaining_total']) / (float)$row['total_billed_amount']) * 100; + $progress = max(0, min(100, $progress)); + } + + $scheduleStmt = $pdo->prepare(" + SELECT * + FROM installment_schedules + WHERE installment_id = ? + ORDER BY cycle_no ASC + "); + $scheduleStmt->execute([$row['id']]); + $schedules = $scheduleStmt->fetchAll(); + ?> +
+
+
+
+
+
/
+
+
+ 결제일 + + · + +
+
+ +
+ + 0 ? '진행중' : '완료' ?> + +
연이자율 %
+
+
+ +
+
+
원금
+
+
+
+
총 할부이자
+
+
+
+
총 청구금액
+
+
+
+
개월 수
+
개월
+
+ +
+
남은 원금
+
+
+
+
남은 이자
+
+
+
+
남은 총액
+
+
+
+
다음 회차
+
0 ? ((int)$row['next_cycle'] . '회차') : '-' ?>
+
+
+ +
+
+
+
+
진행률 %
+
+ +
+ + + 0): ?> + 선결제 / 중도상환 + + + + 청구관리로 보기 + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
회차청구월원금이자합계상태
회차 + + 청구완료 + + 미청구 + +
회차 정보가 없습니다.
+
+
+ +
+
+
+ + + +
+
+
+ 등록된 할부 내역이 없습니다. +
+
+
+ +
+ + \ No newline at end of file diff --git a/public/loan_create.php b/public/loan_create.php new file mode 100644 index 0000000..1c012eb --- /dev/null +++ b/public/loan_create.php @@ -0,0 +1,247 @@ +prepare(" + SELECT * FROM accounts + WHERE user_id = ? + AND is_active = 1 + AND account_type IN ('bank','cash','other') + ORDER BY id ASC +"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $loanName = trim($_POST['loan_name'] ?? ''); + $lenderName = trim($_POST['lender_name'] ?? ''); + $principalAmount = (float)($_POST['principal_amount'] ?? 0); + $annualInterestRate = (float)($_POST['annual_interest_rate'] ?? 0); + $startDate = $_POST['start_date'] ?? date('Y-m-d'); + $graceMonths = (int)($_POST['grace_period_months'] ?? 0); + $repaymentMonths = (int)($_POST['repayment_months'] ?? 0); + $repaymentMethod = $_POST['repayment_method'] ?? ''; + $paymentDay = (int)($_POST['payment_day'] ?? 1); + $accountId = !empty($_POST['account_id']) ? (int)$_POST['account_id'] : null; + $description = trim($_POST['description'] ?? ''); + $createFullHistory = !empty($_POST['create_full_history']) ? 1 : 0; + + if ($loanName === '') { + throw new RuntimeException('대출명을 입력하세요.'); + } + + if ($principalAmount <= 0) { + throw new RuntimeException('대출원금은 0보다 커야 합니다.'); + } + + if ($annualInterestRate < 0) { + throw new RuntimeException('연이자율이 올바르지 않습니다.'); + } + + if ($repaymentMonths <= 0) { + throw new RuntimeException('상환개월 수는 1 이상이어야 합니다.'); + } + + if ($paymentDay < 1 || $paymentDay > 31) { + throw new RuntimeException('납부일은 1~31 사이여야 합니다.'); + } + + $allowed = [ + 'interest_only_then_equal_payment', + 'interest_only_then_equal_principal', + 'interest_only_then_bullet', + 'equal_payment', + 'equal_principal', + 'bullet', + ]; + + if (!in_array($repaymentMethod, $allowed, true)) { + throw new RuntimeException('상환방식이 올바르지 않습니다.'); + } + + if ($createFullHistory && !$accountId) { + throw new RuntimeException('완전 반영 방식을 사용할 때는 입출금 계좌를 선택하세요.'); + } + + create_loan_with_full_backfill([ + 'user_id' => $uid, + 'account_id' => $accountId, + 'loan_name' => $loanName, + 'lender_name' => $lenderName, + 'principal_amount' => $principalAmount, + 'annual_interest_rate' => $annualInterestRate, + 'start_date' => $startDate, + 'maturity_date' => null, + 'grace_period_months' => $graceMonths, + 'repayment_months' => $repaymentMonths, + 'repayment_method' => $repaymentMethod, + 'payment_day' => $paymentDay, + 'description' => $description, + 'create_full_history' => $createFullHistory, + 'today_date' => date('Y-m-d'), + ]); + + redirect('/loans.php'); + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +require __DIR__ . '/../app/views/header.php'; +?> + + + +
+

대출 등록

+ 목록 +
+ + +
+ + +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
과거 거래까지 자동 생성하려면 계좌를 선택하세요.
+
+ +
+ + +
+ +
+
+
완전 반영 방식
+
+ 대출 시작일이 과거라면, 대출 실행 거래와 오늘까지의 과거 상환 거래를 자동으로 모두 생성합니다. + 미래 회차는 예정 스케줄로 남겨둡니다. +
+ +
+
+ + + + 예: 2024년에 받은 대출을 지금 등록하면
+ 대출 실행일의 유입 거래 1건 + 오늘까지 도래한 상환 거래들이 자동 생성됩니다. +
+
+
+
+
+ +
+ + 목록 +
+
+
+
+ + \ No newline at end of file diff --git a/public/loan_detail.php b/public/loan_detail.php new file mode 100644 index 0000000..3b4bdf0 --- /dev/null +++ b/public/loan_detail.php @@ -0,0 +1,206 @@ +prepare(" + SELECT * + FROM loans + WHERE id = ? AND user_id = ? +"); +$stmt->execute([$id, $uid]); +$loan = $stmt->fetch(); + +if (!$loan) { + exit('대출 정보를 찾을 수 없습니다.'); +} + +$stmt = $pdo->prepare(" + SELECT * FROM accounts + WHERE user_id = ? + AND is_active = 1 + AND account_type IN ('bank','cash','other') + ORDER BY id ASC +"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $scheduleId = (int)($_POST['schedule_id'] ?? 0); + $accountId = !empty($_POST['account_id']) ? (int)$_POST['account_id'] : null; + $paymentDate = $_POST['payment_date'] ?? date('Y-m-d'); + $description = trim($_POST['description'] ?? '') ?: null; + + pay_loan_schedule($uid, $scheduleId, $accountId, $paymentDate, $description); + $msg = '상환 처리되었습니다.'; + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$stmt = $pdo->prepare(" + SELECT + ls.*, + lp.payment_date, + lp.description AS payment_description, + lp.is_auto_generated, + lp.payment_type + FROM loan_schedules ls + LEFT JOIN loan_payments lp + ON lp.loan_schedule_id = ls.id + WHERE ls.loan_id = ? + ORDER BY ls.cycle_no ASC +"); +$stmt->execute([$id]); +$schedules = $stmt->fetchAll(); + +$summary = get_loan_remaining_summary($id); + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

대출 상세

+
+ + 중도상환 + + 목록 +
+
+ + +
+ + + +
+ + +
+
+
+
+ +
+
+
원금
+
+
+
+
연이자율
+
%
+
+
+
거치기간
+
개월
+
+
+
상환기간
+
개월
+
+ +
+
남은 원금
+
+
+
+
남은 이자
+
+
+
+
남은 총액
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
회차납부일구간기초원금원금이자합계기말원금상태처리
+ + + 자동반영 + + 납부완료 + + + +
+ + + +
+ + + 예정 + +
+ +
+ + + + +
+ + - + +
스케줄이 없습니다.
+
+
+ + \ No newline at end of file diff --git a/public/loan_edit.php b/public/loan_edit.php new file mode 100644 index 0000000..471a3ad --- /dev/null +++ b/public/loan_edit.php @@ -0,0 +1,223 @@ +prepare(" + SELECT * + FROM loans + WHERE id = ? AND user_id = ? + LIMIT 1 +"); +$stmt->execute([$id, $uid]); +$loan = $stmt->fetch(); + +if (!$loan) { + exit('대출 정보를 찾을 수 없습니다.'); +} + +$stmt = $pdo->prepare(" + SELECT * FROM accounts + WHERE user_id = ? + AND is_active = 1 + AND account_type IN ('bank','cash','other') + ORDER BY id ASC +"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $loanName = trim($_POST['loan_name'] ?? ''); + $lenderName = trim($_POST['lender_name'] ?? ''); + $principalAmount = (float)($_POST['principal_amount'] ?? 0); + $annualInterestRate = (float)($_POST['annual_interest_rate'] ?? 0); + $startDate = $_POST['start_date'] ?? date('Y-m-d'); + $graceMonths = (int)($_POST['grace_period_months'] ?? 0); + $repaymentMonths = (int)($_POST['repayment_months'] ?? 0); + $repaymentMethod = $_POST['repayment_method'] ?? ''; + $paymentDay = (int)($_POST['payment_day'] ?? 1); + $accountId = !empty($_POST['account_id']) ? (int)$_POST['account_id'] : null; + $description = trim($_POST['description'] ?? ''); + $createFullHistory = !empty($_POST['create_full_history']) ? 1 : 0; + + if ($loanName === '') { + throw new RuntimeException('대출명을 입력하세요.'); + } + + if ($principalAmount <= 0) { + throw new RuntimeException('대출원금은 0보다 커야 합니다.'); + } + + if ($annualInterestRate < 0) { + throw new RuntimeException('연이자율이 올바르지 않습니다.'); + } + + if ($repaymentMonths <= 0) { + throw new RuntimeException('상환개월 수는 1 이상이어야 합니다.'); + } + + if ($paymentDay < 1 || $paymentDay > 31) { + throw new RuntimeException('납부일은 1~31 사이여야 합니다.'); + } + + $allowed = [ + 'interest_only_then_equal_payment', + 'interest_only_then_equal_principal', + 'interest_only_then_bullet', + 'equal_payment', + 'equal_principal', + 'bullet', + ]; + + if (!in_array($repaymentMethod, $allowed, true)) { + throw new RuntimeException('상환방식이 올바르지 않습니다.'); + } + + update_loan_and_rebuild_full_history($uid, $id, [ + 'account_id' => $accountId, + 'loan_name' => $loanName, + 'lender_name' => $lenderName, + 'principal_amount' => $principalAmount, + 'annual_interest_rate' => $annualInterestRate, + 'start_date' => $startDate, + 'grace_period_months' => $graceMonths, + 'repayment_months' => $repaymentMonths, + 'repayment_method' => $repaymentMethod, + 'payment_day' => $paymentDay, + 'description' => $description, + 'create_full_history' => $createFullHistory, + 'today_date' => date('Y-m-d'), + ]); + + header('Location: /loans.php'); + exit; + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

대출 수정

+ 목록 +
+ + +
+ + +
+
+
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+
수정 시 전체 재계산
+
+ 대출 정보를 수정하면 기존 스케줄과 자동반영 이력을 다시 생성합니다. +
+ +
+
+ + + + 과거 회차는 자동 반영, 미래 회차는 예정 상태로 다시 생성합니다. + +
+
+
+
+ +
+ + 취소 +
+
+
+
+ + \ No newline at end of file diff --git a/public/loan_payment_create.php b/public/loan_payment_create.php new file mode 100644 index 0000000..598d622 --- /dev/null +++ b/public/loan_payment_create.php @@ -0,0 +1,153 @@ +prepare("SELECT * FROM loans WHERE user_id = ? AND is_active = 1 ORDER BY id DESC"); +$stmt->execute([$uid]); +$loans = $stmt->fetchAll(); + +$stmt = $pdo->prepare("SELECT * FROM accounts WHERE user_id = ? AND is_active = 1 AND account_type IN ('bank','cash','other') ORDER BY id ASC"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +$stmt = $pdo->prepare("SELECT * FROM categories WHERE user_id = ? AND category_type = 'expense' AND is_active = 1 ORDER BY sort_order, id"); +$stmt->execute([$uid]); +$categories = $stmt->fetchAll(); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $loanId = (int)($_POST['loan_id'] ?? 0); + $accountId = (int)($_POST['account_id'] ?? 0); + $paymentDate = $_POST['payment_date'] ?? date('Y-m-d'); + $totalAmount = (float)($_POST['total_amount'] ?? 0); + $principalAmount = (float)($_POST['principal_amount'] ?? 0); + $interestAmount = (float)($_POST['interest_amount'] ?? 0); + $feeAmount = (float)($_POST['fee_amount'] ?? 0); + $categoryId = (int)($_POST['category_id'] ?? 0); + $description = trim($_POST['description'] ?? '') ?: null; + $skipDuplicate = isset($_POST['skip_duplicate']); + + if ($loanId <= 0 || $accountId <= 0 || $categoryId <= 0) { + throw new RuntimeException('대출, 출금계좌, 카테고리를 선택하세요.'); + } + if ($totalAmount <= 0) { + throw new RuntimeException('총 납부금액은 0보다 커야 합니다.'); + } + if (($principalAmount + $interestAmount + $feeAmount) != $totalAmount) { + throw new RuntimeException('원금 + 이자 + 수수료 합계가 총 납부금액과 같아야 합니다.'); + } + + $inserted = create_loan_payment([ + 'user_id' => $uid, + 'loan_id' => $loanId, + 'account_id' => $accountId, + 'payment_date' => $paymentDate, + 'total_amount' => $totalAmount, + 'principal_amount' => $principalAmount, + 'interest_amount' => $interestAmount, + 'fee_amount' => $feeAmount, + 'category_id' => $categoryId, + 'description' => $description, + ], $skipDuplicate); + + $msg = $inserted ? '상환 내역이 저장되었습니다.' : '중복으로 판단되어 건너뛰었습니다.'; + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +require __DIR__ . '/../app/views/header.php'; +?> + +

대출 상환 등록

+ + +
+ + + +
+ + +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+
+ + +
+
+ +
+ + 목록 +
+
+
+
+ + \ No newline at end of file diff --git a/public/loan_prepay.php b/public/loan_prepay.php new file mode 100644 index 0000000..9b79c2c --- /dev/null +++ b/public/loan_prepay.php @@ -0,0 +1,271 @@ +prepare(" + SELECT * + FROM loans + WHERE id = ? AND user_id = ? +"); +$stmt->execute([$id, $uid]); +$loan = $stmt->fetch(); + +if (!$loan) { + exit('대출 정보를 찾을 수 없습니다.'); +} + +$stmt = $pdo->prepare(" + SELECT * FROM accounts + WHERE user_id = ? + AND is_active = 1 + AND account_type IN ('bank','cash','other') + ORDER BY id ASC +"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $accountId = !empty($_POST['account_id']) ? (int)$_POST['account_id'] : null; + $paymentDate = $_POST['payment_date'] ?? date('Y-m-d'); + $principalAmount = (float)($_POST['principal_amount'] ?? 0); + $interestAmount = (float)($_POST['interest_amount'] ?? 0); + $feeAmount = (float)($_POST['fee_amount'] ?? 0); + $description = trim($_POST['description'] ?? '') ?: null; + + prepay_loan( + $uid, + $id, + $accountId, + $paymentDate, + $principalAmount, + $interestAmount, + $feeAmount, + $description + ); + + $msg = '중도상환 처리되었습니다.'; + + $stmt->execute([$id, $uid]); + $loan = $stmt->fetch(); + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$summary = get_loan_remaining_summary($id); + +$stmt = $pdo->prepare(" + SELECT * + FROM loan_schedules + WHERE loan_id = ? + ORDER BY cycle_no ASC +"); +$stmt->execute([$id]); +$schedules = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT * + FROM loan_payments + WHERE loan_id = ? + AND payment_type = 'prepayment' + ORDER BY payment_date DESC, id DESC +"); +$stmt->execute([$id]); +$prepayments = $stmt->fetchAll(); + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

대출 중도상환

+ 대출 상세 +
+ + +
+ + + +
+ + +
+
+
+
+
+
+ +
+
+
현재 남은 원금
+
+
+
+
연이자율
+
%
+
+
+
남은 스케줄 원금
+
+
+
+
남은 스케줄 이자
+
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+
+ +
+
+
중도상환 이력
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
일자원금이자수수료합계
+ + +
+ +
중도상환 이력이 없습니다.
+
+
+
+
+ +
+
+
+
현재 스케줄
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
회차납부일구간기초원금원금이자합계기말원금상태
+ + 납부완료 + + 미납 + +
스케줄이 없습니다.
+
+
+
+
+
+ + \ No newline at end of file diff --git a/public/loans.php b/public/loans.php new file mode 100644 index 0000000..d7903ad --- /dev/null +++ b/public/loans.php @@ -0,0 +1,276 @@ +getMessage(); + } +} + +$stmt = $pdo->prepare(" + SELECT + l.*, + a.account_name, + a.institution_name, + ( + SELECT COUNT(*) + FROM loan_schedules ls + WHERE ls.loan_id = l.id + AND ls.is_paid = 0 + ) AS unpaid_count, + ( + SELECT COUNT(*) + FROM loan_schedules ls + WHERE ls.loan_id = l.id + AND ls.is_paid = 1 + ) AS paid_count, + ( + SELECT COUNT(*) + FROM loan_schedules ls + WHERE ls.loan_id = l.id + ) AS total_count, + ( + SELECT MIN(ls.due_date) + FROM loan_schedules ls + WHERE ls.loan_id = l.id + AND ls.is_paid = 0 + ) AS next_due_date, + ( + SELECT MAX(ls.due_date) + FROM loan_schedules ls + WHERE ls.loan_id = l.id + ) AS maturity_due_date, + ( + SELECT ls.scheduled_total + FROM loan_schedules ls + WHERE ls.loan_id = l.id + AND ls.is_paid = 0 + ORDER BY ls.due_date ASC, ls.cycle_no ASC + LIMIT 1 + ) AS next_payment_amount, + ( + SELECT ls.payment_phase + FROM loan_schedules ls + WHERE ls.loan_id = l.id + AND ls.is_paid = 0 + ORDER BY ls.due_date ASC, ls.cycle_no ASC + LIMIT 1 + ) AS next_payment_phase, + ( + SELECT COALESCE(SUM(ls.scheduled_total), 0) + FROM loan_schedules ls + WHERE ls.loan_id = l.id + AND ls.is_paid = 0 + ) AS remaining_total_amount + FROM loans l + LEFT JOIN accounts a ON a.id = l.account_id + WHERE l.user_id = ? + ORDER BY + CASE WHEN l.status = 'active' THEN 0 ELSE 1 END, + l.id DESC +"); +$stmt->execute([$uid]); +$loans = $stmt->fetchAll(); + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

대출 목록

+ 대출 등록 +
+ + +
+ + + +
+ + +
+ + 0 ? round(($paidCount / $totalCount) * 100, 1) : 0.0; + + $phaseText = '-'; + if (($loan['next_payment_phase'] ?? '') === 'grace') { + $phaseText = '거치 중'; + } elseif (($loan['next_payment_phase'] ?? '') === 'repayment') { + $phaseText = '상환 중'; + } elseif ($loan['status'] === 'closed') { + $phaseText = '종료'; + } + ?> +
+
+
+
+
+
+ + + · + +
+
+
+ +
+ + + +
+
+
+ +
+
+
대출원금
+
+
+ +
+
연이자율
+
%
+
+ +
+
거치기간
+
개월
+
+ +
+
상환기간
+
개월
+
+ +
+
남은 원금
+
+
+ +
+
남은 이자
+
+
+ +
+
남은 총액
+
+
+ +
+
다음 회차 금액
+
+
+ +
+
다음 납부일
+
+
+ +
+
만기일자
+
+
+ +
+
남은 회차 수
+
+
+ +
+
진행률
+
%
+
+
+ +
+
+
+
+
+ 완료 회 / 전체 회 +
+
+ +
+ 상세/스케줄 + 수정 + + + 중도상환 + +
+ + + +
+ + +
+ + + +
+
+
+
+
+ + + +
+
+
+ 등록된 대출이 없습니다. +
+
+
+ +
+ + \ No newline at end of file diff --git a/public/login.php b/public/login.php new file mode 100644 index 0000000..5f7fafa --- /dev/null +++ b/public/login.php @@ -0,0 +1,125 @@ +prepare("SELECT * FROM users WHERE username = ? LIMIT 1"); + $stmt->execute([$username]); + $user = $stmt->fetch(); + + if (!$user || !password_verify($password, $user['password_hash'])) { + throw new RuntimeException('로그인 정보가 올바르지 않습니다.'); + } + + clear_login_attempts($username); + login_user($user, $remember); + header('Location: /dashboard.php'); + exit; + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} +?> + + + + + + Financial | 개인 자산관리 · 가계부 · 대출 · 할부 통합 관리 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

로그인

+ + +
+ + +
+
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ +
+ +
+ + +
+
+
+
+ + + + diff --git a/public/logout.php b/public/logout.php new file mode 100644 index 0000000..7a9920d --- /dev/null +++ b/public/logout.php @@ -0,0 +1,6 @@ +prepare(" + INSERT INTO merchant_pattern_rules + (user_id, pattern_text, normalized_pattern, match_type, category_id, priority, confidence, is_active, memo) + VALUES (?, ?, ?, 'contains', ?, ?, 0.90, 1, 'manual') + "); + $normalized = mb_strtolower($keyword,'UTF-8'); + $normalized = str_replace([' ','-','(',')','.',',','㈜'],'',$normalized); + + $stmt->execute([$uid, $keyword, $normalized, $categoryId, $priority]); + $msg = '규칙이 추가되었습니다.'; + } + + if ($mode === 'update') { + $id = (int)($_POST['id'] ?? 0); + $keyword = trim($_POST['keyword'] ?? ''); + $categoryId = (int)($_POST['category_id'] ?? 0); + $priority = (int)($_POST['priority'] ?? 100); + $isActive = isset($_POST['is_active']) ? 1 : 0; + + if ($id <= 0) { + throw new RuntimeException('규칙 ID가 올바르지 않습니다.'); + } + if ($keyword === '') { + throw new RuntimeException('키워드를 입력하세요.'); + } + if ($categoryId <= 0) { + throw new RuntimeException('카테고리를 선택하세요.'); + } + + $stmt = $pdo->prepare(" + UPDATE merchant_pattern_rules + SET pattern_text = ?, normalized_pattern = ?, category_id = ?, priority = ?, is_active = ? + WHERE id = ? AND user_id = ? + "); + $normalized = mb_strtolower($keyword,'UTF-8'); + $normalized = str_replace([' ','-','(',')','.',',','㈜'],'',$normalized); + + $stmt->execute([ + $keyword, + $normalized, + $categoryId, + $priority, + $isActive, + $id, + $uid + ]); + $msg = '규칙이 수정되었습니다.'; + } + + if ($mode === 'delete') { + $id = (int)($_POST['id'] ?? 0); + + if ($id <= 0) { + throw new RuntimeException('규칙 ID가 올바르지 않습니다.'); + } + + $stmt = $pdo->prepare("DELETE FROM merchant_pattern_rules WHERE id = ? AND user_id = ?"); + $stmt->execute([$id, $uid]); + $msg = '규칙이 삭제되었습니다.'; + } + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$stmt = $pdo->prepare(" + SELECT id, category_type, name + FROM categories + WHERE user_id = ? + AND is_active = 1 + ORDER BY category_type, sort_order, id +"); +$stmt->execute([$uid]); +$categories = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT + r.*, + c.name AS category_name, + c.category_type + FROM merchant_pattern_rules r + JOIN categories c ON c.id = r.category_id + WHERE r.user_id = ? + ORDER BY r.priority ASC, r.id ASC +"); +$stmt->execute([$uid]); +$rules = $stmt->fetchAll(); + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

상호명 자동분류 규칙

+
+ + +
+ + + +
+ + +
+
+
+
+
규칙 추가
+ +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
숫자가 작을수록 우선 적용됩니다.
+
+ +
+ +
+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID키워드카테고리우선순위활성관리
[] + +
+ + + +
+
+
+ + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ > + +
+
+ +
+ +
+
+
등록된 규칙이 없습니다.
+
+
+
+
+ + \ No newline at end of file diff --git a/public/offline.html b/public/offline.html new file mode 100644 index 0000000..eddcac2 --- /dev/null +++ b/public/offline.html @@ -0,0 +1,22 @@ + + + + + + + Financial 오프라인 + + + + + +
+
+
+

오프라인 상태입니다

+

금융 데이터는 기기에 저장하지 않습니다. 네트워크 연결 후 다시 접속하세요.

+
+
+
+ + diff --git a/public/recurring.php b/public/recurring.php new file mode 100644 index 0000000..98efad1 --- /dev/null +++ b/public/recurring.php @@ -0,0 +1,182 @@ +prepare("SELECT * FROM accounts WHERE user_id = ? AND is_active = 1 ORDER BY id"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +$stmt = $pdo->prepare("SELECT * FROM categories WHERE user_id = ? AND is_active = 1 ORDER BY category_type, sort_order, id"); +$stmt->execute([$uid]); +$categories = $stmt->fetchAll(); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $mode = $_POST['mode'] ?? 'create'; + + if ($mode === 'apply_month') { + $ym = $_POST['ym'] ?? date('Y-m'); + $count = apply_recurring_transactions_for_month($uid, $ym, true); + $msg = $ym . ' 적용 완료: ' . $count . '건 입력'; + } else { + $stmt = $pdo->prepare(" + INSERT INTO recurring_transactions + (user_id, account_id, category_id, transaction_type, amount, day_of_month, merchant_name, description, related_account_id, is_active) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 1) + "); + $stmt->execute([ + $uid, + (int)$_POST['account_id'], + (int)$_POST['category_id'], + $_POST['transaction_type'], + (float)$_POST['amount'], + (int)$_POST['day_of_month'], + trim($_POST['merchant_name'] ?? '') ?: null, + trim($_POST['description'] ?? '') ?: null, + !empty($_POST['related_account_id']) ? (int)$_POST['related_account_id'] : null, + ]); + + redirect('/recurring.php'); + } + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$stmt = $pdo->prepare("SELECT rt.*, a.account_name, c.name AS category_name, ra.account_name AS related_name +FROM recurring_transactions rt +JOIN accounts a ON rt.account_id = a.id +JOIN categories c ON rt.category_id = c.id +LEFT JOIN accounts ra ON rt.related_account_id = ra.id +WHERE rt.user_id = ? +ORDER BY rt.day_of_month, rt.id"); +$stmt->execute([$uid]); +$list = $stmt->fetchAll(); + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

고정지출 / 고정거래

+
+ +
+
+ +
+
+ + + +
+
+ +
+
+
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
일자유형계좌관련카테고리금액마지막 적용월
+
+
+
+
+ + diff --git a/public/register.php b/public/register.php new file mode 100644 index 0000000..04c719b --- /dev/null +++ b/public/register.php @@ -0,0 +1,139 @@ +prepare("SELECT id FROM users WHERE username = ? LIMIT 1"); + $stmt->execute([$username]); + + if ($stmt->fetch()) { + throw new RuntimeException('이미 사용 중인 아이디입니다.'); + } + + $hash = password_hash($password, PASSWORD_DEFAULT); + + $stmt = $pdo->prepare(" + INSERT INTO users (username, password_hash, created_at) + VALUES (?, ?, NOW()) + "); + $stmt->execute([$username, $hash]); + + $userId = (int)$pdo->lastInsertId(); + + $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ? LIMIT 1"); + $stmt->execute([$userId]); + $user = $stmt->fetch(); + + login_user($user, true); + + header('Location: /dashboard.php'); + exit; + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} +?> + + + + + + 회원가입 + + + + + + + + + + + + + +
+
+
+

회원가입

+ + +
+ + +
+
+ + +
관리자가 공유한 PIN 코드를 입력하세요.
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+
+
+
+ + + + + diff --git a/public/sw.js b/public/sw.js new file mode 100644 index 0000000..9c94b5d --- /dev/null +++ b/public/sw.js @@ -0,0 +1,60 @@ +const CACHE_NAME = 'financial-static-v1'; +const STATIC_ASSETS = [ + '/offline.html', + '/assets/vendor/bootstrap.min.css', + '/assets/vendor/bootstrap.bundle.min.js', + '/assets/vendor/chart.umd.js', + '/assets/app.css', + '/assets/pwa.js', + '/favicon.png?v=2', + '/manifest.webmanifest' +]; + +self.addEventListener('install', event => { + event.waitUntil( + caches.open(CACHE_NAME) + .then(cache => cache.addAll(STATIC_ASSETS)) + .catch(() => undefined) + ); + self.skipWaiting(); +}); + +self.addEventListener('activate', event => { + event.waitUntil( + caches.keys().then(keys => Promise.all( + keys.filter(key => key !== CACHE_NAME).map(key => caches.delete(key)) + )) + ); + self.clients.claim(); +}); + +self.addEventListener('fetch', event => { + const request = event.request; + + if (request.method !== 'GET') { + return; + } + + const url = new URL(request.url); + + if (url.origin !== location.origin) { + return; + } + + if (url.pathname.startsWith('/api/')) { + return; + } + + if (url.pathname.startsWith('/assets/vendor/') || url.pathname === '/assets/app.css' || url.pathname === '/assets/pwa.js' || url.pathname === '/manifest.webmanifest' || url.pathname === '/favicon.png') { + event.respondWith( + caches.match(request).then(cached => cached || fetch(request)) + ); + return; + } + + if (request.mode === 'navigate') { + event.respondWith( + fetch(request).catch(() => caches.match('/offline.html')) + ); + } +}); diff --git a/public/transaction_create.php b/public/transaction_create.php new file mode 100644 index 0000000..fe64d3e --- /dev/null +++ b/public/transaction_create.php @@ -0,0 +1,880 @@ +prepare(" + SELECT * + FROM accounts + WHERE user_id = ? + AND is_active = 1 + ORDER BY + FIELD(account_type, 'bank', 'card', 'cash', 'other'), + id ASC +"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT * + FROM categories + WHERE user_id = ? + AND is_active = 1 + ORDER BY category_type, sort_order, id +"); +$stmt->execute([$uid]); +$categories = $stmt->fetchAll(); + +$defaults = get_transaction_form_defaults($uid); +$lastForm = $_SESSION['tx_create_last_form'] ?? []; + +$form = [ + 'transaction_type' => 'expense', + 'account_id' => (int)($defaults['default_account_id'] ?? 0), + 'related_account_id' => 0, + 'category_id' => (int)($defaults['default_expense_category_id'] ?? 0), + 'amount' => '', + 'transaction_date' => date('Y-m-d'), + 'merchant_name' => '', + 'description' => '', + 'is_installment' => 0, + 'installment_months' => '', + 'installment_interest_rate' => '0', + 'installment_interest_total' => '', + 'installment_total_billed' => '', + 'continue_after_save' => !empty($defaults['continue_after_save']) ? 1 : 0, + 'keep_last_values' => !empty($defaults['keep_last_values']) ? 1 : 0, + 'save_as_defaults' => 0, +]; + +if (!empty($defaults['keep_last_values']) && !empty($lastForm)) { + $form = array_merge($form, $lastForm); +} + +$copyId = (int)($_GET['copy_id'] ?? 0); + +if ($copyId > 0 && $_SERVER['REQUEST_METHOD'] !== 'POST') { + $stmt = $pdo->prepare(" + SELECT * + FROM transactions + WHERE id = ? + AND user_id = ? + LIMIT 1 + "); + $stmt->execute([$copyId, $uid]); + $copy = $stmt->fetch(); + + if ($copy) { + $form = array_merge($form, [ + 'transaction_type' => $copy['transaction_type'], + 'account_id' => (int)$copy['account_id'], + 'related_account_id' => (int)($copy['related_account_id'] ?? 0), + 'category_id' => (int)$copy['category_id'], + 'amount' => number_format((float)$copy['amount'], 0), + 'transaction_date' => date('Y-m-d'), + 'merchant_name' => (string)($copy['merchant_name'] ?? ''), + 'description' => (string)($copy['description'] ?? ''), + 'is_installment' => (int)($copy['is_installment'] ?? 0), + 'installment_months' => $copy['installment_months'] ?? '', + 'installment_interest_rate' => (string)($copy['installment_interest_rate'] ?? '0'), + 'installment_interest_total' => !empty($copy['installment_interest_total']) ? number_format((float)$copy['installment_interest_total'], 0) : '', + 'installment_total_billed' => !empty($copy['installment_total_billed']) ? number_format((float)$copy['installment_total_billed'], 0) : '', + 'continue_after_save' => 0, + 'keep_last_values' => 0, + 'save_as_defaults' => 0, + ]); + + $success = '기존 거래를 복사했습니다. 날짜/메모 수정 후 저장하세요.'; + } +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $form = [ + 'transaction_type' => $_POST['transaction_type'] ?? 'expense', + 'account_id' => (int)($_POST['account_id'] ?? 0), + 'related_account_id' => !empty($_POST['related_account_id']) ? (int)$_POST['related_account_id'] : 0, + 'category_id' => (int)($_POST['category_id'] ?? 0), + 'amount' => trim((string)($_POST['amount'] ?? '')), + 'transaction_date' => $_POST['transaction_date'] ?? date('Y-m-d'), + 'merchant_name' => trim((string)($_POST['merchant_name'] ?? '')), + 'description' => trim((string)($_POST['description'] ?? '')), + 'is_installment' => (int)($_POST['is_installment'] ?? 0), + 'installment_months' => trim((string)($_POST['installment_months'] ?? '')), + 'installment_interest_rate' => trim((string)($_POST['installment_interest_rate'] ?? '0')), + 'installment_interest_total' => trim((string)($_POST['installment_interest_total'] ?? '')), + 'installment_total_billed' => trim((string)($_POST['installment_total_billed'] ?? '')), + 'continue_after_save' => !empty($_POST['continue_after_save']) ? 1 : 0, + 'keep_last_values' => !empty($_POST['keep_last_values']) ? 1 : 0, + 'save_as_defaults' => !empty($_POST['save_as_defaults']) ? 1 : 0, + ]; + + $transactionType = $form['transaction_type']; + $accountId = (int)$form['account_id']; + $categoryId = (int)$form['category_id']; + $amount = (float)str_replace(',', '', $form['amount']); + $transactionDate = $form['transaction_date']; + $merchantName = $form['merchant_name']; + $description = $form['description']; + $relatedAccountId = $form['related_account_id'] > 0 ? (int)$form['related_account_id'] : null; + + $isInstallment = (int)$form['is_installment']; + $installmentMonths = $form['installment_months'] !== '' ? (int)$form['installment_months'] : null; + $installmentInterestRate = $form['installment_interest_rate'] !== '' ? (float)$form['installment_interest_rate'] : 0.0; + $installmentInterestTotal = $form['installment_interest_total'] !== '' + ? (float)str_replace(',', '', $form['installment_interest_total']) + : null; + $installmentTotalBilled = $form['installment_total_billed'] !== '' + ? (float)str_replace(',', '', $form['installment_total_billed']) + : null; + + if ($amount <= 0) { + throw new RuntimeException('금액은 0보다 커야 합니다.'); + } + + if (!in_array($transactionType, ['income', 'expense', 'transfer', 'card_payment'], true)) { + throw new RuntimeException('거래 유형이 올바르지 않습니다.'); + } + + if ($accountId <= 0) { + throw new RuntimeException('주 계좌/카드를 선택하세요.'); + } + + if ($categoryId <= 0) { + throw new RuntimeException('카테고리를 선택하세요.'); + } + + if (in_array($transactionType, ['transfer', 'card_payment'], true) && !$relatedAccountId) { + throw new RuntimeException('관련 계좌를 선택해야 합니다.'); + } + + if ($relatedAccountId && $relatedAccountId === $accountId) { + throw new RuntimeException('주 계좌와 관련 계좌는 같을 수 없습니다.'); + } + + if ($transactionType !== 'expense') { + $isInstallment = 0; + $installmentMonths = null; + $installmentInterestRate = 0.0; + $installmentInterestTotal = null; + $installmentTotalBilled = null; + } + + create_transaction([ + 'user_id' => $uid, + 'account_id' => $accountId, + 'category_id' => $categoryId, + 'transaction_type' => $transactionType, + 'amount' => $amount, + 'transaction_date' => $transactionDate, + 'merchant_name' => $merchantName !== '' ? $merchantName : null, + 'description' => $description !== '' ? $description : null, + 'related_account_id' => $relatedAccountId, + 'is_installment' => $isInstallment, + 'installment_months' => $installmentMonths, + 'installment_interest_rate' => $installmentInterestRate, + 'installment_interest_total' => $installmentInterestTotal, + 'installment_total_billed' => $installmentTotalBilled, + ]); + + if ($form['save_as_defaults']) { + $save = [ + 'default_account_id' => 0, + 'default_card_account_id' => 0, + 'default_income_category_id' => 0, + 'default_expense_category_id' => 0, + 'default_transfer_category_id' => 0, + 'default_card_payment_category_id' => 0, + 'keep_last_values' => $form['keep_last_values'], + 'continue_after_save' => $form['continue_after_save'], + ]; + + if ($transactionType === 'income') { + $save['default_account_id'] = $accountId; + $save['default_income_category_id'] = $categoryId; + } elseif ($transactionType === 'expense') { + $save['default_account_id'] = $accountId; + $save['default_expense_category_id'] = $categoryId; + } elseif ($transactionType === 'transfer') { + $save['default_account_id'] = $accountId; + $save['default_transfer_category_id'] = $categoryId; + } elseif ($transactionType === 'card_payment') { + $save['default_account_id'] = $accountId; + $save['default_card_payment_category_id'] = $categoryId; + } + + foreach ($accounts as $acc) { + if ((int)$acc['id'] === $accountId && $acc['account_type'] === 'card') { + $save['default_card_account_id'] = $accountId; + break; + } + } + + save_transaction_form_defaults($uid, array_merge($defaults, $save)); + } + + if ($form['keep_last_values']) { + $_SESSION['tx_create_last_form'] = [ + 'transaction_type' => $transactionType, + 'account_id' => $accountId, + 'related_account_id' => $relatedAccountId ?: 0, + 'category_id' => $categoryId, + 'amount' => '', + 'transaction_date' => date('Y-m-d'), + 'merchant_name' => $merchantName, + 'description' => '', + 'is_installment' => $isInstallment, + 'installment_months' => $installmentMonths ?? '', + 'installment_interest_rate' => (string)$installmentInterestRate, + 'installment_interest_total' => '', + 'installment_total_billed' => '', + 'continue_after_save' => $form['continue_after_save'], + 'keep_last_values' => $form['keep_last_values'], + 'save_as_defaults' => 0, + ]; + } else { + unset($_SESSION['tx_create_last_form']); + } + + if ($form['continue_after_save']) { + $success = '저장되었습니다. 계속 등록할 수 있습니다.'; + $form['amount'] = ''; + $form['description'] = ''; + $form['transaction_date'] = date('Y-m-d'); + $form['installment_interest_total'] = ''; + $form['installment_total_billed'] = ''; + } else { + redirect('/transactions.php'); + } + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$accountsJson = []; +foreach ($accounts as $acc) { + $accountsJson[] = [ + 'id' => (int)$acc['id'], + 'name' => $acc['account_name'], + 'type' => $acc['account_type'], + 'card_kind' => $acc['card_kind'] ?? null, + 'billing_day' => $acc['billing_day'] ?? null, + 'payment_day' => $acc['payment_day'] ?? null, + 'use_credit_grace_period' => !empty($acc['use_credit_grace_period']) ? 1 : 0, + ]; +} + +$categoriesJson = []; +foreach ($categories as $cat) { + $categoriesJson[] = [ + 'id' => (int)$cat['id'], + 'type' => $cat['category_type'], + 'name' => $cat['name'], + ]; +} + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

거래 등록

+ 목록 +
+ + +
+ + + +
+ + +
+
+
+
+ + +
+ +
+ + +
+
+ +
+ + + +
+ +
+ + +
+ +
+ + +
+ + + + +
+
+ +
+ + +
+ +
+ + +
+ + + + + + + + + +
+ + +
상호명 입력 시 카테고리를 자동 추천합니다.
+
+ +
+ + +
+ +
+
+
+ +
+
+
등록 편의 설정
+
자주 쓰는 카드/계좌와 입력값을 계속 재사용할 수 있습니다.
+ +
+
+
+ > + +
+
+ +
+
+ > + +
+
+ +
+
+ + +
+
+
+
+
+ +
+ + + 목록 +
+
+
+
+ + + + \ No newline at end of file diff --git a/public/transaction_delete.php b/public/transaction_delete.php new file mode 100644 index 0000000..7ba92ab --- /dev/null +++ b/public/transaction_delete.php @@ -0,0 +1,19 @@ + 0) { + delete_transaction($id, user_id()); +} + +header('Location: /transactions.php'); +exit; diff --git a/public/transaction_edit.php b/public/transaction_edit.php new file mode 100644 index 0000000..2c7b081 --- /dev/null +++ b/public/transaction_edit.php @@ -0,0 +1,656 @@ +prepare("SELECT * FROM transactions WHERE id = ? AND user_id = ?"); +$stmt->execute([$id, $uid]); +$item = $stmt->fetch(); + +if (!$item) { + exit('거래를 찾을 수 없습니다.'); +} + +$stmt = $pdo->prepare(" + SELECT * + FROM accounts + WHERE user_id = ? + AND is_active = 1 + ORDER BY FIELD(account_type, 'bank', 'card', 'cash', 'other'), id ASC +"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +$stmt = $pdo->prepare(" + SELECT * + FROM categories + WHERE user_id = ? + AND is_active = 1 + ORDER BY category_type, sort_order, id +"); +$stmt->execute([$uid]); +$categories = $stmt->fetchAll(); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + try { + $transactionType = $_POST['transaction_type'] ?? ''; + $accountId = (int)($_POST['account_id'] ?? 0); + $categoryId = (int)($_POST['category_id'] ?? 0); + $amount = (float)str_replace(',', '', (string)($_POST['amount'] ?? 0)); + $transactionDate = $_POST['transaction_date'] ?? date('Y-m-d'); + $merchantName = trim($_POST['merchant_name'] ?? ''); + $description = trim($_POST['description'] ?? ''); + $relatedAccountId = !empty($_POST['related_account_id']) ? (int)$_POST['related_account_id'] : null; + + $isInstallment = (int)($_POST['is_installment'] ?? 0); + $installmentMonths = !empty($_POST['installment_months']) ? (int)$_POST['installment_months'] : null; + $installmentInterestRate = !empty($_POST['installment_interest_rate']) ? (float)$_POST['installment_interest_rate'] : 0.0; + $installmentInterestTotal = isset($_POST['installment_interest_total']) && $_POST['installment_interest_total'] !== '' + ? (float)str_replace(',', '', (string)$_POST['installment_interest_total']) + : null; + $installmentTotalBilled = isset($_POST['installment_total_billed']) && $_POST['installment_total_billed'] !== '' + ? (float)str_replace(',', '', (string)$_POST['installment_total_billed']) + : null; + + if ($amount <= 0) throw new RuntimeException('금액은 0보다 커야 합니다.'); + if (!in_array($transactionType, ['income', 'expense', 'transfer', 'card_payment'], true)) throw new RuntimeException('거래 유형이 올바르지 않습니다.'); + if ($accountId <= 0) throw new RuntimeException('주 계좌/카드를 선택하세요.'); + if ($categoryId <= 0) throw new RuntimeException('카테고리를 선택하세요.'); + if (in_array($transactionType, ['transfer', 'card_payment'], true) && !$relatedAccountId) throw new RuntimeException('관련 계좌를 선택해야 합니다.'); + if ($relatedAccountId && $relatedAccountId === $accountId) throw new RuntimeException('주 계좌와 관련 계좌는 같을 수 없습니다.'); + + if ($transactionType !== 'expense') { + $isInstallment = 0; + $installmentMonths = null; + $installmentInterestRate = 0.0; + $installmentInterestTotal = null; + $installmentTotalBilled = null; + } + + update_transaction($id, $uid, [ + 'account_id' => $accountId, + 'category_id' => $categoryId, + 'transaction_type' => $transactionType, + 'amount' => $amount, + 'transaction_date' => $transactionDate, + 'merchant_name' => $merchantName !== '' ? $merchantName : null, + 'description' => $description !== '' ? $description : null, + 'related_account_id' => $relatedAccountId, + 'is_installment' => $isInstallment, + 'installment_months' => $installmentMonths, + 'installment_interest_rate' => $installmentInterestRate, + 'installment_interest_total' => $installmentInterestTotal, + 'installment_total_billed' => $installmentTotalBilled, + ]); + + redirect('/transactions.php'); + } catch (Throwable $e) { + $error = $e->getMessage(); + } +} + +$accountsJson = []; +foreach ($accounts as $acc) { + $accountsJson[] = [ + 'id' => (int)$acc['id'], + 'name' => $acc['account_name'], + 'type' => $acc['account_type'], + 'card_kind' => $acc['card_kind'] ?? null, + 'billing_day' => $acc['billing_day'] ?? null, + 'payment_day' => $acc['payment_day'] ?? null, + 'use_credit_grace_period' => !empty($acc['use_credit_grace_period']) ? 1 : 0, + ]; +} + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

거래 수정

+ 목록 +
+ + +
+ + +
+
+
+
+ + +
+ +
+ + +
+
+ +
+ + + +
+ +
+ + +
+ +
+ + +
+ + + + +
+
+ +
+ + + +
현재 청구월:
+ +
+ +
+ + +
+ + + + + + + +
+ + + + + + +
+ 현재 개월 / + 0) + ? '연 ' . numf($item['installment_interest_rate'],2) . '%' + : '무이자' ?> +
+ + +
+ 이자 포함 실제 카드 청구 총액 +
+
+ +
+ + +
상호명 입력 시 카테고리를 자동 추천합니다.
+
+ +
+ + +
+ +
+
+
+ +
+ + + 목록 + + +
+
+
+
+ + + + diff --git a/public/transactions.php b/public/transactions.php new file mode 100644 index 0000000..c9e19b4 --- /dev/null +++ b/public/transactions.php @@ -0,0 +1,280 @@ + 0) { + $where[] = "t.account_id = ?"; + $params[] = $accountId; +} + +if ($categoryId > 0) { + $where[] = "t.category_id = ?"; + $params[] = $categoryId; +} + +$sql = " +SELECT + t.*, + a.account_name, + a.account_type, + a.card_kind, + ra.account_name AS related_account_name, + c.name AS category_name +FROM transactions t +JOIN accounts a ON t.account_id = a.id +LEFT JOIN accounts ra ON t.related_account_id = ra.id +JOIN categories c ON t.category_id = c.id +WHERE " . implode(' AND ', $where) . " +ORDER BY t.transaction_date DESC, t.id DESC +"; + +$stmt = $pdo->prepare($sql); +$stmt->execute($params); +$list = $stmt->fetchAll(); + +$stmt = $pdo->prepare("SELECT id, account_name FROM accounts WHERE user_id = ? AND is_active = 1 ORDER BY id ASC"); +$stmt->execute([$uid]); +$accounts = $stmt->fetchAll(); + +$stmt = $pdo->prepare("SELECT id, category_type, name FROM categories WHERE user_id = ? AND is_active = 1 ORDER BY category_type, sort_order, id"); +$stmt->execute([$uid]); +$categories = $stmt->fetchAll(); + +/* 요약 */ +$sumIncome = 0; +$sumExpense = 0; +$sumTransfer = 0; +$sumCardPay = 0; + +foreach ($list as $row) { + $amt = (float)$row['amount']; + + if ($row['transaction_type'] === 'income') $sumIncome += $amt; + elseif ($row['transaction_type'] === 'expense') $sumExpense += $amt; + elseif ($row['transaction_type'] === 'transfer') $sumTransfer += $amt; + elseif ($row['transaction_type'] === 'card_payment') $sumCardPay += $amt; +} + +function tx_label(string $type): string +{ + return match ($type) { + 'income' => '수입', + 'expense' => '지출', + 'transfer' => '이체', + 'card_payment' => '카드납부', + default => $type + }; +} + +require __DIR__ . '/../app/views/header.php'; +?> + +
+

거래내역

+ 거래등록 +
+ +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + 초기화 +
+
+
+
+ +
+
+
+
+
수입
+
+
+
+
+ +
+
+
+
지출
+
+
+
+
+ +
+
+
+
이체
+
+
+
+
+ +
+
+
+
카드납부
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
날짜유형계좌관련카테고리사용처금액부가정보메모관리
+ 복사 + 수정 +
+ + +
+
조회 결과가 없습니다.
+
+
+ +