From fb98a0eab9be613ccf3be43aad295aae2a188112 Mon Sep 17 00:00:00 2001 From: gulllcb Date: Sun, 4 Dec 2022 16:30:48 +0300 Subject: [PATCH] jwt-token-bypass --- .../jwt-token-bypass/DBconnect.php | 3 + .../jwt-token-bypass/auth_control.php | 18 + .../jwt-token-bypass/composer.json | 5 + .../jwt-token-bypass/composer.lock | 81 +++ .../jwt-token-bypass/config.php | 123 ++++ .../jwt-token-bypass/css/bootstrap.min.css | 7 + .../jwt-token-bypass/database.db | Bin 0 -> 217088 bytes .../jwt-token-bypass/en.ini | 9 + .../jwt-token-bypass/fr.ini | 9 + .../jwt-token-bypass/index.php | 65 ++ .../jwt-token-bypass/login.php | 82 +++ .../jwt-token-bypass/tr.ini | 9 + .../jwt-token-bypass/vendor/autoload.php | 12 + .../vendor/composer/ClassLoader.php | 572 ++++++++++++++++ .../vendor/composer/InstalledVersions.php | 352 ++++++++++ .../jwt-token-bypass/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 10 + .../vendor/composer/autoload_namespaces.php | 9 + .../vendor/composer/autoload_psr4.php | 10 + .../vendor/composer/autoload_real.php | 38 ++ .../vendor/composer/autoload_static.php | 36 + .../vendor/composer/installed.json | 71 ++ .../vendor/composer/installed.php | 32 + .../vendor/composer/platform_check.php | 26 + .../vendor/firebase/php-jwt/LICENSE | 30 + .../vendor/firebase/php-jwt/README.md | 367 ++++++++++ .../vendor/firebase/php-jwt/composer.json | 41 ++ .../php-jwt/src/BeforeValidException.php | 7 + .../firebase/php-jwt/src/CachedKeySet.php | 229 +++++++ .../firebase/php-jwt/src/ExpiredException.php | 7 + .../vendor/firebase/php-jwt/src/JWK.php | 322 +++++++++ .../vendor/firebase/php-jwt/src/JWT.php | 627 ++++++++++++++++++ .../vendor/firebase/php-jwt/src/Key.php | 64 ++ .../php-jwt/src/SignatureInvalidException.php | 7 + app/main.json | 17 + 35 files changed, 3318 insertions(+) create mode 100644 app/lab/broken-authentication/jwt-token-bypass/DBconnect.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/auth_control.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/composer.json create mode 100644 app/lab/broken-authentication/jwt-token-bypass/composer.lock create mode 100644 app/lab/broken-authentication/jwt-token-bypass/config.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/css/bootstrap.min.css create mode 100644 app/lab/broken-authentication/jwt-token-bypass/database.db create mode 100644 app/lab/broken-authentication/jwt-token-bypass/en.ini create mode 100644 app/lab/broken-authentication/jwt-token-bypass/fr.ini create mode 100644 app/lab/broken-authentication/jwt-token-bypass/index.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/login.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/tr.ini create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/autoload.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/ClassLoader.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/InstalledVersions.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/LICENSE create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_classmap.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_namespaces.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_psr4.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_real.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_static.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/installed.json create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/installed.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/composer/platform_check.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/LICENSE create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/README.md create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/composer.json create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/BeforeValidException.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/CachedKeySet.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/ExpiredException.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/JWK.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/JWT.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/Key.php create mode 100644 app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/SignatureInvalidException.php diff --git a/app/lab/broken-authentication/jwt-token-bypass/DBconnect.php b/app/lab/broken-authentication/jwt-token-bypass/DBconnect.php new file mode 100644 index 0000000..69f5d18 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/DBconnect.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/app/lab/broken-authentication/jwt-token-bypass/auth_control.php b/app/lab/broken-authentication/jwt-token-bypass/auth_control.php new file mode 100644 index 0000000..b6371f8 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/auth_control.php @@ -0,0 +1,18 @@ +is_valid($_COOKIE['auth_type'])){ + $jwt_username = $jwt->get_username($_COOKIE['auth_type']); + $jwt_userid = $jwt->get_userid($_COOKIE['auth_type']); + }else{ + header("Location: login.php"); + exit; + } +}else{ + header("Location: login.php"); + exit; +} +?> \ No newline at end of file diff --git a/app/lab/broken-authentication/jwt-token-bypass/composer.json b/app/lab/broken-authentication/jwt-token-bypass/composer.json new file mode 100644 index 0000000..b4d77e9 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "firebase/php-jwt": "^6.3" + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/composer.lock b/app/lab/broken-authentication/jwt-token-bypass/composer.lock new file mode 100644 index 0000000..10a6f52 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/composer.lock @@ -0,0 +1,81 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "3871539446f6e0306a6de8d421df9d92", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", + "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", + "shasum": "" + }, + "require": { + "php": "^7.1||^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^1.1", + "phpunit/phpunit": "^7.5||^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.3.0" + }, + "time": "2022-07-15T16:48:45+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/config.php b/app/lab/broken-authentication/jwt-token-bypass/config.php new file mode 100644 index 0000000..0f452fb --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/config.php @@ -0,0 +1,123 @@ +headers = [ + 'alg' => 'HS256', // we are using a SHA256 algorithm + 'typ' => 'JWT', // JWT type + 'iss' => 'test.jwt', // token issuer + 'aud' => 'test.jwt' // token audience + ]; + $this->secret = '1234'; + } + + /** + * Generate JWT using a payload. + * + * @param array $payload + * @return string + */ + public function generate(array $payload): string + { + $headers = $this->encode(json_encode($this->headers)); // encode headers + $payload["exp"] = time() + 3600; // add expiration to payload + $payload = $this->encode(json_encode($payload)); // encode payload + $signature = hash_hmac('SHA256', "$headers.$payload", $this->secret, true); // create SHA256 signature + $signature = $this->encode($signature); // encode signature + + return "$headers.$payload.$signature"; + } + + /** + * Encode JWT using base64. + * + * @param string $str + * @return string + */ + private function encode(string $str): string + { + return rtrim(strtr(base64_encode($str), '+/', '-_'), '='); // base64 encode string + } + + /** + * Check if JWT is valid, return true | false. + * + * @param string $jwt + * @return boolean + */ + public function is_valid(string $jwt): bool + { + $token = explode('.', $jwt); // explode token based on JWT breaks + if (!isset($token[1]) && !isset($token[2])) { + return false; // fails if the header and payload is not set + } + $headers = base64_decode($token[0]); // decode header, create variable + $payload = base64_decode($token[1]); // decode payload, create variable + $clientSignature = $token[2]; // create variable for signature + + if (!json_decode($payload)) { + return false; // fails if payload does not decode + } + + if ((json_decode($payload)->exp - time()) < 0) { + return false; // fails if expiration is greater than 0, setup for 1 minute + } + + if (isset(json_decode($payload)->iss)) { + if (json_decode($headers)->iss != json_decode($payload)->iss) { + return false; // fails if issuers are not the same + } + } else { + return false; // fails if issuer is not set + } + + if (isset(json_decode($payload)->aud)) { + if (json_decode($headers)->aud != json_decode($payload)->aud) { + return false; // fails if audiences are not the same + } + } else { + return false; // fails if audience is not set + } + + $base64_header = $this->encode($headers); + $base64_payload = $this->encode($payload); + + $signature = hash_hmac('SHA256', $base64_header . "." . $base64_payload, $this->secret, true); + $base64_signature = $this->encode($signature); + + return ($base64_signature === $clientSignature); + } + public function get_username(string $jwt): string{ + $token = explode('.', $jwt); + if (!isset($token[1]) && !isset($token[2])) { + return false; + } + $payload = json_decode(base64_decode($token[1])); + return $payload->username; + + } + public function get_userid(string $jwt): string{ + $token = explode('.', $jwt); + if (!isset($token[1]) && !isset($token[2])) { + return false; + } + $payload = json_decode(base64_decode($token[1])); + return $payload->id; + + } +} \ No newline at end of file diff --git a/app/lab/broken-authentication/jwt-token-bypass/css/bootstrap.min.css b/app/lab/broken-authentication/jwt-token-bypass/css/bootstrap.min.css new file mode 100644 index 0000000..02ae65b --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/css/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--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-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-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",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-bg:#fff}*,::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;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.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}.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[data-bs-original-title],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:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}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;direction:ltr;unicode-bidi:bidi-override}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:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}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:#6c757d;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]::-webkit-calendar-picker-indicator{display:none}[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]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-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:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);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}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.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.3333333333%}.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.6666666667%}.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.3333333333%}.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.6666666667%}.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.3333333333%}.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.6666666667%}.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.3333333333%}.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.6666666667%}.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.3333333333%}.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.6666666667%}.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.3333333333%}.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.6666666667%}.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-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--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:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--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:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--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:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--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:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--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:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--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:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--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:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--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:#fff;border-color:#373b3e}.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 + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;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:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;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::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;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}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 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 + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image: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 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@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:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.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-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;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]{background-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 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-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;background-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{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image: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");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{background-image: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;background-image: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-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}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.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;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;-webkit-appearance:none;appearance:none}@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:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;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;-moz-appearance:none;appearance:none}@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:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px 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{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.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{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.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:.3rem}.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:.2rem}.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)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){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>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){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:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.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:rgba(25,135,84,.9);border-radius:.25rem}.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:#198754;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.73L.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:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.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:#198754}.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"]{padding-right:4.125rem;background-image: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 5l6 6 6-6'/%3e%3c/svg%3e"),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.73L.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-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:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.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:rgba(220,53,69,.9);border-radius:.25rem}.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:#dc3545;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:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.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:#dc3545}.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"]{padding-right:4.125rem;background-image: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 5l6 6 6-6'/%3e%3c/svg%3e"),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-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:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;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:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.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,.dropend,.dropstart,.dropup{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{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.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:.125rem}.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:.125rem}.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:.125rem}.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:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .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>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.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:-1px}.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{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;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:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.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{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.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:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@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 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;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:.5rem;padding-left:.5rem}.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-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .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:.5rem;padding-left:.5rem}.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-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .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:.5rem;padding-left:.5rem}.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-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .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:.5rem;padding-left:.5rem}.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-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .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:.5rem;padding-left:.5rem}.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-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .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:.5rem;padding-left:.5rem}.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-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image: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")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.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:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@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-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%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");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%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");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.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-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;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:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@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:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.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:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;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:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent 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 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;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% - 1rem)}.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% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-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-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@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-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@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-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@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-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@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-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@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-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;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;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;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;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.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:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.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%;list-style:none}.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}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.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;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.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{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@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%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.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:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.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}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top: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){position:absolute!important;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}.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:1px;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}.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}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display: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:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.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:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!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}.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}.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}.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}.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-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!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-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!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-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}.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-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!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-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:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float: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-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}.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}.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}.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}.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-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}.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}.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}.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}.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-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}.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}.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}.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}.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-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}.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}.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}.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}.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-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}.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}.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}.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-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/app/lab/broken-authentication/jwt-token-bypass/database.db b/app/lab/broken-authentication/jwt-token-bypass/database.db new file mode 100644 index 0000000000000000000000000000000000000000..796c8e71ea4517c05ee97dd7945f99695d196e03 GIT binary patch literal 217088 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�RYZ=WKRx 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 eMTi(!neqwQ38j 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�+-yC* z{Rq`$KNwE>I+@TE;wD)z0t)-ri6oc!ITcC%-o0Y4KmPx}PU?-jV9&bS`NaXtcHZ|F zTmgrU1&BXZyf<|^oVp(YZecp#o-}nU-eLb!OzVXs`R^7TUmAf%OrUPUlV(&ne@Tw( z%Y3ZJl^0>VN1Q&9kk`>Q-5-B%hj&5hcO;&eB(xe>2|qd1$@N8ltJCHcW-pa7D7j~b zrAV%qil9BOsZFll{J|S`rVx|S`Hn&@oc#@_IqnZ;_4t|P@SsQ3+VbEWBFE5e+t&+d7r!nJ?&F7^nc3}q2HKblh>ntB z*Z~GSo;s60;B?NDBP^2e&R^d9xM+iV=J&q?X;(Jp1@U=Dw1HiBU2y`YvDUu_)`r03 zO|h~U8?Uc9$vZmk{XEtxn{3}Zv1R`8jXky=EF(UeI|gjJzKQCRLWvykjUKNjXJ%vq5~42YuX9=0=o|8P7uasW%O1wwulz0qBj>;L zJ;WQm$GB3eDf6k82$^layC_%UdR#r>uxaq8mHmAp8pOf_A2=nd`P*gd$--ed5rIEd zp=f7cQ0332n)JBbELw-H<1xqRRTzGY_yWcFqtG;ZI^my3rK61^*73aih;kGF`FZO^ zJE=rtM6`cLa{TM}FcrJwP6l})lhh7+;R=q=x0R|?ePnMC@>J=FIJ*AE-soQMnzPc# zjZfTY`P~$H<-dgBe%YEbnK|a|%86p0*}p#KTo#|6Fn=jM#s9>O+S*3J{mQ@S*IV zCwW&$^;dGfc8=Rtf>&||RxD}uQ?vgFy(d0_p<8~^2kpqdqBr~ePCQNMkU)JeY%P${ z*QMQJaPhd%iij*{#G>DzvU4=}ptm2j7j}Rrl|VDepO@&oWALu#A#Ym>wR4>HierVU z(pIIKb+N<4S@_zo`g>khb6vX(s%3e7YgL0rz+Jjo7Y!hz>4$r9dmikHze()Ec1I0o ziAkqT%ml3awIiI}aiQQ0hY=+qn~P;vqBy>e-~=D`zn4jZDf$k9BUyXKtkyrT+Upnq z#gY2%_3{Ig2BnE7vY^>^-wH^e{kimVPiW!gY0n^j6HzQ804rdg>H#-waFPa@L zHX4^}%G%%a{p?-$UOD+_Whm1_PcV=8B}pr|KTe=Z05WRMvg;kc5x_ z-!&N?nYz&+14`Slcsr6WffxPW2_#f zkMxFst78M&aop9V=-UQ{mTY)^1us-U=;y4$-t8Y-Rc&mivK&u4c%o%HS3c_Wfq54|d+|zwt#uEMtjv^0Ll&7l4ayazBiDc!Q{` z92rU`9rSUY{ORlq5+VZS1eU`-?N5U3oGw;pajTcoh}=Tkilt9tpw)S{#o=Hx;debA z?(rA;HQAFab_msHAne~Ag?_tPVMm)LQ4qK;`Q{6?n2*JR@|B=-(K!C_Z`BUMsmxz* z(p?YkQL>$AU7J+U?5)92aYfp}#gZA6NVDZi8FI2(w7Th>^1-~YD*qws?u8*Z*L=6v% znXM2hiiMVQi`6L4#%+TY<`jXuH3{bOyvj2Abgp8vg^>cdW>f&yCJb=sCoVR1TMn_k z3_!mL_&PS%g6^Dk35IbmSN^KrALp+iE!ryS?j0eZ5CV10;XZO6T}YTNFED14+5kTt zt~B-=E7YzA3xdKYE%|8iD0sO6Y&UjB1v@2D>PViu!ngfJeq4$EcO8&V?&fu=5jK5@ z?p1uHT^`dTB9Pc|)4kuXOJwL0ocP~`wDlZS2h5e{%MbV2Ay>Iec1knvsB?AH;YeAH z^b*`52082rr+3@_jPJiLqx}nZj2CKB>JNO4<{!KBw)$!1my)DCPP>Zb`xxR6BJnt~LL@ zT|_UpL8_}~3|`zm7lW+gK(yJE(TfRWjK~Xh;HMbQe*@nxfm?nN9B7b2vcu*Q;f8ithqB^L(7$X7fIv36jqH zw3LQ?ndm&(Vh*SB1r2s;klbB&4E$Xlme)V=P+9qeH>Icr{pU?e&m_0+;``?f0rJrc zOn;WbT-L!I-=)iI*ogjVJkd7^WBooL!#Z;49Twwj1PGfvG_ED}ciQcj<=Is}<|55$ zmAkgq2tMN#Dq!n~(wYUxz~dII=1;;o0#<5F3gb%zKC!P3`~u*aZJ1WCo`hEf|79Xi zo$>qfH}4EM<8$Gkw*mfqw+rIOPfJ7kOgI}*b&>e?zkLJa5-r)MLS333m2vG%T7-HJ z%%MJXVQdX{K8^&pHTTM(41I9zxg-ZDK}sI}n_uv?2o>sK@; z=WCR_*Bq9Gv=I*?&P{MsD$yJ6yo^8jYC5ydTdts9+IM9Uly9wHRGE+c8$4I&GY+ylh?^3rkZiPx(ya88Uc%!H&k@tzRb; zcL%PvR=J}DoGPR5_dWT^FYy~%7p0~X-bj|?C9L0-!fY^{KEhtUUg;;7~$v@Z4bpJ9TJ|&{P6#Ne20dmIr5Mpw7eUT?OqV_^CQ5V`DzOEB6X?XstPmskhWhi*pBJ!^VJf{1b)@Ocs@XDkFR z_@WyOCeRbHILSxx_7{dr&z4iU>^){l{bI#!GR4ElhF^@-F_AmU1mbyK;VBbr@9l&nJ%DL84DGV=4@3naurPmRsrfXLf z_t63?3*y=S@EMtYVEvsftd@ITh>~fmM%Uj1bZu%s89%%E(6_0`X4K5HYc5cqy|$jm z5)H05$)BGl-X>ouN9IK_IV_2ElZdktGT^z1??T_?McQBa*X<7Og`6l)VG52UdF^PO zuU;hHjJ^hv;5DpO36`uM+Bb>z@2ol0r^NoELnj796tvE(xE*&D8om#xAfGM&<<6m!E>&mD1mr|O|gqt`?Qh(b1Sa!%iloWhTL%d>D?4i6z zc(d->Bf7L^H2@NDHjBw#hZDBn_Amr@NgUn}Vr(6CkRROOVP#8Vaxu95+!0}t1Q-#0 zaV>QL!}I~Cuq5+!5-NiS=G<|R62UK0UK{nO^xh{fbLRJ4Q76h$iQYteP#g>?)g_@G z&`XdtDVWO_A^W@(c_89=EDhRqiYRQKCzMG6r1te-uB1@KIHfDNSe?3;o>#VR_Svm_ zAQMaPBpirScmT@M32*ucV+-cK*~#_2q>TuI`8SNFmFqtgq!8u@Ohqa#cYF2_!DC*Z zV1gm@;CL&=NcAPs@4@S}yKT_tETJZl?4!C34`C6(`vYRG;8iTJZ2apia~XtAEc6Q| z@qpiGg_8h>sPkWE33Y?Vngw&==rtuGYGiOmLrrLqDXM#&`6rWf?at-G9fiMl6!j4j zod0)cw5(ngSTqu`_1erR0-xX1rF zO=Y=H@>XLNI_QMI3_HyCb9!wAa`Ni)R4KPR2(!pFy?moC?6e23%=}>25gF{A02r>kKo& zw7BrS93>Wa*irl?cUhT%VaQZ=8mT`s1&T${=r|l%NvEZ(u;$> zmYn&1caP5{z;VLieixI&oXPC;v98Hs%y6avz#RT5gq=48_l)rG>_30Wi~3N`C%?I= zU#i)jX5_Kz( z#|%ux%*qQp({i%u`}=qlf31sUfQa1rnJjIhWo>`=It>kK;Yjw|3NRK?2dby&U$?X} z&Zc-_fzWkO^z%oD?$v0->dN5%is5TFZTjFqjnvp+_>pQMd8g_4=9c7YKe+_t~p z?i~dZ4^w9nA(IwiGUDCnm0%(i$XKDxHoX(SJimB|;MzRh`JJvj5}72*(_JGw?jn^a zNIEr@qe~VQp^#e`)W}riS3x1~Pe&^)^54_dy?re0`^>_>i3E+Bp{7+ZE)|g z*eUY~I$i_mC#V{+mb8n%!zpG8PL}!R0)?r>3)#Ho`l|lTw|X#fmquK@gmuHmwVv&} zjb%UlBktwt^v~V_?#x?njEtLf%goz^bbJMox-waR@ z&T?(#=|?s+K_rL0?`z&44FNkCQ2JOYsU?3+xkCky z?|UCidw$fZf&!OkhNJh8!6%im@1oj&2<-Z<#KB4vi%*8sOU}+~+fUd1Yp$jm)+9Vi z++FV+U>8tQRkp5dUKFS8u~h9%<4$?9R3lW#thI4i^o78@Ruy18#=DNl8C&pZ{Q|B1 zRL(Ul!R_T}zaN^iV5R-(oSI7$Uq09YGV{5b_>^lz;C)GdIHycXaCoU`6f1;o^4JC& zU5?Nr*|@u7J<1LiWu5KO3`+L&Ib6XGOyK#jEYrolmO9>&YK`6Evb-15?E|yAAV4e9 zTk_c+q;22h33qC=e=f+q?VN)zr@}1JmdFTi& zaW=r0jWZl3YgquSLgxU5$kE3f~ ze2>0{23REd=$SUgsSSTQlN?Dybzz+uqgy|1bK#2j1Q>b}NkkWMV&RKukJOuI{NKnzRl%Ro4YesF|y7By!_nxblM|C6pa+fr3syL2ze%nee?AxJ4A zAf=vBi6BynfLEVA#`-f`{(HB*j%HhJju|5&6u<9%dw-sX_K7pF=|ILmKHU}k<8LMk z>ic)Ew4HE4odX~qX3HO3Wqltr9LoGD5FRjx@ay{q)?wQR^!IY-5t+C!R1c5>`zaLa z`j@FqU(!I(%)65w1qOOyL#qbEq_KI7V++R={A@udQ}(w`iEmiQ9U|XQRT5i{e>^il z1o_R08+o{s-GW`FYz^q(f=Tz5y7Cbp->2Au}A!ZcYJWTWY15*5~yRh=%@1Fw#KJp=IHo#Y?Mwo zP-F2CcLCP~O?`aK!8<1Ks5h+==Fyqh8b1^;4!!-r`1JC(pHXJ&DFq&$(WRbKEF=F# zIJJ40@$>SA?(HEbhu938w`VzF6SAE(=DFJt&o(h6+d}SQLrFc}+5G#(+loI%R)3BZ z1P{mjg(lwcQ8esJuI#RbBgo42>*;eTUcoqFmNob%i@td0lUvz$DyUg=5@0>;%zWS7 zTQtE}L%Dnk6R<=t)+O-c-}chfrni3@fWy&uBX}m`RjQD?C`_Ry{*#CM#{OQSUuSj+ zFLdYRE!(56e^!rHjnkBXWk4AJuA?)bDkTlh4 z1_$yQ3aKvR}tKe(RW~3XMs03YjYovl7s7P_1uIesp52`6L%1)Z9pZxI)u>+Hy2q#7C za21m)%F3r*Ir}OKt3c{vhtnOT{dm!DJt~XJaJ2h-5ndzX?_3>*08S$>o88-2YxI)e?MN$@$nm%0Q}`#DK_ipz zi;gTj%FR7_-)iQ@H0Jr-fQ<*BT6vw4HpJKv^|q)d*$zjS&!=jzqI-9HZU--8beb>m z|L1Fn8Rjp5Gk|`CG}kGT{J-w?{5%_BV*Mm^52!T(`vI`&i^sRnjoOpuh5d)$XcfSg z^uyU$I~FVb=ox*Dn5XXa4r$#Yh52-2rb3z^bv;;8NSXV*;X_eHpSxgD;+&$z=D zb%8=5IsaQ3%Rw0Q{FW@nc#nH^$cqQs%v6{Q!%({)lD=IN>{Xb-6+_|-LfKsto^JV>K)e6TRkz4nqd*z{a&+MS`czVKdU(^^XLV8gJ90xoCb)6A zLf+5*k*bf`umhoRWABmhZ%_2<`wfX?)Z43=Y|VkT=ni@&>x{s6fgeX6MRED*)Az)N z?;OCzEIPib&)vzAb=#c}X||sHZD|@BQ^* zm7G&#&n%@f5(-pm=P=^N7LRUya7v?BpB^m&8F@cEPuw8I@1|@p%<{q`oLh&Kd_SiL z{%DRrx><}%amByClk$3a^lLKs1n52H%?;|D4EKuB&f*(>Q2sJ{!+r*E_4MxDG8lR6 zMaD~uWz~9Pk`Fkx^9OG@BdC+(IBF+7gih2^sisPhBs!V?O{`REunMsC1`_<=-pdsj zo?5ef%h2@C`dv{G4Sj13WOZ>g-8tASzgt50_Of45s&wXSOr+6Q&-C5j zN25VCg^$I!X8h%4!M1U5|NkHMUk%3jDYX6|etX&6KHRI>+W~+xp$Lw# zwPKg>_j38zj|1Yr5VcUIi)Pj?s~Azwe1|*C-vxOl^Tj&C6Xvf^)2Qoj-Sg1gq`?}# z&^(?Qgh=6^9M4-Go!Uu};w|M4;`oY!V+rjO$~UtLFqeX?-b5}+^G=_gzAOu}hz&H%)Q*gV$k?_W zLSb$Exx9Yb>+vk%X~{C8I~Mlf(Wt;_l!$xcG{b_)ly-XH|HmPL2)B5Xl%Nm zxxp%lcl$Bh`NK!vj&DM>Feg=J@GY@(R0jkg-6elp1gF~d1#o*?JOow34kWv@L0>CN zcw(1<)3g1P*zftgG<@IdY77A0MuSnDhJavVg zux0tQlb7fL8^6EyIWgo4omlKSCsbz4IRMrD0euIlfS=*F&jqT%CQIJ=@(b2)_@~_f z3(!FoZoX3OO?#R^aIDCZq0@^)C}OT%o)1+a?5KkDMTZmc8k%2t-EDGHV+?ILeDXEU zLfQZqmPL()2TRHfbdOXR)e$mv`tCFDq;UF3z~87HJ>u|VPTqI08S5`k*5IP49=<;X z(E%ShG6F9-b;V-G&2Pk|TiA!f>$$}ut$Ot7T1pdZ?db8O4zV<>&v|IQFL2U^B_(XP$VfvAjp5G`36EPl}Ld)ezQB?lOLvB zLwEXqioZEhdHsUNhg!(s3HRh13n7y7>3r>_g7{zn`B7N=ERS zp3zUx)7xxiBx2&P=tpXP0 zWIsP%@La`I?b!m|?#{{N%N70SzCdT)RN~hprGolt2b+H0QkJQTqGOeAwS6cLZexGf z0fa*F$n$q*pHll~#;+KPif+rW4+(hpXQ;`5e(!5LDG#D}>WYuIC5D&*qI%km9zP9c zL4$_TyMsN*Zs(nwjtxetbC9uE1O@lvwSjE7WAHtgfUYyinzvdY-7~+MOTG{faDD8hP4c9fyEo)uE*JXOEry?nBwgC14P6 zi7S*Q+MAn*W=R4!cS)zZY#L}ikxc-Y;h0i2>Xv1I_k1W#7;#h@3E^Qc*KP>FdtV^v z`1ksOtS(s(;K1EF5H1DKk3HL^TUnNGPsg5LukatQFjfxOf9e=2?&8Uz^tw(!joC5u zpKG&T-z$FRef)|I!DO!r|Lv#08OZa&o5+MS6xpHxu0)_2#S?qyuMMWs$!y2Z!K8gm z`j4g6*eT*-p?*ey#Eo@*c?TIeKHJL$S^G~tdkI*%Y<{1cUf}Vcm}?XlDqQaLIDA$7X0hsyizHuQr}c9sshUI)l&TelYyB}<52$BP)Tp?$eq(xG=` zlV3vJtg0lZxBECmm8QJHNY&gfrqqm{o(2pC|oU*Vd^sQb4 zPNht?4b1!H&D?H-pyB)H;DM3A1A)_y0hR`N?T5_)E6m;|5qA=_Ft}p-{SHZj;}Wdy z$IPNK8{VLz_<&VD9bF^16vd3$y~&}4Ja*E$Clx)c5HEf6Pq}NPcuyz1Di=P55eNrJp?wmhQ1w;mK*#6{dyr0os>RF$ zlzel#<}InQ#1~uU2meE+@yE{^!ePEa$Z8lyP~5=#EM{S(1(S4nb24Ev*T3h;XX+R(&Zy>hzskA&5^s9w2EVfe zSfuuBUoV5|U+Q_EW8P5(I+4g1XZ&2f&(>7^(+H1d9?0koKHxqfGXDLSVZQ;dYMe!` z(tyCwB&bcSY^nj|8*pF;Fu^LyM+(bC6OO~>6A#8KbVCa=BbY@%_Q^ zK6%4mdOrVUbNyoMp{OVuQC*X}d3yJiFVcBTR6(CG=f|LO+E#anuJwUq;|ZY#G$ZRlV5i2Ms<;M;m4P zy+^n!U)?>BxPWIDWdm9CCwf)iOUG6PKY**>x!Bjz%WW7ldyyjC4)L^|f*17$&okTl zQkM2-%Z}O|po&5^balBV zG~X(H5pstWudUy%W2y2#UlzSm!={xnR%!k4Ibq29F^BVweE#kK|L0Sp9BDj3Nu(Jr zR<7c!>->#s6bTuf=3EC#JmyYCUvl)4{5;+I8J1Nrn~PeCKNZ)2g=?EeD~Rirv06Clc<-lZo?(;eOaDPly%IO&@TwTAb!){(tSC* zL3D4CY3MH@6Q2M3e^bOffjt%$dtG0`=M?@8x1)=7SXffIBUGxCuU7a3}WQ4?9*@WKX>&it8?Qd&#qFhAq(@43bCc_a@G1>Rzl zly6m({E)AM=jnqPD~5HhNJtq+>~wLw0THb#!Sik|Eh-gNm3*`4CE36sSQ<&Bo=>@z zik|o-FtED7GW%{_jlQnxq3}FCjb7{t&q+0Tq@j3IKjCsk4(h(LB?3;f;Wr;7=ZwAr z?K)BpLKH+WMpk5b`Ze0UqT1ihD*&T7&4(u#M8_*0Vn67pR3!`kLT)#aM*Q-70$y7U zyz<0xuXez_T7wwxb#{1JPtM8PAW&t}>a*&fZrk7R9liSlwm1|EWVasCr|}{hP1SiE z76s83!Y}odqRfk{6-mn6q`gIyumNBrbnO~rMk7srY)9HD3gPL%Ro?c%DeT8$muL9g z|6NaT$U6X~+jPTS>lfw*X7qxt{KD9-q+)t=L<|(Ci~+Xl1yum;{0vWestK}FgKZ=n zgo~X%3LrZf+|oE+*JFd;Xk{nLjxc*%D{yHRGQaVSZf`NCRKMVo z?5ZZ?L&&@-ooX$?Jqz zqlirV2~JbwLKs6jBk;@Jz6btr5d6fI$(wd{4GA;k-(_(gUu0D7$MJHeR%WLm+mR2* zMgfPl&u|Sc_g|-zF{31iRVRdXJ8HV6-@_*HbvP2u3+l4kMj?73>^M`y$rOw>@USWM z{2xzuC&C^q$q2t(P~%|6cj=yyd$)JV4aFMc@O?Sj7~`zN!jEnWq|KU_G4fZqebq=k zr_o|rO5a!40Z@~jJDTHnhJfle`h4(1RBAaU={4&D-a%gOL;g zo__C2TE;85@1z9XlvflLsGdQF6@*&{6+GcX6n7x4$|Hs6E7q!~WJ}lY<{0Bt;;)8LHpqkq69_Yr7`2TKY7T?~StDsV@UYncpHpNefU18h)IVd6x=gq`K zFOdC3gk#y$u_{FnNq}CHcl;5hoGT3`(-LZie{EY&>N+ItU=6}-Y9HJq@WgJH$bR{$ z52|5TX{gH8@OW2$oLDTv9^c&+J>A#$3s_Ku85u+uH(@6^b{8Zz<{TKF$u+|OeXHI$ zxIYdMi9$7XkK%;?=QG?y+JnY?|8|W zzHRSIm-Oh{MO z`fslp#ug*)ZSV~b6cz6p+p>76B6g*BiR}k+JuJU(xJIXa2|2~x7q+TTi~mcHz0VY@ z`x0}XEzW9s#`a{Kswr@vZLEU^d-=X~=pJ|9?~VvS!s7GMo{*DNUc*@L?A_KT6urKR zj{NI`R5nTPq&1%pV5TI5DIt zNoJ?N-+!KCS9##`=W&)d|KWJGP6D{&jEJo492!K<`RpNksvV`c>;yQ}apu@(zH&Gh zXxt$q2LtwQNAZX2?9fGLU558gj41PTO7Z<9fPK3gCbFm)xtNPh@eld;<;Qr)%_0y$ zDfh>c$g&7t9~B%mN0&!Fer)x5~Rd8jyG-Krl_ETt;e*&IH-zZo2NKK=46&bG|H zTaAA43k@vsgMrB;hAv>5#NV$CHox40gb9{Bp6)28Uv~-CGe$+4}maG3U5sjtS&Jv)yvk%Z`xlHz52#ThLGm^X1 zX@#4W*j0~iIZ;BSFpL`9(`8h#d7GphMH~6YGscMIv2z8CDy-TlGV$SK-Sq zJBbMmfm!)&W_Xyu@r07F*b(U-0m8Uj5UzF#1N)o}S&LR>j%HzCS|GL!0 zxLb1qRvcA&uFpYJcXwv}5@7gp;$cb6zq$5fT(lKa4o3kF1uVC=`1||wu1>=*k|e)7 z@xqUO#TDkaBi^SE;xSa}#KB+J@;*)1>k8Z4dCnOeJ?HllD#D$vQuIlI3C{j53Xd>bvB*&2e}88b=>#Bo&w|aTmMiP76r4YCiUCoE z=ZR(R>m-xL(p_1{QX6y@ulUr7Ycz`F&%c=m4jcr%zpO>p#Jz?4gMiNifOqP*`uS*h zw%OQou&n^yA;R7M{diM$Dz)&y)fEMB6yU~>e?+$3Oc_B{P}mD#;fr^pC^~91f12^< z6bUuJw{p0!;sRFYc0yr?yIXE5g9S{;~6(2Zdt&}GbB=~Ux_?{Ng(q3NKAz|Znu zr&}w2kKb-ns%NvbGDdaS&F?HDwoWWQ`|)8gXZT)Pr7+&)<|V0N$>%3O^z*>$vwLcG zj{NR=`7G~P5LY`O?sogMP*_QfzK8)0OzQd~hUrUL7JlQi%(W2d9*@f7gUNE7iuz?7 z;Z%)KY*cN}c>IVu==@mAkIvjGTY9tg^Ot8=z=sp2X@v}2A>B{d=9=9)8noOZ0|yn$1(g@>qyu~Z9$5|jyuRB ziTCGI;0NEZ((wkxz-x!a@Zam`%ET%#E>3~l*x`xu5Tyr;`Sr%fpReI^`ApVGRWX<- zoDO0v^6B0wB(PY2z~ywYCGDpt?(Of|cF$%XB#*lzwa+~L2;Wt24egKLN@6=NxGDG# z=)oOu|Nnmg?X32cjTh7Rv-9z=yZ~JT_od44e@Bd|jTHEvC)qbxt|4LP64Rf#vZe;y zq_dCIfkV*Sw7gRmBe);k)GgI8^g(U~>7}-LU$gv2_{TVF;47vtgk!)8G`nko5rC&r z(~W6SVsIa=t}=9*;&b!$+~?#)I(}W<{4B^hJ!Af;Pe2K{e_h@3NHSH}HZ!YcKUNx+ z&zJ_6^8H@Y%t%G=h;-0j6~PV-BIiJ!-{c zC;Zy?;N#N)PJq{tsUzWii7_0xN__n}>T^}sDazY*!FBwyV1UHftgzfsBt{zyl;3c7 zyY;IfVa%+L5vdIpzUq&8XYtai$o-F7 z!~1h*JRDXz`GT&JLcnS;P8Tl4b)%awBk>RaItdOUl6EUxUlg8@sd}ytT>@qv3jHpM z*gcA_ zI3oquT&NXG4i*V2&wpIb_Wk-upWT5L{~S-@9#iGZkY=g&{FIjE&$t~9`K+d>zm=mA%9p7glFMEj(^^}D~{#3(j+eZ0Gp9n z34(bRn1QThuKrNi{~g0?;UKH;1WtWnjXR;r!1KAZE&8jzzwiacKxPmPMTBjt>WI%w zJTy9sb3RVB$34zfU*y=C-T0Al-oD|rVk^!Lys@3grTR-bJb=Ck^SXg)l;y{^-N{*7 z%FuZI@l(kSM$n%o+jZiVD0nj6bE9C4l&r5 zkD60L#7d;%oTmIPKgDFh+W0K`y$kCJkES5(&ZYtq5eOa9*?r*wGU1aPzbfg_VdG`g ztU&37rY3vfDg|wug-M|)d=k@+|MP6TFevAFRUSx}g_-ws_s8K4K z?dHdD4Kcv~YeoOSzT$8+;wOZ0QQ5|v&3+NLeVzmL^k8-E0Ap5sU$4q`w`@liMOv{r zJ?9(Hee7aemhJAe-5Q@*=;II^-wq40l+!`mop9@dWs0;<>WWO{w~^=T`KbU6RV{u7 z%)F@B$LB}enK+T!_KsK8J@J|jG(O{STj4ooeuLmJ|L%w&mW9o}k1=E~$c3#95@-(} zA&Nu#Wxt2x=_x?OnLmjn-(qa{7G}58j#)E-E4lz+FK_JQfzL)EgIP(Zm>$I0-R@>Z z&P3f{d3p)c=Zq@bIbG>i0vxF>^cJj@oDldnPZ7-m?5wWG={ULsn;mlg_Q$>HtOwH1 zQ325>wJ68rYd_{2GGodRM&q8$FTL)&VSJRAUv}SLmwAV`Bv|s8vkut}5^gn;g(1fd z=XTx`{KBxok(uFtUHMg}`9-8h6oujh8^7n0*?s9u`JI$=GFa06??R!D-lDr>HqlzD{!_Fh+#mE&CA8^y@D3yTmLbn9loJRxSaT+usNNK1BPr zChEb9N9hTd*h zyO#cwS@ttYHFocRXYB&)+uzpx+LhI1NxD7`e1sDnH)sbUeLmM6#qD1QS$G+|;ksu` z5x#y=+;yp7@)pqN&rF&V?ojZDd+&lel{&aKWx-fTue@WOuhiKZAqv(COT(&AWgcOi zqa8);Wkub<-g+KYvn`PsGVqp!NzOmbf1*u9=@6))Rp2m3X7mKWjQ8EGfR_4=s(0dY zbEKD{_#<%TP6C!hNGnKSsPRq%BHtO-HQHcY+_THwm_fXi%zZpN=stY{+d0kW!&WNg zY23fc;kw*#e-StPGX!gYmH~>}6GHTTJVU6%-2O>eUm1Mge|$?kXX%_Gu^b|vnqi~E z|D(-d_>mSc<;afyVChV5Wb=gJZ-{5}7izm14{pF|xPfdv^dhjBI{ML*-VHx(jsEujYLUy4a7h8M@>+PoSrIm8Ah zk5pGm6|r$Jg6=QVS9i${QDGN{jhb%q#Zp1MD3bxU>~gEj`sK*LtvFz{?CkyM@pfd# z?8usVRV%V9?@wbjpjvG`|1JtbE@PqKZk#cGj2F_bZ+v4g;>F6CR1A-2y8lzmz{1=K z<8y*?w9RQVR6;^fi+_w(7{f|vQj*J;P^wav7qRK}pngDW}$&_EnFRzv6p_@cdY30bgr z_YWa%9|G5MGLY8bX!#K8AQ+4fiyy8UFX8CIH*yMo0^LC*@43f#Sna{MdY3&ULF)$V zyL)Ze`P)OBoGRv^6~k{BICt^1o7h>C*!Av~BMDC^hZ0hbKgR2FQBSKv%umuoruLN* zE~TGP%d3Kz9Ds0)@tA$LDZ?8bY&G!%t%(Nxix5cKD;?%ya*`D>(4u4T_fjBjpE$Z( zMl1$p&*0rxm-{)*fh&2Z#t;7qQivbiFKHTJlXNG%IB6K{wty+II@Er?_0Qpon7bFv~<+;Oxa*E-JKhZZNeI|uhFKFg|!WqLgWGd7f9h845-$+{F|MFs`5%ph9 z;Nh98DrT0M(_bbO(qwRhkL|rW$iu4MKerR0%3)U~>80A!fQ=`uae2)SO8g5S^*_qw zkVt=gvf2S{^797cj@C;H2(RZa1aPT(?oa8QcB*vDe|SY1W}{fQW|A-4FOux$24hBW z58aPa;S-|=W@SrF)u?^R9-o`2xZWZ3+m=;`D;je8+7H=m}1SCTI!HA&)`*oux* z(v|x*oN5Ij%CmLQfa{&pg(DZE|Jca~|FGc(c(dS{68|ct5mru>Ij+Cs>gzy@VTTE zzJB&*)yDyj;`QVqa7hesO0NAX!#Em?i4Z>J#g`gRhhdp--4%nHg z&fn`1tR?|nqZ<_>V(?4TGxs|7`gL!Aw3hH@8ux#q&soIz6xLJB?>n6-;h+j0MT42< z0=Ge2!1K#(p>dQ!>$eBhhv%!wrpxCxA;$H0?ms**|J@VB{`3beNbk}<0x9TD29|G> z4iWK85XX&tGLpRHU?9@yuiBg1DS7|QFMu@G`U?R_87dCEc#L5S^Q=GUTI-4P4TB}o zWDYbQo+8-2;Ud*AKkL!@P1hjRLRtrm(kvy#GCW4FBPx!G1nC6vO+J`GP;nbYlp_YmHPI+9w!_W7%<{FgJ5 zmm>d(ER1=dR1X1?OpOs5V{a$C*BQ<=ObI;xGLI%dJ%(znYS=->YFDy{^@8UhI4jd9 zJZ(tphh-Nc*xp1yl?`hcPoH9z`)|Y*Fd>%erkC@Z?eDaoFuN!Lqqu&5$)G(*cG+{y7(btEl zkx$>bk#2-u5L#-%8`OXgS-pQ=$DWkXO|Px?p=)=@zU=0i+AzfC+j1^x)<2aXJ=Umm z^Fd<11vQ|Hzh@=(;zk<4HREAkl|a+S;%02<72dO}e=GfeB{#c!4S!W70Yx%lzX< z?0|c4-@dKx5X>qNywrO>ctN;tXpdN|LQCU`B_AEqk5cvC;fM>$8|UdE-)$-yx&Kq zi^&@70OFy?5l=9H6cfc)(;$Ayzxp#t0Du_mQ;Tz)30n!fVT>lkfuN8*Chn@a0$aqI z@04t@!ys?T;N9W7_>f7)WLwc5+qeAbF+6S{%xSC~DGUyhRGxsn5#RUqI=R}C-T1By zj38hRfmgX`R-D5d#_G+SE8Z0MUg7o7CF}+PNI@t*6##oo>G&4Dokd-&nSW;W>yx*3 ze4JR!Qg9-nDa}0pE&m8CPsh%w=r{2KGa>#G{Qf87nx>ma>?@f1`9f@j0&w>$-@3gd zi@1Nmr28~di|8X`gz`QWyZAL`C)yrp5VQb0gpu*_>3+BT;hyUhJ9QJKL z_V_4;@1A$8Hq1Z+|1k^0b&u5fd1zdN)ddAqU5Nj`-mo2?4@o`y&!3I?W58Ok{J13Z zU9jl*s;#(;QOHg3?3cOs>w!O_`F+6jAxbH?BHCOL=WbwUam(*1 z$~xN5`g7ZY%EP1B!!hH%E~Cm|K|=k5Hmzs>#;l@0#*-R zpeH_=PWk4Bhz;E`-M7G}h;sTEN3eO#xt#ML!3>}O_`xPlpsD9q)+Lj0zDRp;-@Jd_ zZ4^msd^|mz(7R4~l?sn>+AK$79t>zE-|A6SAaCm9^zxtE1(dD#{YK{D4s!z3;qkrB zNEXU8o;3GydEDMY=j}NIO5jk9Xk$eQBWPSE_0%LkF-Vi4Z*9Q)pXyv8QaPM9A|YI5 zFcvR>?iiW#6{mHaR$#phn0m?yJt3$w+Mp|}G95qr2`+;3BMA5G=Rgiu-T%x-a9=9Z zMH*~$CFm#Wfv?4zOCyu!Ux5eo6yXrPT8H8SIT|l8CKQtQlCMT?!iVviJ!R{`Y#;1t z(6i`}VoG)pi1kI91`*%4E+kqmf)wLkn^DRJRI0=-h^Sooo-vb_c zL>)IZSoR>C|1suYphuwl<${Y-$6xe>WAH|Na2U|bnM5!fwF{s{kg^2Wr|{?V#s1t0 z8H5c1d%C53*KmE|H9JuSYC!gZHfo-on3mS4#|1H|_Osvpq-ZT$VXqkg6k(VbhK%a( zo40Lx*^7TZppHS2a7lDWhsdMq;I?0<)^tiUEqD`2o8ub@CV~qk6CUU+0NQZulDS07 zl-!ixiGq4!>bju5kiveme$Ny+a;2CiIFvDd0Ge9>>jMLF!F60!KESLfEzWf&iiZ`5 zdlxe)8d0&ihY&5s+aH=MzRh;k^SMEAIo(e?y5Z9mTV>p1KeL(Akix@tEe zA#mEfk%bfD#v0AIZY8b;mazX}tmTCK*KUX4IgUW+D7yUr+t)?vZ+#<_EJqQ{_X7JS z%pi(!c~RQ@*$4ZH zG-Z$zQ$3;(m;dW@h(niXSMkq-Eh`dAQYdvOd?o0{FxbVgNd3zrhP;RPldTq44%1#> zNQqZy+qfus^}Dhs;q>Xw)pt5&WY8VKG1lD^=nhi^Em3l;{(N*tT+&75eLZPpX?Lx^ zaqkj)y<*SF{8X$Nc7}| z5N9Z&;@NPy7cH-@f4gN`=l{bXwmuSi4$3!`{fkne?RNYk|NV=Oav|HD*nZCsZ22hX zIvol}VTHZ>7;e==;@fTN=;{9Rjn`5C!qWDX$uq7cQ9}wD%ONIf?}&RtiFl0fHS6%m zCdf1Q{UdgX0dgu_KeGNs%PD#+wDy<#XOx_Sn3CEN#+{>%D`o<*wOn!j%1#rZe?iHM zHqmmGL$HeK9SxIDbK0J5QQ#YWDX|pBv0;mfM8a;yxz^GX>Y=E#v;B_z=E`B<*iI#B1Yk zj?g##0duWz4{zzX_6+ZY_s98g{Xg9a2!T?5lV0u3F^dJ0>y_(UOV~5PiT2VUCPuFj zmiOLzr%S4j;PQZo{@CwgrY3u97w}a2q;j@5j&N}iB$i%_{#mg!x!)|a`l-8(CAm_6 zeC-_~l#?^_&Tog??_UpO-~14H@*{0q(LavX=1d;?B~QOJt2V!s)&~k3;Lus_G$-IB zuz>oX#y(r`R&nFMJDhrd(pl^tF?&TW_2dqKw|>KYdD(*r-k**IN4kHberq~gFSosg z=oj8(9J18U{ikZh=?9>iKOP<|ILDQsx_<6o(h}XKFrz%Pc?lkFI>}kCm)_2<9a;cSTliFgPTw#&_mU|a*<6#r%rxm&l z9l``V`KQH`T?tl|2k!s)i5*Z?HR0uZc0RV5f=en`ctPhOz+ZCl$6`Kd9*E85LYES8 z8>im*yrOZSp09Yn-G{Q6ns@!y$84BhIcNj&we&BX=;`MpYH4?nOXf9TUuLangqPYk zDc0u1M&F*tI)mw4$Sx3lvoB2|;YJahwP1~Id-OOTcKL7~(=p0<1zJ%w4Qqxf_S1q7-=;TEl zu$$4A+~h^C@)}PRC|{f@fy5PLbGC z(yzar{o9=~Dc+}dOc~{9@MIoz!LOQn4K9Ht5Q_iblV<2)M*I5(>1|>z{@b7Rc6*t7 zAGWjn=4enV=lyvy)deo7`<5zMdb|`>2zGe|S;$s*zj8o@@i@|^$hDxIm0WtQ#=7V| z(l2G}P38kK#C7wkEbhgiODP6#Ox$r!yH=+f^~-ar&;hbM<~4ws3LF?y$tXe5V6W{$ z@24`8_s0jvi=daEKunu24t-EDI0i6m-G(bARm@&G@dl`ke^=j*mikp1QC-`AUJ62J zAO=V1{S&_F#>Wdfvda_fm@6rm`wf>W%xI_cec(IvbPOxb!wvn0b~xUvZg^w?=xr|? z)`}6^$L;y{c)%WCl|~Qd$-~uP7jn;1IC+h=9YhN6S$=P#lq6#2ec(z&El#(7;?O63 zkpVK!ue;;9qmReJhxuBMCtalNFT8S)VyugS9l)(jpKPni`Apj|Z1485m$WYpMP=D< z-QmK&{&t-Xey+Un3S{erbELMOGW5%`n;0GwA4K>>D?AskO}P?R%ggu)-_3_XZr?@{ zwP%g|c&OYrqcO$(CxwCbWbNm$!RsY>w>Aso)=Tbolrx0xnOJaVY#SV0arMs2z~<)unPelWg!vh5nWdRuQh(rGZaJFAdO4q*0B$}{ z9HjX4)`LmY*5g~R_HXf@2B&y4*t_UX(f*n}V>II74h~#P;Cw_Qn%t8F7zO|G<8+)N z)rbx5BbWq=A~vw&Fi*gQ^K*Yqr>Rs!Ha6t7RKC%A?knQ={rxZkzHVXz!Dyf9+I%&o z&WSE224MA-yc}RN4V&fZSBdyy8oPC+pysDWmO*PAT(m;G(=(a=J{k64{$D#%u^cBx zemBc#EH@W;6{t`~!v@cvF`zRRg@_uAO{JSIU$#!E*nLD_6n0Tc0E%XFyl+-Zzea5{ z7!t(Qd~H&(KPJ5ppg*G?RQp%oue<5e>cp=VjwNq}n0Xx>{pj!Qnjb6Q?BIqP!kKKT z!vCX63HhC8@%un&QFb24yHbDU@jGGB=&If0*N32w9Y-8*uR$>Beex4}mlk-kJ|L)n zF8TczEvLJ~&}gq*dYm4#><0O36k~MV+vDBuK-yh#qFnBAF-l2@k(}{(risr`hi?yo( zVn;xIaRf_t8u%6WGz7L-N?fKvpe@;U(O*VNwXnOTco1e%WZQQcNgIMqq_^8{hf5a6 z=YGuKBa5h^Smg4{bKz|DtsWlr$sZ|K0n;BXpU0!NzFO-LWFJ>H^vDk?t+LPcACJcc z^A=;Qv*5h|ZzLGxnrNcj)W{|>iu=nYaE*fD9N#TMNCRC?QsEb|r3@g~{2}2K>GMpA zn@|fHCr~v&^Uh8e1dqaUT2c~H#1KBCtOC>oCy+K~sHOhjU5)-q(jD#tV00~b5K3Uk zUJ#!|1MAPl6%zyp_nU1S4hNroorxKThi6d-&dYmm=x3eIBafWoEbIjSgMs;9_7%=z z`}V_G899ZZN1FTl*J%#O127?fIe7h5Gxrtw*Jp>TX#5`f9=1=s-?S@XgDJ{B(eR#j zkQsFK3Ge9*{TQ!4LJUD5;`ZGQ!?5?Z!Sv650o!_ZkFMMb6u$WU%ge)B%&-S8ujt8h zb|UVxKUqORIXmLp2DO}pb!v88YnB2qo!zVbcvS!T!`Jbob2%8Ib$5RWtpMU4iEcN~ zB@y2DpoIAvJ(l<6x5_mcnA87a@6CFhSNAQi;tr6C3qHXs5D1jw*p3rBE{c-u#CGDo zcN~ceJ8@#ieH+ITSBUS;$l7%dha-wYT<@j5wVHR%nM}vc^Njx(zkxeOoxUO>0NMVq zi87=<@|-I2Z_FioLH=t!al8W&P(+(l`cfZQ**WsFXSA`$J{TrL$)e*R-Z${Ck>8v{ z+!Q=tFhCBizB24FXIW9^w)V-|TS$?x2{hD^@+<_8+LQk5@}vN_A&~&5*&oR>br!9i z#!4h1!YQ||xsQ^k`Kjz%B=XG7G36BWE@XiC!(S{Nd;Y}0SAd*v`&a&AokQ?iF@D?7 zM-DU$l!n7LjFvQ5^z%Gyix2;F=KcYJZvTF-^v6Fk#8bmX#D#(ufwy7uXAB#+TbFxsxb_fKsItd7f(ex4%F54r%(JJzBaX-In%pzdA zCSDQ*)4qQoAA~BV2S-!Io;WD#0DtxCbp@#V=j{WaZ{1bNVYhPOb%|BZUQwaOl9yzO zZ2Od;T5x`oSKqqMjeV0+iz&=O$Nh5$;5Yz?>yaECn0(0WvzKYl-Sg6OsCFVc)J~uw zJ=1CR5Bzf$FFnc^2YBiR+LGzpK|x+&1G#q`Az?B^ zfjW35%Qy3_3K1NW|5krb>9Yen9o#d#CYHyFMqB3b)Kn#{uOL=qgK zS~EC|_o8?|2ZBZoE5*gEkBDOi-Q_I8Ulm_c0?>wkmW{}h-Ty5cac}MO1FUWC`+hvP z4|JqsFw60);L#rw*C`4iD!s+|L2W5XIuE`lS(D^ShZ-2Dr9Q2Q@hCdN7NBuyA3KUr zk5~}itgY4Fu!Dn$5p*6sE*gaXdfvaJ=7A<*_^&7o-)Q=B=Z`PSS3R!U?O|cp;*Z)l zb|RwFNg?+IwO2F^n(M8;!5|yoZuCi$Q;QbDX**HbQh)A_dq&rygF*6zIPz8wT%Ge& z^{9cyf133uw$3kv(A^yY(=@J~8$SaB=s&MIcZU{*Guz3DDauFwdB*v~aU`0djc1wX z91Nrjjec{M7Oy<_!79HzmL7bN*V-dqZa!0U=bV6nM+p?NkB74Fu+ZY22oEK1r^>od zUF2VFZ^T1gj4$Rz-G`56=pWL-IK9)u&+J<73kQ*u47J03=PM+gYm>&`)*SYw@&t1# z{eFGx&r^sE&`iEG1{xGiXT|cIb%$ZF5ZR2k$8BV&-ZTtmx4rS_LjhU%#eR-aX1`_OjtVKJkFM#E-F!pF0J+3 z1X-+czzvn!qATTW&D!O%TNbU7+YhS~mVk!}`hjdji_+uK%#KQP82s?_feN}4h|T3G zKCo)GuY?6W@k*7zasK%6?-z5P`w@Rl!vW8o&k* z0>eb_TQ5A@V=3V^CL>Odp05byiv2 z^M0qH1cR}3_Hl0@i2nNXxO*=L2@_FxViyAS9Lw?IvNZeg+8%|?`6XB#QlV9zvq?vTN0XG4@S zgFhiG0g!{yB&Jb%pQUL{@Z#6pLDb!B*<;307VB=h@309Graq z&D?)k2V{h&eeUjp_xrd0Kuh|43w94K^~w@A1u|@J-t(T1hkj9%4c~4!6MRK?9MQZa zR{K*;_DV>;AOWR2S8U<0-hS-FEV0s}nqam?Y*6dE*Pj-q@2k9JcDyb3 ze=U}<-d<(}mMlCdc)UOUC>%hGNHNLZMdTMSn zzpmF^i=`c)MOp4m>)}mdjTU0A*0EXO%1@(e!sy9@XSKc8_0@KF1H2#02lkbhC3~v) zc8>en^N5egzYOf6Fv&urkMyhEJ#EhH+e9O(HJyI5)4w_q$K-xP7RtixQbuaxxnK^( zu4($f0k-$)L^m}wpx(*vyMogRv>z;+YLP%h+V}r4aI&ar|b6ua!T^Q%A z)edyRu`v6QDwV7 zd^W>}_`yXvFb6&tf+U3vIO~(I2d_bV%+$#=^@e<8V^^>@_)e;;4QFcSW4gJjc#049 z_2lN$IGV2OBBe`Iw!$p6X=rO#uec@}?Eji~&)ul)w!!M+n%wpYvfwS|J5TM`UAr)m zS^L*4;@_|EIbA=Ek@e>Y3U>Q(k7t|B@M=gfvFrfPz`--@%d+zF{TRF%@;9GSh?Z}B zZ_wbww4JA^dv72oPQ{`E;O4{E2Tb}GU@Qa=-Z)tF@?4N{A-A{r?YAoFpLP_88x{W1g>W^Ax3j$~ruGlNj(@7xn>gOY#!v z8%T5?<^c4{ewJY0-p5S|Zu)-clpaY;e)AE)SC5cG+P!uwtejA#turRRWm?4#UM+li zdsL0qf@AbYj?x=?Sb#DR>V@dn4nP=n)P%8d>&sPK4(4Sxb zTF;m;a-4bGPsk^fB>y*m7L`Y6@`&f?*0KoyeGWu_#$+13S`>H)*?vc3Qu|u9H`N?n zPDW^eB9LVF9_yy&h(?c3)QL6X6~TcgSX8~z{#Xi-q<}{7x!_4-TqyeA^v6y+73~m$ zNsl{0?e+A!zQ;w`SQGhrs>d7iiascXO829sJ<)?WTr~^^Un#=L#E7|~5B@!%U&n`C zJFnwRtC5RNlVk(Sy=Q%n=Ecnzg~yO+91*ysL82V#T`pXHUZ9KS>ERsQt(Cw!VU7a} zluz-tA6(^QU)UohelsP_D^XeaniyGlxe`1_()ENjt^WSJj=PdnG!sf{eM#Y{0*yulqEWcofX{HN}hJ`A(n6i=N)%8<1Xi z=W-!Sp=cg%Fb)HxR{|l9oq(mO{rJLf<{|k9%0%a+J+Axcy;1MzPO{ORE$+WT{H#HB zN_?G;q8%gL#Xj)AgPMzovk8y$gp%|S^~eNl-Qe$g@gi^0U0-H#16LG|bqAdzM)l!6 zVXkq}vt@>YzKmyQL|V`94*?01zA3m8@R4s*34ycy{Od zu|8yF%+Ve=Xz)*lhA6rDHkg3i>D)<~x}sIkFJY_T%cI>IVv~!`72X01`9a;m5xd>b z)0w_2K@e2smnS>iV^!5HxAh%PYcRzF=PpFYvc&xKid5x+xGM56=ob~402DuVpm$aTMb`mZ)g1PbdXNoe%ind(p?t-j!|_ zvY=LliMsJ9w^!$8{dVr@1GfIy*z^Dy1LfB2!p+j@)aX5KcpIBu_iiGVcSa_b(-#1^ zK99&SP?3>+X)HPL`#J&`q!$+c(RWlHH~Rpg)5_fj&PZorOfAyBzMRTL(W1B4Mefz@ zfQs42$j`dbeZ`D1{1z-;0Ohsj9=`T*gaVcGvFJC1N?-Gd#F52 z&|8(ec&vO|X5>ojvvVryj;f9@E(1Uj82ji5Ca3uYX2Kn% z)Ag(K+29jFtDu~<0&`O#eYevF{}Gz5-N3h@cix?`F{CKn+5pOjKTb}WtJU>Ipa<}C zloyW+3n=$47^y`KPDwK@4*D^aV~$Jn+Zt>(+scTz4e;M>b+pi{2rjmcEFjTZgI z4UDA7)kO)Tsg(q=^`r4DR{0|==v{enZw4)AZ@goCKK9;MOK0?tH$?TA9(fNYYUWF6 zHzRKZ$B0#m1)P24_GLXRPQmcRR2eL`7TsVrr4-4__18O0wHFu0Zd1|Zm^%%Q3J;+7 zvfk6U6UWC__?69{?tPIM&YMaB2HJj{DNv#R3UMrc!(PdCIeCL+cpE=v6Up{3U#@zF zR%EK9T=9#@LQ(pt0Qm&9-BJhSyi3}?+GTqfFD^_vo8n;#Kb;>8W3)2JK$>O=`U@*D zL-vJ~zltHs4l)RWxt|mfBTRK-eVCk1{32SR|J=9E?HybObRTc~d3QvbD|E8D+1X^`#X(yj0)by|ud?az@&O>S*Hn0}*tX+PdbaEyh@iwT9uC zDs`7=YW!cmVP7god7FJ-q?34FqdDL=Pg!%Hu8|1*0&k_vw%kdscmsE@tq11a1gD1_ zA}X~*voX3f??{WC5Lx}Jt7Z@_3PA!a>Wsz#(n@$e%_lI?XIvxd4lBH8xqEseH!M~L z9BqL3Ndn{q6MoC5x7W|glPs_;(B9ncV{dkpirj2fg0b(mnSA!`676EO#RqHO+gNzp zt=qxyxX_?gZPNOBT_uNp_Iu(4j$G?lS|eN!CbiSBhgg&^Y4K9~J6AII|Mt2Ft-o(5 zKHiMj|05cZy*`SM=Xj^OSUr1nbJ+(}7loUP-==i!$y#!x^zzLymd#EfK_OPeHa9S5 z4`@edgL@;%A|kwNb0(fYChy^j4q#sm^cX8WGH%w0^FOIzy;>}ION}5t*~*Cq`h)Jc z-`yjbJ|lnhMJ`#}4Rtzy&o>&$T5xSn?E2mCY!KZqg#!?N4E6E85b?WdC8N~n;JGFk z9xivQv6gMC)Bce?UDfv>W2W?+kKb@S(PzTiV_!4Tu~Q36q&({WbnYVD9zum}yL59w zAJZ?(M3b*?G9Pj8CBKN8xZZnQrAv@KE8=n}u@-*hHq2D{5j7+?c-FV6-#59wv+k<& zjcqo@N~G8iV)vz%LSE;C`1J+}Yi0DU^xHjr{2_76TJA3;p4?+iKC3O0)xd=iOTqBg1}9k0l;vT}`cqe1GBR*dA9O z&o2E!(?~Zb)TS($!P|DHvw1m$YNH^5m%&kl5O{-)lspZ;!0vVWp| z%MXo8_-Kfh%<~Qg+nN!sl|(SF_x1ns=4T}tf^U4lrVuMh=2BU-22#cGfz}Y_^ zZ*ED5J+Exb7;YSDnkl!=(VIvyZ|^6PWmTbjEWic4KOrKon~gEkO*qF2EE?AvwL>+| zMO)vjb-nfxWXA%-5?Zyf=k0rGA#Ox@n89wo-EJ*WH?JqOtb?XK;4>`h6IGnX5p?^> zrYt!}Vd=iMjgAr?yj=B*+&v5lQ6y7cwJClXmo1lzoC4K~UrV}w;>LUH?d8jE^OuR` zc(o>J!@L(|aA(DR^xiTOfw<*P)N>Bgp7-Ui7EF^4t5$=D{1<3VMOi|A@W&6FSbaIc~RLo<-Oz7X0T{ ztkhX=F{wvZ1r|s6`CvGU5}JO$-;f=rsXiVdhY`}E`gf(7;iY}NiXKM^AqEz7>VuWk zP>Ua7(2UW#MWYvLg#DVPUQ6jC#F>{1dppl2+7qq}(3rOyGk#ahbdk?Avk2K7;9Cwbh2X%nN2mJbtmKMW1j%$$GuJMQ>}mz%y+1?`f(o zSGuDSBxLqaSaq3|->Tzn`xbv%uKN1;3MxM%eQuM-kvzV7tTj$8gwl2t&hjIXgr*2f zcrprlh8xX$oT4z&k~>PElg4ksZUv(glnnOezKcW+JQg5iI~&hT88nOQ**;JeOI-bb zdJP{U!qZGwO7?*vVp6$(p14ge(3g!yfpxxTV|QQw#kgXAdRr~t0jRK%T+?2&uB0U` zvfkm@>c*}z{_+YkUcq%>&H_9afTv7ANit?O?`}xZ02ity*W!W>&hL)9??#X>V0Yy7 zuM$%c+|anKeP6pX+pk3U5fQDBTcMM{F+9&;o-j{`^1=A01wM^AZO63NbKe^w5I1Lj zP8e48EKl@)I;d$OZnEoiVup`3hYj^SX^ObJzd^21s?azG0q3l#$uO+BdhJWRr`)5W zt{(l&KsP(b0<0;c)~>Q)E7o6HhG9|7p_Q_m^pui^6OK@ zWAI4A-kyeo7d1LQ=jXj) zXmz?guSn&iMEE3dAX`Wow!#*UJQ&$8hd(_`pm;O!r4v)@{qVe3SSs;#ws!T!PDBKsxt< zNwT*^5eW2F^s5}t@TSVV6tYO6rmTnKDSv-FxyzAz;Hi1ji&zD~P5)5WPTpw91Uq&5&FkzMYi+yBNcG0fI#wu-d=&)E$gV4VsqYZ8 z=eEMRh*?x=>BTYlE(%?NP*EBCIny-U@5kfERbV$Cig4I~0~68NJbEk(YYDtS?%-CB zH=V>!bU^Kni2jEl)jb&OK7U#Ys#xW&*{8BT5f1wx9E2Z86O;yGru7Py<;LdnJx#Tq z;J5RM@;pJu$MBFkoz6d&&qiCgI|>Rq#{(F4Gvu&J)UQu8zUT0}CFw~fx-5Df-KG|D zGPhL9+d1uC!2}~y3Q+dYvItN`SXjS%_CzgkQH~`qxa}^#v+Z$gQTPse*rIEPai6N7 zo640^ar&W*_Ig@4`>=ZgtBhwdsMvbVKAiDzWDj@e*qk`Ju(t;bbF39ijq!t9U^n%f z=hkI3a$`MLQkcvwc1$3r=&q602U0Uh($i!E296oc^LvscDa@JBoQh8|ols8jeY@+! z(nKwNg5ar~x#M(03P@WaU`@?i0z2e&V&3;OC}p&w#}_`cId=IB@El$;w46?LPg}1m zwkIzNoUaKcGGPo&IO1oFv&fNqSn#U(-{d{!=LrKE*-WK#I$4%6&tEwm5!7+O_tT^G zolRnuc=Tc823q=Uhmy@jBo1X1w}2s4gH?YHN&c!=De>j6A&Q0vs*KN#(pI0!o6ZTX zm*{XdI;6?9LJonC$aTp1o0q!jzW6Lc_W{zgFT5@oLD&@BYr^Es$eHe{MgOaJQS1R- zBZymnh`@h;TepFIY~YY|&0lf>AVBm4KD6w!dsx+p2an_NOE3cmQKZfq^-!VK3xqI8R^nk+ACh}D- zf>8-PX!FN8Veb!a4ztZVTl;jk$3x;gzYQ4c*1c{aC?l*|bw`d2`yXO@;FBrKQ z^1{s#-L9S+Uhuwp>(qP1^Hq%qDj}7vG#~Z^Dr-9v3(xH4pH=4>4s#u9Bkt}u&Iuln z3EzPz^o38ttXdzb__4+zf2@A%!*Ef62bcD!M~wZoDI$5g7GR~b@KC^YJ%-b%okCB& zYs@w1Kb3A66?OWBh!@V5S}>rupozTLu0xL@45l!%Mj5VMhy29dI>8gi`&8PjZkSou z;`LTP;}t+u+*@&fe6j4Dzu^&d{Q0|Kb|@P1J5tUS+y?UqoF5bd^ue$iJ`ue{={FgA zyyD`SC(5np(v!7=s(GaO;~PGT5`AD|iJaVeIKBC{n<9N1<&wk#PtC@_-vJgmL|>{4 zz;s2Y&P(temBl<T_5Pdh2E5wzo0YTyRno8|rcj_T~Wp@Qq+**D)*3K=r)O?(gpBBfeeP?7NotU!HzycA_!(HS-xV0~l|8dN{l8J5H zW#l0u+s}mkKV4-*S}y)5Pabts|y!6oeMVhWZ@SS6~6gSaR<-%taj^Eijvpv zRm+_T#prwLW43{Hyp+`q-3i!?s>y_E@FZu{^y^HGqfr2>%{Y@aQNCUlfcF#xk+i%N zGe4@}Lw;3@{~F+-pUCDauHbjFbn}9qmXZ%ukL$4(5paImC6Q8R$l}GRjPonrC{_EZ zY>M!f6+qi?_iZE9o@6VUoqiab1$kTT{fT6Q`>Yn)#!?v z<4=-0wV+*bM(*&TsKVAQnZg<2xYD}v7y4&W16yz;5aho1%zs#Y%`yo<6s6l@8`?1w86T~BnAClFB~ zN-_p}db>`GD|IqpTphUMQ3Q7p%zx%M!flV<+g1R+WDm_*f@tPlM#4jOeeZwo_{efY z{lzWNRZ5};AiKq=oi@&u;et67qdX@R3HQXETki zKuLT!D;0bmgNj65!pD{m5&x%SAMcZbNYZOn$>2v^zelK(BA1{Q@My#^dA4$7L5chI zeekHGQNxKs9@l(Ngy_Tc;%rd1WTT>9jQy5)PUaqY-~H7ECm}6KKBYPvTq?a!KIUJM zLrOc7saxi(+*LoV$9NpF@a$G(s9(qDCOH`W&0g0c*pqhdyZWhVb3wbwjcC4xZ_K~k z1eb;PsNKzJzJAT+8Z{bfnEXzR|C6s_>LH$HB%Di%iLB%u^j@SEaLoi~D_d3RK7CIq{C`5Y6^i^Ns5@PU!6VmygR{t(=?YElwb3mV?9y~LKzIZoG26m&U&;gVPU1&A$ zmu>4RgFJj*`~TP1NazoqtHYr6^Tb|!m`JuXLs-}Mc&aaSzjX{45ybE?!p_sj?E{XY zW-NRZ0;Rt_FrEO<1^0)3agzKUYv`K)p%()^?4o1dc*}=7H583qcEoqTumh2>+%pV5 zP-dC(+DYaae&926QjKI~8ct4$-%MR6@^1=V&T%? zF?1X}bR9P^kKeyztmOOMm%Jw$dJeSBfoOFA$H5W(sNG}g3+Q=m<1DGiS$1^?dJPPh zkN5eT@8IV%?6$Y%V_gw`AT6*xu5&{Ft&9DR?#Amt;=F%W$@S!0v|LJDy!P0SN<>63 z9IkckQ(m+*rMz@|aNn0tpgX9d??^p5-Ok3Q?W^tuf!uA-0|eB*;MYZzwsslhr8=c8 z>jXyK+*6Z|%h@MMzl&()n^3OKRu46SFlpZT9J5Hy$82M#VSU2{NA$Dc{==iF-HHr% zt8nq~^`K+#--3xuHC$4A_dt&iXG^w8u_w>=X+|%^mP>J;DhpFRSMLnfvf3S8cr_|l zMCb9w9>>^!*6eHjgEpC&wYPYCY z?1LVFXp#>&)44cZH@8FG54fg%ZcZXF906*cbmersQoW2gwQ+um^i?jWk(YQ)=vo1M zEiIqIT4Ys#!5=XD5A5v;{*L?WK8&M>zj*~H1Vr^wi#Jb2;d$Wvv+KY%b;Df3JD$qR zc_lXFd0B?TWOQrD1M&ot#~q(pzdm}w3mM|RfvIkc0-KK(b_0B5wAPF$DEM94w~X9^ zyx$Dj*%~x|17l(FyAD-#3fPm1`Bn0I#CTe_H-O=;FZi|*@uA%DcXI=De0hr&(x#{F zyvdaMVDWFAJK~-VX#rl16Fhws*|E?e81nfHva+zY*AKaHKw}f5d(iC%m%;>pZ4b({ zB94u?Yx?G0HP|}vdCPz&#no48*O$C=a4AeIt3 zzJ1MEEQw-rlJ=9spgj_qfuHA^ylh12{L1?)5DLT?Dw^MW5rG(0$;nzS{ zx6G%z9FZ8iC>29{xn_mo*1E+5 z^0Z@%I-Ayji<<{*jkFHE08!u9}2XI9k|K!2H(=3mj{%%j>8%@*% zfrwa@gUMlxQl4+gWkXTXx>vzIke|uNLmUaN4o97CBsjT|jcPNKt`jfLlVS7PY2eyh zRu<)D{)KeT-Qt+pGW0yt!v}s)>xg|MjE8Lr$(Y-ux5NflYBfLFj|Pu^fnkN*#H$+6 z4Ug>;`}heX>e=X$u6{ln?)^E2;CfWIYPk?kdf1C#q$aq*!KEx+rf|d!u|qbdx$SDd z)-FCfc?_Mjm;txRi+_Le*Ux<9#(R|xFkxI!JPt}mMRj)%%`qsz^*KDbdlr>VFHl5% z)I%oHB_BLWt%8@cS9Q_OOGJZJB^3{DH||5$Nx<1L+zNEoK*=6qx&>DCdQw)x#q+%X z&8ym>yOqK%W^7yj-kV;2E}LQv(lcG1I@3RG`#l&pm~D8_s>h)V1>ww*3X- z-^OwLED490rRxuFe@vE_ zdik;L54(pRs>sM6827q;b@ds%i8D->@HWuwMEC$+Z-3w!|6ZfOk;`2gh(dU$Qrny} z;d$Xf&m3++e?`vf`G#%jXYcgcYquo}&=Q`f;}QOCiy7fTdL2_5xy@1{PoEn|C1-f` zjTZ`Qo(Gd})}enM%&9m9*i+)yB=BTriiIhb*beqVjBLV?UCxEO^j z>#^rXL|mMUn<66Heug5DY%<(j7+iu6XWhV_bD1u;t!PtR=mxvm$sH6KFpgWD^|`h_ z2CABlck|VhNUeZeGi>>0Lru3hDzmUc@4Vc2wk*vksP#)9G~l7?k0l}!8}iZK-F16L zQ&g`2qq3<@?_v1hLYd`mb}qq3Z@1@5*?o=b`x0!4iWLE# zuZR?K#F)>$+LUF(2gNQbsObB+Vcx5dl~bZ^n7oz43p?^~zg;q~wLNXibKu}jJ_>Z2 z@KyxMl6G$Ya-3nhX@Te&C5nu-j$q#Q*%zq`u24cq6lCx00ZAJ5`F zchoUl=>VEV+qdMP7F*Z-XlY*I9mPZ~>$+3ddteXyM;SFRXR#!byhm!r!%@&W0ojo7 z9%3QH#Dnz zUis4IG0?ocRX&uX`X+I{qfk!VpR3xDNw-;+476f1pmkxTpg{|`|7dL7zC7U^K|PrA zJegayrUJp|Wgjgm_p(ZP^yye+wVVSppOw5mvdJ`T5quHLbH|+-uU79&+>xjq zIo3zw-Zc>{T<`YtJ}79b2(|&VbBIE@2S!HDeMJ|9CR@qXPB`}Jfw_VEs_x9P8&HKY z1t-<_3G~-a@fEd%VjP(4`c%@m`(+~V3MzvU22p|4F5#gH) z-|ctbKFTlYv_3PF@&%VfNyd+~|i>gWt%< z@Y{bRv2b8Fiazpo5=5;hDbrQ*>L>b;o*6ImXX)vEfVHEZ#%C{y#m`^V@x9)r*y*X7wzCbC zW`?h`4tS_EKTpzDu}G9KG#>bxdlhFAil63$i))*~kb75eVAgE8i&<2>RrRg@fxl#TQQX2dPQ&zpi2CWFA z1AdQCg!WcgLWD4IiDudLuC}9S71hP8w9)*$Go%J`{-Yo~wTie<9Q`-f{OC6%VavpW zIUS{QehzNJE&UvxDOoakYwfC!IQW#%U+`IPt0HWm&3uH6D-Cm%5UHo1wdx>KPXG%@Fe4 zA10B+9D4Yxn=5hX{WXf-&(Tr3L}XIifDhJg;=nOO@$;r?61M5`lS*B9qPMhyeqR=Tv}c5i zgOjUm;_NZYj66zX3(hc9BA7ONOH0fnf*>I3qpuG5Up&hH>izg0P3vi4yGtPx>;?W6 zby1^tN`AV;2aDuoGwesfmKQZ~J_li+@LgdVa51CClO$d++h;y^42?y^;P1zZ;#rEH znRoo0o>(VK*JniKEp=AJ@I{krZcJo>8OLg{oLB2q7;O*5_VyOd)VPS|>|iNuefEHW zpwRX!eA!-7fvXR~eINms)o@tro!jE5l6%V%bG!S9bWXl+5!L{*Ic}x{%jrqY)TT0x zpeJ62x2)U`v4bc-Iz8EyxF^Dk8RorXF>^O|{Aiv+YebE*yY$2?UC%UFB0Rxy%Q_SA zCob@k=`ymct#&1F$)l%Z@=MZD2ByeKGZ!mV?AeA7k5Mqct;AO!HNVZNo0)vxj`Mz~ zOuxehdqk0Xv`Kt4l*^upCx`|JEalx$TB?5m*8V2`>2fsqK)F8R!eBb!kYBd%1ee0} zAgn~FE!L|lpUCK&VqPH^co8E3Lg{-#Ot?4PP*Y!1_e3xz_3^m<+HEqWoSC z+~cp-@}VdEv)-VDCETFdk6DyoX1An`Umr)+_F{k9Zc*$#q4`aM=!o)!{r97OSxUP{O1Y3on<`e1%pG!Rh zV)1xoGx!Xf4f-coAjV;V9l=;&VT5Vm`_m&DMQ9LFt**W%aUP>}o)=Q^QtHIl#yg^L zLh4y(d;YkD3uAsi0*Qo^_tfWSSb^&qdI(0y_otlpT3R^;FVjz{y4A8A+pmk*1n@|^ zlHw@o&>8*EkaPD1DJK1K${$Gx2JDt^15!d!rAy}NdnP|XRQLIGSj`|8g+*py6CPvm zaoHbZb*CO!-GB`jD>SFWp7rM;@eBne1WwR)C|caVagxaI*@FO~@DDAzfx_DIY8 zm`XrhAriJkwQ_qtYusZ`*l1fYN74jTiWISPWaz&Dv5eQ@m$^LESda^FHVBfemCms2 zz+cmK>~)ZRTCqPw`u=da6V1huOD+G8diNgHI!gpAd*0N`)bxjks+$B67CA zKi5VlZMU+XY4xH+>jCUe^l|>~70PFe2N>lpx$qmSP?oXpQFy7^7y1~eb*Y^we0Ct>4j)s2MRIHes2rWy~4m4PI&YwU-BlTcA1kmFLk)~S6Eyk zteXd!-%5xfv?m2{ol`gT?^nye?~320{_xyw-*@(%)_OYx0RpwWnxOiFFaf{bq5rsU z!!4N7LMiNK5Vc;@7XssMo{0~P^Fl+Uc5QJbNp51!{P09S2H>R1(vR64nkW;SP+@cN zG_4$vpUB~Ee1lbtlHq-w3j@+^U~Hi27eAABhz{lhyI^1ndOXH?BmuNFE(%u9H;(Jg zr<0)h1cnRB42({o8L`GXpr`$!F?aPO2}3&{vEAIMFkH<0O(uFLUWTp(i$V6lpI!Ld zgJK~Ac|M(8>+yT5zysgOYP11^6UwtP+Q+51kFfizFic2Prd*HJ^-}ZY&)=_Mp60(| z$@Lw!{RErQJAOKRD5Ywj9Ys>f5~kORJ`gM}@NNl{;2s(6>rL(FJAFBpR|CV}OKd-^ z-LVK38|C!sJNCn48L3frCLr1JgWzi^Ik2b$TrRudrR)*l<@k!lK`}ex{XU&*+L{|B zazFL<@?G9@s;5c3`64XTaw`j(G(l$E0vN=uLL+qdX*%iZkc+WPF&&trb&3c0=8T&ytqGYS(5O2G0LArUvPhKyb zb=JTnv(d2B6BMxTnB8pM#hkC~CWK>S*lN=IxA_g|6PVwkCVh7e($)=ma(8ypR)hH> znigUj)`jQJZc*Gz38b!B09>y@rr1w}u!W6og{RWQftqOeTi>cN8Z6^hjld)sM%kazp|EovU z{c0eM`KAr0l#LivvA?(3aHPT#ghX>X0nH!Y=<1y`yvLdMQf@E3$yhDc-1Z12mT@?O z+IHMn=88Ur&2z#ND5D4lb0a&bh0VM@{ScjP8VubyKjX2>w_3KDfunfd_Iquq z;*2`I_vdoUnj5XA)^NWsiS6Az`)=eeH1n%$}7b zg%86D&~|{O2V;cWH0=A2({M1h*g6KKO3|-g0bnpVz;L-9lln4Vd%6GNm8|o+T5fv72||A!3ja08BwP@T#MyGcKlijD zc>B+;d7%22V(jC4`)oDjqwx|M+SHJ-pj~49>>@plF7F(ytrJp^AAhO=eM>LP?(huQ zo;iF`dRWp9TkF2n9@=;FuvL^*9<6YLN9=W1n9apz=GIJaa=IzsG_K<>7V^D+U0DO1 zp_)X8JOoU@@#D=Cn0jtwg*J^tZxPG(!#$wm6mB!ZQ*d@?!34R+b(p3v74UW_rj=Z% zptPF_OP<(Y1GR}__yMAFKYGth+F)3V<*7+*dJqO)CxnD+koIEWl1@J4)P`A(y`(vzSB$t*pW7OezcrRLp zf>gs57i%E83#{5NMr={*oKZUYNO8#?T=aFC^IF|NXTux^U$b=Y97|mKph?oxc^VWS zhdT%SMPNgbFKZn@Mo;QH*_SAeyuM~;k~$@w1DrKc2_C%JLY z-}LBk#}x(IP+7NK*?Tx{4GH5nnAV;eL_nCE&3t=CfCbFlG4C?!sO={VHfw@`MoWou zzm+_-KpJFt4Ya*QMZ;}CI8w5nCECQHWGgN540T023`N4Ej{M-=xrfvzejP>Vsek2Y}*0N8=YTuyAtTVPqEh@_ptm4G~(`jWTS#4 z44nW)27$s>1X~!+P6P#7rW~`9 zt18QxJ4KDlCSUdM#0;mKlfW+S3|kP0C1%uplcbrm zy#1oN-uUaA3+j`<>*q~Ee&yipwo9q!EXqbsROfCt_+~V4KRM`1DAq+#fw=T*cMk>r zlMa}>=rl@0_LyG5MK0X{>z1OU70UO&5U<;#dV6>K@#QK*@H)lkSgGqn zkd~uwxnRsQT^;((vYyL6zvQVb2ynhUoGZ2x4d6cTRps?dU53le$96**-Qe=p{n*xw zo~Yp-TnWWN9}0XD%Hh!!RgOzT3Pc=~Sd(HRzQtRHBrdNV$*WRum+QAo>CsLkGZY@1 zcm#gFkO6~V5;E{!{kbF^in70j<4oxu&gG!rTVAKd8-Ey7mo9J$=JeJ66|^Ig<_ zq7wcgGtJu$g(zLvxz~ycLE*)FmPq#ai2;5EWr(JcXq_h&Bk#D(Hnm zFY*bU#7L`g-UpzPZOHZpYRO}DFMSLZ)Ll4^ELcCA)b9=-2|*Ne(QbM~IvTUoqfuWY zlYe?&&{V?aRpoSYgPk*3JY#k;yUX{v>NM!TVV-EappN@+?gUb`0cgs1Tc8G-B*KK1 zDd>*_Gfnq^J-Aqm)HStUk-J=Bjr8pnMOUiL3uB73YuY68Vk1c6@=QjhZUmWKD51It z*hV~VOIT)|Xle1t(wn-7yGsq9j-k3P2p0JXhHa+H%P}*WD@s)s>u}}>PAB3WaJf#v zcVu*x`hx_Mvsbtsfi;_?wr29sRXs=o;iWL=@Lh&7mGhZPqo8L}R!1tZBSoqd&bZV^ zR|dvHT&T)|rvhjRM?0iyc=q}flRe&zGvWGi^K$SW?!$4ci|m`~LqF&Y?QS0O;J-L$ zC%rEjBK&rDq4n9zYoZB5N^mue3zz6E-tT!HMJjnMGk^=Hs!H-$Px7L|Jb;;dFcGk+ zUi6*RYuTGoZB$I?^Al}U2*8zsr}dP-T#)7&sysp@|0<2vZK{f@2hd#uLJ1|m49yaR z^x0X}Y>pvZkV0LYPz1o8a4R~TgVJ&2uIk>+XREH5a|m;RBCy4;G5gcYiaeu z!)&@dWX)9e9&>hZ5#c=E@;9+xMf-@AHQSs}NXb)+0o>Zv-5ZPYoD|`VIPkS1sV0}A zzM#*Js(jR_qg{+I0@M-i#laB|^n5i<x@h@a5(JP1%&b#|Mzi1K_3KRWB+pAzb6cP2UWMUZVAzb>%Mn8{y0}&h8ZC z9uT^sP6%{cv6ZXbAxcz!PkDJLPsF7|FJ(6`0U{F@#oJg{ch`&9nK)o9eF3>q^fD+H z^IHi)NuHEPC;9aZMc4%m%zA{D6k(9F3&JE4Z=*WD(Bw&>`$+6bgO#~%gER{fYJhDE6)@!hFc0~e#c6x@}5eUG1v+c(nthH)^^GWqX=6>A>P z#)iDu*PVK~ek1GP;t+J8vNc=d{REQ_9^o{P{K${^K89 zO^-j#H2(Qy`91qHH1|9%|5WKCkN?C-P)+st`}Q`4HdOzakRbbqf0y)lO}yHF`1{EW z4b9|Fe=gpi@Zz2ScxUmCWNI3;JVX9-#B=5!zw}@J{lBl1q5Yr#+1t0y)}LeZNdN6W z`)~ga8Qt{XznZ^&@%SJ9elMFk{o8-a#<3m#EkV5UF`JTqxHlE?L2^FN;)K9E{@bzm z2mI+jzT96w@SnfJzxa(r!xNpqevNxdpEdS!|{=<;{9b^1&+p~1D%);96`!W1&+*M zj1t)-Dr6L;rr9dNMr%N0Q^k6z1;8Uqios(xN(v>3MZh&Two36yIl$Y!llpC}F literal 0 HcmV?d00001 diff --git a/app/lab/broken-authentication/jwt-token-bypass/en.ini b/app/lab/broken-authentication/jwt-token-bypass/en.ini new file mode 100644 index 0000000..a0738de --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/en.ini @@ -0,0 +1,9 @@ +title="JWT Token Bypass" +username="Username:" +password="Password:" +submit="Submit" +wrong="Wrong Password...!" +login="Login Panel" +look="You are logged in as" +hint="Username:normal Pass:1234" +error="Invalid JWT Token." diff --git a/app/lab/broken-authentication/jwt-token-bypass/fr.ini b/app/lab/broken-authentication/jwt-token-bypass/fr.ini new file mode 100644 index 0000000..ae36453 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/fr.ini @@ -0,0 +1,9 @@ +title="Contournement du Jeton JWT" +username = "Nom D'utilisateur:" +password = "Mot de Passe:" +submit="Envoyer" +wrong="Mauvais mot de passe...!" +login="Panneau de connexion" +look="vous êtes connecté" +hint="Nom D'utilisateur:normal Mot de Passe:1234" +error="Jeton JWT non valide." diff --git a/app/lab/broken-authentication/jwt-token-bypass/index.php b/app/lab/broken-authentication/jwt-token-bypass/index.php new file mode 100644 index 0000000..4015610 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/index.php @@ -0,0 +1,65 @@ +is_valid($_COOKIE['auth_type'])) { + $jwt->get_username($_COOKIE['auth_type']); + } else{ + $error=TRUE; + } +} else { + header("Location: login.php"); + exit; +} + + +?> + + + + + + + + + + + + + <?= $strings["title"]; ?> + + + +
+
+

+ +
+
+ get_username($_COOKIE['auth_type']); + + ?> +
+ +
+ +
+
+
+ + + + + + \ No newline at end of file diff --git a/app/lab/broken-authentication/jwt-token-bypass/login.php b/app/lab/broken-authentication/jwt-token-bypass/login.php new file mode 100644 index 0000000..ddf7860 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/login.php @@ -0,0 +1,82 @@ +prepare("SELECT * FROM users WHERE username=:user AND password=:pass"); + $q->execute(array( + 'user' => $_POST['username'], + 'pass' => md5($_POST['password']) + )); + $_select = $q->fetch(); + if (isset($_select['id'])) { + $_SESSION['username'] = $_select['username']; + $_SESSION['id'] = $_select['id']; + + // JWT IMP + $payload = [ + 'id' => $_select['id'], + 'username' => $_select['username'], + 'iss' => 'test.jwt', + 'aud' => 'test.jwt' + ]; + $token = $jwt->generate($payload); + setcookie("auth_type", $token); + + header("Location: index.php"); + exit; + } +} + +?> + + + + + + + + + + + + <?= $strings["title"]; ?> + + + +
+
+

+ + +
+ +
+ +
+
+
+ +
+ +
+
+ +

+ + + +
+
+ + + + + + \ No newline at end of file diff --git a/app/lab/broken-authentication/jwt-token-bypass/tr.ini b/app/lab/broken-authentication/jwt-token-bypass/tr.ini new file mode 100644 index 0000000..7968dd0 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/tr.ini @@ -0,0 +1,9 @@ +title="JWT Token Bypass" +username="Kullanıcı Adı:" +password="Şifre:" +submit="Gönder" +wrong="Yanlış Şifre...!" +login="Giriş Paneli" +look="Olarak giriş yaptınız...!" +hint="Kullanıcı Adı:normal Şifre:1234" +error="JWT Yanlış Girilmiştir." \ No newline at end of file diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/autoload.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/autoload.php new file mode 100644 index 0000000..b971175 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/autoload.php @@ -0,0 +1,12 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var ?string */ + private $vendorDir; + + // PSR-4 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array + */ + private $missingClasses = array(); + + /** @var ?string */ + private $apcuPrefix; + + /** + * @var self[] + */ + private static $registeredLoaders = array(); + + /** + * @param ?string $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + } + + /** + * @return string[] + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array[] + * @psalm-return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return string[] Array of classname => path + * @psalm-return array + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap + * + * @return void + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 base directories + * + * @return void + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + * + * @return void + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + * + * @return void + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + * + * @return void + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + + return null; + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + * @private + */ +function includeFile($file) +{ + include $file; +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/InstalledVersions.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/InstalledVersions.php new file mode 100644 index 0000000..c6b54af --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/InstalledVersions.php @@ -0,0 +1,352 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/LICENSE b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_classmap.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..0fb0a2c --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_classmap.php @@ -0,0 +1,10 @@ + $vendorDir . '/composer/InstalledVersions.php', +); diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_namespaces.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..15a2ff3 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($vendorDir . '/firebase/php-jwt/src'), +); diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_real.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_real.php new file mode 100644 index 0000000..91f6299 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_real.php @@ -0,0 +1,38 @@ +register(true); + + return $loader; + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_static.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_static.php new file mode 100644 index 0000000..78cdde1 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/autoload_static.php @@ -0,0 +1,36 @@ + + array ( + 'Firebase\\JWT\\' => 13, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'Firebase\\JWT\\' => + array ( + 0 => __DIR__ . '/..' . '/firebase/php-jwt/src', + ), + ); + + public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInit9505aa5d8427c02e1f71dc40addfd245::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit9505aa5d8427c02e1f71dc40addfd245::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit9505aa5d8427c02e1f71dc40addfd245::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/installed.json b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/installed.json new file mode 100644 index 0000000..695678a --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/installed.json @@ -0,0 +1,71 @@ +{ + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v6.3.0", + "version_normalized": "6.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", + "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", + "shasum": "" + }, + "require": { + "php": "^7.1||^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^1.1", + "phpunit/phpunit": "^7.5||^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "time": "2022-07-15T16:48:45+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.3.0" + }, + "install-path": "../firebase/php-jwt" + } + ], + "dev": true, + "dev-package-names": [] +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/installed.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/installed.php new file mode 100644 index 0000000..9f95f48 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/installed.php @@ -0,0 +1,32 @@ + array( + 'name' => '__root__', + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => NULL, + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => true, + ), + 'versions' => array( + '__root__' => array( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => NULL, + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'firebase/php-jwt' => array( + 'pretty_version' => 'v6.3.0', + 'version' => '6.3.0.0', + 'reference' => '018dfc4e1da92ad8a1b90adc4893f476a3b41cb8', + 'type' => 'library', + 'install_path' => __DIR__ . '/../firebase/php-jwt', + 'aliases' => array(), + 'dev_requirement' => false, + ), + ), +); diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/platform_check.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/platform_check.php new file mode 100644 index 0000000..6d3407d --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 70100)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/LICENSE b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/LICENSE new file mode 100644 index 0000000..11c0146 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/LICENSE @@ -0,0 +1,30 @@ +Copyright (c) 2011, Neuman Vong + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the copyright holder nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/README.md b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/README.md new file mode 100644 index 0000000..fed1e95 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/README.md @@ -0,0 +1,367 @@ +![Build Status](https://github.com/firebase/php-jwt/actions/workflows/tests.yml/badge.svg) +[![Latest Stable Version](https://poser.pugx.org/firebase/php-jwt/v/stable)](https://packagist.org/packages/firebase/php-jwt) +[![Total Downloads](https://poser.pugx.org/firebase/php-jwt/downloads)](https://packagist.org/packages/firebase/php-jwt) +[![License](https://poser.pugx.org/firebase/php-jwt/license)](https://packagist.org/packages/firebase/php-jwt) + +PHP-JWT +======= +A simple library to encode and decode JSON Web Tokens (JWT) in PHP, conforming to [RFC 7519](https://tools.ietf.org/html/rfc7519). + +Installation +------------ + +Use composer to manage your dependencies and download PHP-JWT: + +```bash +composer require firebase/php-jwt +``` + +Optionally, install the `paragonie/sodium_compat` package from composer if your +php is < 7.2 or does not have libsodium installed: + +```bash +composer require paragonie/sodium_compat +``` + +Example +------- +```php +use Firebase\JWT\JWT; +use Firebase\JWT\Key; + +$key = 'example_key'; +$payload = [ + 'iss' => 'http://example.org', + 'aud' => 'http://example.com', + 'iat' => 1356999524, + 'nbf' => 1357000000 +]; + +/** + * IMPORTANT: + * You must specify supported algorithms for your application. See + * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40 + * for a list of spec-compliant algorithms. + */ +$jwt = JWT::encode($payload, $key, 'HS256'); +$decoded = JWT::decode($jwt, new Key($key, 'HS256')); + +print_r($decoded); + +/* + NOTE: This will now be an object instead of an associative array. To get + an associative array, you will need to cast it as such: +*/ + +$decoded_array = (array) $decoded; + +/** + * You can add a leeway to account for when there is a clock skew times between + * the signing and verifying servers. It is recommended that this leeway should + * not be bigger than a few minutes. + * + * Source: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#nbfDef + */ +JWT::$leeway = 60; // $leeway in seconds +$decoded = JWT::decode($jwt, new Key($key, 'HS256')); +``` +Example with RS256 (openssl) +---------------------------- +```php +use Firebase\JWT\JWT; +use Firebase\JWT\Key; + +$privateKey = << 'example.org', + 'aud' => 'example.com', + 'iat' => 1356999524, + 'nbf' => 1357000000 +]; + +$jwt = JWT::encode($payload, $privateKey, 'RS256'); +echo "Encode:\n" . print_r($jwt, true) . "\n"; + +$decoded = JWT::decode($jwt, new Key($publicKey, 'RS256')); + +/* + NOTE: This will now be an object instead of an associative array. To get + an associative array, you will need to cast it as such: +*/ + +$decoded_array = (array) $decoded; +echo "Decode:\n" . print_r($decoded_array, true) . "\n"; +``` + +Example with a passphrase +------------------------- + +```php +use Firebase\JWT\JWT; +use Firebase\JWT\Key; + +// Your passphrase +$passphrase = '[YOUR_PASSPHRASE]'; + +// Your private key file with passphrase +// Can be generated with "ssh-keygen -t rsa -m pem" +$privateKeyFile = '/path/to/key-with-passphrase.pem'; + +// Create a private key of type "resource" +$privateKey = openssl_pkey_get_private( + file_get_contents($privateKeyFile), + $passphrase +); + +$payload = [ + 'iss' => 'example.org', + 'aud' => 'example.com', + 'iat' => 1356999524, + 'nbf' => 1357000000 +]; + +$jwt = JWT::encode($payload, $privateKey, 'RS256'); +echo "Encode:\n" . print_r($jwt, true) . "\n"; + +// Get public key from the private key, or pull from from a file. +$publicKey = openssl_pkey_get_details($privateKey)['key']; + +$decoded = JWT::decode($jwt, new Key($publicKey, 'RS256')); +echo "Decode:\n" . print_r((array) $decoded, true) . "\n"; +``` + +Example with EdDSA (libsodium and Ed25519 signature) +---------------------------- +```php +use Firebase\JWT\JWT; +use Firebase\JWT\Key; + +// Public and private keys are expected to be Base64 encoded. The last +// non-empty line is used so that keys can be generated with +// sodium_crypto_sign_keypair(). The secret keys generated by other tools may +// need to be adjusted to match the input expected by libsodium. + +$keyPair = sodium_crypto_sign_keypair(); + +$privateKey = base64_encode(sodium_crypto_sign_secretkey($keyPair)); + +$publicKey = base64_encode(sodium_crypto_sign_publickey($keyPair)); + +$payload = [ + 'iss' => 'example.org', + 'aud' => 'example.com', + 'iat' => 1356999524, + 'nbf' => 1357000000 +]; + +$jwt = JWT::encode($payload, $privateKey, 'EdDSA'); +echo "Encode:\n" . print_r($jwt, true) . "\n"; + +$decoded = JWT::decode($jwt, new Key($publicKey, 'EdDSA')); +echo "Decode:\n" . print_r((array) $decoded, true) . "\n"; +```` + +Using JWKs +---------- + +```php +use Firebase\JWT\JWK; +use Firebase\JWT\JWT; + +// Set of keys. The "keys" key is required. For example, the JSON response to +// this endpoint: https://www.gstatic.com/iap/verify/public_key-jwk +$jwks = ['keys' => []]; + +// JWK::parseKeySet($jwks) returns an associative array of **kid** to Firebase\JWT\Key +// objects. Pass this as the second parameter to JWT::decode. +JWT::decode($payload, JWK::parseKeySet($jwks)); +``` + +Using Cached Key Sets +--------------------- + +The `CachedKeySet` class can be used to fetch and cache JWKS (JSON Web Key Sets) from a public URI. +This has the following advantages: + +1. The results are cached for performance. +2. If an unrecognized key is requested, the cache is refreshed, to accomodate for key rotation. +3. If rate limiting is enabled, the JWKS URI will not make more than 10 requests a second. + +```php +use Firebase\JWT\CachedKeySet; +use Firebase\JWT\JWT; + +// The URI for the JWKS you wish to cache the results from +$jwksUri = 'https://www.gstatic.com/iap/verify/public_key-jwk'; + +// Create an HTTP client (can be any PSR-7 compatible HTTP client) +$httpClient = new GuzzleHttp\Client(); + +// Create an HTTP request factory (can be any PSR-17 compatible HTTP request factory) +$httpFactory = new GuzzleHttp\Psr\HttpFactory(); + +// Create a cache item pool (can be any PSR-6 compatible cache item pool) +$cacheItemPool = Phpfastcache\CacheManager::getInstance('files'); + +$keySet = new CachedKeySet( + $jwksUri, + $httpClient, + $httpFactory, + $cacheItemPool, + null, // $expiresAfter int seconds to set the JWKS to expire + true // $rateLimit true to enable rate limit of 10 RPS on lookup of invalid keys +); + +$jwt = 'eyJhbGci...'; // Some JWT signed by a key from the $jwkUri above +$decoded = JWT::decode($jwt, $keySet); +``` + +Miscellaneous +------------- + +#### Casting to array + +The return value of `JWT::decode` is the generic PHP object `stdClass`. If you'd like to handle with arrays +instead, you can do the following: + +```php +// return type is stdClass +$decoded = JWT::decode($payload, $keys); + +// cast to array +$decoded = json_decode(json_encode($decoded), true); +``` + +Changelog +--------- + +#### 6.3.0 / 2022-07-15 + + - Added ES256 support to JWK parsing ([#399](https://github.com/firebase/php-jwt/pull/399)) + - Fixed potential caching error in `CachedKeySet` by caching jwks as strings ([#435](https://github.com/firebase/php-jwt/pull/435)) + +#### 6.2.0 / 2022-05-14 + + - Added `CachedKeySet` ([#397](https://github.com/firebase/php-jwt/pull/397)) + - Added `$defaultAlg` parameter to `JWT::parseKey` and `JWT::parseKeySet` ([#426](https://github.com/firebase/php-jwt/pull/426)). + +#### 6.1.0 / 2022-03-23 + + - Drop support for PHP 5.3, 5.4, 5.5, 5.6, and 7.0 + - Add parameter typing and return types where possible + +#### 6.0.0 / 2022-01-24 + + - **Backwards-Compatibility Breaking Changes**: See the [Release Notes](https://github.com/firebase/php-jwt/releases/tag/v6.0.0) for more information. + - New Key object to prevent key/algorithm type confusion (#365) + - Add JWK support (#273) + - Add ES256 support (#256) + - Add ES384 support (#324) + - Add Ed25519 support (#343) + +#### 5.0.0 / 2017-06-26 +- Support RS384 and RS512. + See [#117](https://github.com/firebase/php-jwt/pull/117). Thanks [@joostfaassen](https://github.com/joostfaassen)! +- Add an example for RS256 openssl. + See [#125](https://github.com/firebase/php-jwt/pull/125). Thanks [@akeeman](https://github.com/akeeman)! +- Detect invalid Base64 encoding in signature. + See [#162](https://github.com/firebase/php-jwt/pull/162). Thanks [@psignoret](https://github.com/psignoret)! +- Update `JWT::verify` to handle OpenSSL errors. + See [#159](https://github.com/firebase/php-jwt/pull/159). Thanks [@bshaffer](https://github.com/bshaffer)! +- Add `array` type hinting to `decode` method + See [#101](https://github.com/firebase/php-jwt/pull/101). Thanks [@hywak](https://github.com/hywak)! +- Add all JSON error types. + See [#110](https://github.com/firebase/php-jwt/pull/110). Thanks [@gbalduzzi](https://github.com/gbalduzzi)! +- Bugfix 'kid' not in given key list. + See [#129](https://github.com/firebase/php-jwt/pull/129). Thanks [@stampycode](https://github.com/stampycode)! +- Miscellaneous cleanup, documentation and test fixes. + See [#107](https://github.com/firebase/php-jwt/pull/107), [#115](https://github.com/firebase/php-jwt/pull/115), + [#160](https://github.com/firebase/php-jwt/pull/160), [#161](https://github.com/firebase/php-jwt/pull/161), and + [#165](https://github.com/firebase/php-jwt/pull/165). Thanks [@akeeman](https://github.com/akeeman), + [@chinedufn](https://github.com/chinedufn), and [@bshaffer](https://github.com/bshaffer)! + +#### 4.0.0 / 2016-07-17 +- Add support for late static binding. See [#88](https://github.com/firebase/php-jwt/pull/88) for details. Thanks to [@chappy84](https://github.com/chappy84)! +- Use static `$timestamp` instead of `time()` to improve unit testing. See [#93](https://github.com/firebase/php-jwt/pull/93) for details. Thanks to [@josephmcdermott](https://github.com/josephmcdermott)! +- Fixes to exceptions classes. See [#81](https://github.com/firebase/php-jwt/pull/81) for details. Thanks to [@Maks3w](https://github.com/Maks3w)! +- Fixes to PHPDoc. See [#76](https://github.com/firebase/php-jwt/pull/76) for details. Thanks to [@akeeman](https://github.com/akeeman)! + +#### 3.0.0 / 2015-07-22 +- Minimum PHP version updated from `5.2.0` to `5.3.0`. +- Add `\Firebase\JWT` namespace. See +[#59](https://github.com/firebase/php-jwt/pull/59) for details. Thanks to +[@Dashron](https://github.com/Dashron)! +- Require a non-empty key to decode and verify a JWT. See +[#60](https://github.com/firebase/php-jwt/pull/60) for details. Thanks to +[@sjones608](https://github.com/sjones608)! +- Cleaner documentation blocks in the code. See +[#62](https://github.com/firebase/php-jwt/pull/62) for details. Thanks to +[@johanderuijter](https://github.com/johanderuijter)! + +#### 2.2.0 / 2015-06-22 +- Add support for adding custom, optional JWT headers to `JWT::encode()`. See +[#53](https://github.com/firebase/php-jwt/pull/53/files) for details. Thanks to +[@mcocaro](https://github.com/mcocaro)! + +#### 2.1.0 / 2015-05-20 +- Add support for adding a leeway to `JWT:decode()` that accounts for clock skew +between signing and verifying entities. Thanks to [@lcabral](https://github.com/lcabral)! +- Add support for passing an object implementing the `ArrayAccess` interface for +`$keys` argument in `JWT::decode()`. Thanks to [@aztech-dev](https://github.com/aztech-dev)! + +#### 2.0.0 / 2015-04-01 +- **Note**: It is strongly recommended that you update to > v2.0.0 to address + known security vulnerabilities in prior versions when both symmetric and + asymmetric keys are used together. +- Update signature for `JWT::decode(...)` to require an array of supported + algorithms to use when verifying token signatures. + + +Tests +----- +Run the tests using phpunit: + +```bash +$ pear install PHPUnit +$ phpunit --configuration phpunit.xml.dist +PHPUnit 3.7.10 by Sebastian Bergmann. +..... +Time: 0 seconds, Memory: 2.50Mb +OK (5 tests, 5 assertions) +``` + +New Lines in private keys +----- + +If your private key contains `\n` characters, be sure to wrap it in double quotes `""` +and not single quotes `''` in order to properly interpret the escaped characters. + +License +------- +[3-Clause BSD](http://opensource.org/licenses/BSD-3-Clause). diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/composer.json b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/composer.json new file mode 100644 index 0000000..2a3cb2d --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/composer.json @@ -0,0 +1,41 @@ +{ + "name": "firebase/php-jwt", + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "php", + "jwt" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "license": "BSD-3-Clause", + "require": { + "php": "^7.1||^8.0" + }, + "suggest": { + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^1.1", + "phpunit/phpunit": "^7.5||^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/BeforeValidException.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/BeforeValidException.php new file mode 100644 index 0000000..c147852 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/BeforeValidException.php @@ -0,0 +1,7 @@ + + */ +class CachedKeySet implements ArrayAccess +{ + /** + * @var string + */ + private $jwksUri; + /** + * @var ClientInterface + */ + private $httpClient; + /** + * @var RequestFactoryInterface + */ + private $httpFactory; + /** + * @var CacheItemPoolInterface + */ + private $cache; + /** + * @var ?int + */ + private $expiresAfter; + /** + * @var ?CacheItemInterface + */ + private $cacheItem; + /** + * @var array + */ + private $keySet; + /** + * @var string + */ + private $cacheKey; + /** + * @var string + */ + private $cacheKeyPrefix = 'jwks'; + /** + * @var int + */ + private $maxKeyLength = 64; + /** + * @var bool + */ + private $rateLimit; + /** + * @var string + */ + private $rateLimitCacheKey; + /** + * @var int + */ + private $maxCallsPerMinute = 10; + /** + * @var string|null + */ + private $defaultAlg; + + public function __construct( + string $jwksUri, + ClientInterface $httpClient, + RequestFactoryInterface $httpFactory, + CacheItemPoolInterface $cache, + int $expiresAfter = null, + bool $rateLimit = false, + string $defaultAlg = null + ) { + $this->jwksUri = $jwksUri; + $this->httpClient = $httpClient; + $this->httpFactory = $httpFactory; + $this->cache = $cache; + $this->expiresAfter = $expiresAfter; + $this->rateLimit = $rateLimit; + $this->defaultAlg = $defaultAlg; + $this->setCacheKeys(); + } + + /** + * @param string $keyId + * @return Key + */ + public function offsetGet($keyId): Key + { + if (!$this->keyIdExists($keyId)) { + throw new OutOfBoundsException('Key ID not found'); + } + return $this->keySet[$keyId]; + } + + /** + * @param string $keyId + * @return bool + */ + public function offsetExists($keyId): bool + { + return $this->keyIdExists($keyId); + } + + /** + * @param string $offset + * @param Key $value + */ + public function offsetSet($offset, $value): void + { + throw new LogicException('Method not implemented'); + } + + /** + * @param string $offset + */ + public function offsetUnset($offset): void + { + throw new LogicException('Method not implemented'); + } + + private function keyIdExists(string $keyId): bool + { + if (null === $this->keySet) { + $item = $this->getCacheItem(); + // Try to load keys from cache + if ($item->isHit()) { + // item found! Return it + $jwks = $item->get(); + $this->keySet = JWK::parseKeySet(json_decode($jwks, true), $this->defaultAlg); + } + } + + if (!isset($this->keySet[$keyId])) { + if ($this->rateLimitExceeded()) { + return false; + } + $request = $this->httpFactory->createRequest('get', $this->jwksUri); + $jwksResponse = $this->httpClient->sendRequest($request); + $jwks = (string) $jwksResponse->getBody(); + $this->keySet = JWK::parseKeySet(json_decode($jwks, true), $this->defaultAlg); + + if (!isset($this->keySet[$keyId])) { + return false; + } + + $item = $this->getCacheItem(); + $item->set($jwks); + if ($this->expiresAfter) { + $item->expiresAfter($this->expiresAfter); + } + $this->cache->save($item); + } + + return true; + } + + private function rateLimitExceeded(): bool + { + if (!$this->rateLimit) { + return false; + } + + $cacheItem = $this->cache->getItem($this->rateLimitCacheKey); + if (!$cacheItem->isHit()) { + $cacheItem->expiresAfter(1); // # of calls are cached each minute + } + + $callsPerMinute = (int) $cacheItem->get(); + if (++$callsPerMinute > $this->maxCallsPerMinute) { + return true; + } + $cacheItem->set($callsPerMinute); + $this->cache->save($cacheItem); + return false; + } + + private function getCacheItem(): CacheItemInterface + { + if (\is_null($this->cacheItem)) { + $this->cacheItem = $this->cache->getItem($this->cacheKey); + } + + return $this->cacheItem; + } + + private function setCacheKeys(): void + { + if (empty($this->jwksUri)) { + throw new RuntimeException('JWKS URI is empty'); + } + + // ensure we do not have illegal characters + $key = preg_replace('|[^a-zA-Z0-9_\.!]|', '', $this->jwksUri); + + // add prefix + $key = $this->cacheKeyPrefix . $key; + + // Hash keys if they exceed $maxKeyLength of 64 + if (\strlen($key) > $this->maxKeyLength) { + $key = substr(hash('sha256', $key), 0, $this->maxKeyLength); + } + + $this->cacheKey = $key; + + if ($this->rateLimit) { + // add prefix + $rateLimitKey = $this->cacheKeyPrefix . 'ratelimit' . $key; + + // Hash keys if they exceed $maxKeyLength of 64 + if (\strlen($rateLimitKey) > $this->maxKeyLength) { + $rateLimitKey = substr(hash('sha256', $rateLimitKey), 0, $this->maxKeyLength); + } + + $this->rateLimitCacheKey = $rateLimitKey; + } + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/ExpiredException.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/ExpiredException.php new file mode 100644 index 0000000..81ba52d --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/ExpiredException.php @@ -0,0 +1,7 @@ + + * @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD + * @link https://github.com/firebase/php-jwt + */ +class JWK +{ + private const OID = '1.2.840.10045.2.1'; + private const ASN1_OBJECT_IDENTIFIER = 0x06; + private const ASN1_SEQUENCE = 0x10; // also defined in JWT + private const ASN1_BIT_STRING = 0x03; + private const EC_CURVES = [ + 'P-256' => '1.2.840.10045.3.1.7', // Len: 64 + // 'P-384' => '1.3.132.0.34', // Len: 96 (not yet supported) + // 'P-521' => '1.3.132.0.35', // Len: 132 (not supported) + ]; + + /** + * Parse a set of JWK keys + * + * @param array $jwks The JSON Web Key Set as an associative array + * @param string $defaultAlg The algorithm for the Key object if "alg" is not set in the + * JSON Web Key Set + * + * @return array An associative array of key IDs (kid) to Key objects + * + * @throws InvalidArgumentException Provided JWK Set is empty + * @throws UnexpectedValueException Provided JWK Set was invalid + * @throws DomainException OpenSSL failure + * + * @uses parseKey + */ + public static function parseKeySet(array $jwks, string $defaultAlg = null): array + { + $keys = []; + + if (!isset($jwks['keys'])) { + throw new UnexpectedValueException('"keys" member must exist in the JWK Set'); + } + + if (empty($jwks['keys'])) { + throw new InvalidArgumentException('JWK Set did not contain any keys'); + } + + foreach ($jwks['keys'] as $k => $v) { + $kid = isset($v['kid']) ? $v['kid'] : $k; + if ($key = self::parseKey($v, $defaultAlg)) { + $keys[(string) $kid] = $key; + } + } + + if (0 === \count($keys)) { + throw new UnexpectedValueException('No supported algorithms found in JWK Set'); + } + + return $keys; + } + + /** + * Parse a JWK key + * + * @param array $jwk An individual JWK + * @param string $defaultAlg The algorithm for the Key object if "alg" is not set in the + * JSON Web Key Set + * + * @return Key The key object for the JWK + * + * @throws InvalidArgumentException Provided JWK is empty + * @throws UnexpectedValueException Provided JWK was invalid + * @throws DomainException OpenSSL failure + * + * @uses createPemFromModulusAndExponent + */ + public static function parseKey(array $jwk, string $defaultAlg = null): ?Key + { + if (empty($jwk)) { + throw new InvalidArgumentException('JWK must not be empty'); + } + + if (!isset($jwk['kty'])) { + throw new UnexpectedValueException('JWK must contain a "kty" parameter'); + } + + if (!isset($jwk['alg'])) { + if (\is_null($defaultAlg)) { + // The "alg" parameter is optional in a KTY, but an algorithm is required + // for parsing in this library. Use the $defaultAlg parameter when parsing the + // key set in order to prevent this error. + // @see https://datatracker.ietf.org/doc/html/rfc7517#section-4.4 + throw new UnexpectedValueException('JWK must contain an "alg" parameter'); + } + $jwk['alg'] = $defaultAlg; + } + + switch ($jwk['kty']) { + case 'RSA': + if (!empty($jwk['d'])) { + throw new UnexpectedValueException('RSA private keys are not supported'); + } + if (!isset($jwk['n']) || !isset($jwk['e'])) { + throw new UnexpectedValueException('RSA keys must contain values for both "n" and "e"'); + } + + $pem = self::createPemFromModulusAndExponent($jwk['n'], $jwk['e']); + $publicKey = \openssl_pkey_get_public($pem); + if (false === $publicKey) { + throw new DomainException( + 'OpenSSL error: ' . \openssl_error_string() + ); + } + return new Key($publicKey, $jwk['alg']); + case 'EC': + if (isset($jwk['d'])) { + // The key is actually a private key + throw new UnexpectedValueException('Key data must be for a public key'); + } + + if (empty($jwk['crv'])) { + throw new UnexpectedValueException('crv not set'); + } + + if (!isset(self::EC_CURVES[$jwk['crv']])) { + throw new DomainException('Unrecognised or unsupported EC curve'); + } + + if (empty($jwk['x']) || empty($jwk['y'])) { + throw new UnexpectedValueException('x and y not set'); + } + + $publicKey = self::createPemFromCrvAndXYCoordinates($jwk['crv'], $jwk['x'], $jwk['y']); + return new Key($publicKey, $jwk['alg']); + default: + // Currently only RSA is supported + break; + } + + return null; + } + + /** + * Converts the EC JWK values to pem format. + * + * @param string $crv The EC curve (only P-256 is supported) + * @param string $x The EC x-coordinate + * @param string $y The EC y-coordinate + * + * @return string + */ + private static function createPemFromCrvAndXYCoordinates(string $crv, string $x, string $y): string + { + $pem = + self::encodeDER( + self::ASN1_SEQUENCE, + self::encodeDER( + self::ASN1_SEQUENCE, + self::encodeDER( + self::ASN1_OBJECT_IDENTIFIER, + self::encodeOID(self::OID) + ) + . self::encodeDER( + self::ASN1_OBJECT_IDENTIFIER, + self::encodeOID(self::EC_CURVES[$crv]) + ) + ) . + self::encodeDER( + self::ASN1_BIT_STRING, + \chr(0x00) . \chr(0x04) + . JWT::urlsafeB64Decode($x) + . JWT::urlsafeB64Decode($y) + ) + ); + + return sprintf( + "-----BEGIN PUBLIC KEY-----\n%s\n-----END PUBLIC KEY-----\n", + wordwrap(base64_encode($pem), 64, "\n", true) + ); + } + + /** + * Create a public key represented in PEM format from RSA modulus and exponent information + * + * @param string $n The RSA modulus encoded in Base64 + * @param string $e The RSA exponent encoded in Base64 + * + * @return string The RSA public key represented in PEM format + * + * @uses encodeLength + */ + private static function createPemFromModulusAndExponent( + string $n, + string $e + ): string { + $mod = JWT::urlsafeB64Decode($n); + $exp = JWT::urlsafeB64Decode($e); + + $modulus = \pack('Ca*a*', 2, self::encodeLength(\strlen($mod)), $mod); + $publicExponent = \pack('Ca*a*', 2, self::encodeLength(\strlen($exp)), $exp); + + $rsaPublicKey = \pack( + 'Ca*a*a*', + 48, + self::encodeLength(\strlen($modulus) + \strlen($publicExponent)), + $modulus, + $publicExponent + ); + + // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption. + $rsaOID = \pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $rsaPublicKey = \chr(0) . $rsaPublicKey; + $rsaPublicKey = \chr(3) . self::encodeLength(\strlen($rsaPublicKey)) . $rsaPublicKey; + + $rsaPublicKey = \pack( + 'Ca*a*', + 48, + self::encodeLength(\strlen($rsaOID . $rsaPublicKey)), + $rsaOID . $rsaPublicKey + ); + + return "-----BEGIN PUBLIC KEY-----\r\n" . + \chunk_split(\base64_encode($rsaPublicKey), 64) . + '-----END PUBLIC KEY-----'; + } + + /** + * DER-encode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information. + * + * @param int $length + * @return string + */ + private static function encodeLength(int $length): string + { + if ($length <= 0x7F) { + return \chr($length); + } + + $temp = \ltrim(\pack('N', $length), \chr(0)); + + return \pack('Ca*', 0x80 | \strlen($temp), $temp); + } + + /** + * Encodes a value into a DER object. + * Also defined in Firebase\JWT\JWT + * + * @param int $type DER tag + * @param string $value the value to encode + * @return string the encoded object + */ + private static function encodeDER(int $type, string $value): string + { + $tag_header = 0; + if ($type === self::ASN1_SEQUENCE) { + $tag_header |= 0x20; + } + + // Type + $der = \chr($tag_header | $type); + + // Length + $der .= \chr(\strlen($value)); + + return $der . $value; + } + + /** + * Encodes a string into a DER-encoded OID. + * + * @param string $oid the OID string + * @return string the binary DER-encoded OID + */ + private static function encodeOID(string $oid): string + { + $octets = explode('.', $oid); + + // Get the first octet + $first = (int) array_shift($octets); + $second = (int) array_shift($octets); + $oid = \chr($first * 40 + $second); + + // Iterate over subsequent octets + foreach ($octets as $octet) { + if ($octet == 0) { + $oid .= \chr(0x00); + continue; + } + $bin = ''; + + while ($octet) { + $bin .= \chr(0x80 | ($octet & 0x7f)); + $octet >>= 7; + } + $bin[0] = $bin[0] & \chr(0x7f); + + // Convert to big endian if necessary + if (pack('V', 65534) == pack('L', 65534)) { + $oid .= strrev($bin); + } else { + $oid .= $bin; + } + } + + return $oid; + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/JWT.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/JWT.php new file mode 100644 index 0000000..9964073 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/JWT.php @@ -0,0 +1,627 @@ + + * @author Anant Narayanan + * @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD + * @link https://github.com/firebase/php-jwt + */ +class JWT +{ + private const ASN1_INTEGER = 0x02; + private const ASN1_SEQUENCE = 0x10; + private const ASN1_BIT_STRING = 0x03; + + /** + * When checking nbf, iat or expiration times, + * we want to provide some extra leeway time to + * account for clock skew. + * + * @var int + */ + public static $leeway = 0; + + /** + * Allow the current timestamp to be specified. + * Useful for fixing a value within unit testing. + * Will default to PHP time() value if null. + * + * @var ?int + */ + public static $timestamp = null; + + /** + * @var array + */ + public static $supported_algs = [ + 'ES384' => ['openssl', 'SHA384'], + 'ES256' => ['openssl', 'SHA256'], + 'HS256' => ['hash_hmac', 'SHA256'], + 'HS384' => ['hash_hmac', 'SHA384'], + 'HS512' => ['hash_hmac', 'SHA512'], + 'RS256' => ['openssl', 'SHA256'], + 'RS384' => ['openssl', 'SHA384'], + 'RS512' => ['openssl', 'SHA512'], + 'EdDSA' => ['sodium_crypto', 'EdDSA'], + ]; + + /** + * Decodes a JWT string into a PHP object. + * + * @param string $jwt The JWT + * @param Key|array $keyOrKeyArray The Key or associative array of key IDs (kid) to Key objects. + * If the algorithm used is asymmetric, this is the public key + * Each Key object contains an algorithm and matching key. + * Supported algorithms are 'ES384','ES256', 'HS256', 'HS384', + * 'HS512', 'RS256', 'RS384', and 'RS512' + * + * @return stdClass The JWT's payload as a PHP object + * + * @throws InvalidArgumentException Provided key/key-array was empty + * @throws DomainException Provided JWT is malformed + * @throws UnexpectedValueException Provided JWT was invalid + * @throws SignatureInvalidException Provided JWT was invalid because the signature verification failed + * @throws BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf' + * @throws BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat' + * @throws ExpiredException Provided JWT has since expired, as defined by the 'exp' claim + * + * @uses jsonDecode + * @uses urlsafeB64Decode + */ + public static function decode( + string $jwt, + $keyOrKeyArray + ): stdClass { + // Validate JWT + $timestamp = \is_null(static::$timestamp) ? \time() : static::$timestamp; + + if (empty($keyOrKeyArray)) { + throw new InvalidArgumentException('Key may not be empty'); + } + $tks = \explode('.', $jwt); + if (\count($tks) !== 3) { + throw new UnexpectedValueException('Wrong number of segments'); + } + list($headb64, $bodyb64, $cryptob64) = $tks; + $headerRaw = static::urlsafeB64Decode($headb64); + if (null === ($header = static::jsonDecode($headerRaw))) { + throw new UnexpectedValueException('Invalid header encoding'); + } + $payloadRaw = static::urlsafeB64Decode($bodyb64); + if (null === ($payload = static::jsonDecode($payloadRaw))) { + throw new UnexpectedValueException('Invalid claims encoding'); + } + if (\is_array($payload)) { + // prevent PHP Fatal Error in edge-cases when payload is empty array + $payload = (object) $payload; + } + if (!$payload instanceof stdClass) { + throw new UnexpectedValueException('Payload must be a JSON object'); + } + $sig = static::urlsafeB64Decode($cryptob64); + if (empty($header->alg)) { + throw new UnexpectedValueException('Empty algorithm'); + } + if (empty(static::$supported_algs[$header->alg])) { + throw new UnexpectedValueException('Algorithm not supported'); + } + + $key = self::getKey($keyOrKeyArray, property_exists($header, 'kid') ? $header->kid : null); + + // Check the algorithm + if (!self::constantTimeEquals($key->getAlgorithm(), $header->alg)) { + // See issue #351 + throw new UnexpectedValueException('Incorrect key for this algorithm'); + } + if ($header->alg === 'ES256' || $header->alg === 'ES384') { + // OpenSSL expects an ASN.1 DER sequence for ES256/ES384 signatures + $sig = self::signatureToDER($sig); + } + if (!self::verify("${headb64}.${bodyb64}", $sig, $key->getKeyMaterial(), $header->alg)) { + throw new SignatureInvalidException('Signature verification failed'); + } + + // Check the nbf if it is defined. This is the time that the + // token can actually be used. If it's not yet that time, abort. + if (isset($payload->nbf) && $payload->nbf > ($timestamp + static::$leeway)) { + throw new BeforeValidException( + 'Cannot handle token prior to ' . \date(DateTime::ISO8601, $payload->nbf) + ); + } + + // Check that this token has been created before 'now'. This prevents + // using tokens that have been created for later use (and haven't + // correctly used the nbf claim). + if (isset($payload->iat) && $payload->iat > ($timestamp + static::$leeway)) { + throw new BeforeValidException( + 'Cannot handle token prior to ' . \date(DateTime::ISO8601, $payload->iat) + ); + } + + // Check if this token has expired. + if (isset($payload->exp) && ($timestamp - static::$leeway) >= $payload->exp) { + throw new ExpiredException('Expired token'); + } + + return $payload; + } + + /** + * Converts and signs a PHP object or array into a JWT string. + * + * @param array $payload PHP array + * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key. + * @param string $alg Supported algorithms are 'ES384','ES256', 'HS256', 'HS384', + * 'HS512', 'RS256', 'RS384', and 'RS512' + * @param string $keyId + * @param array $head An array with header elements to attach + * + * @return string A signed JWT + * + * @uses jsonEncode + * @uses urlsafeB64Encode + */ + public static function encode( + array $payload, + $key, + string $alg, + string $keyId = null, + array $head = null + ): string { + $header = ['typ' => 'JWT', 'alg' => $alg]; + if ($keyId !== null) { + $header['kid'] = $keyId; + } + if (isset($head) && \is_array($head)) { + $header = \array_merge($head, $header); + } + $segments = []; + $segments[] = static::urlsafeB64Encode((string) static::jsonEncode($header)); + $segments[] = static::urlsafeB64Encode((string) static::jsonEncode($payload)); + $signing_input = \implode('.', $segments); + + $signature = static::sign($signing_input, $key, $alg); + $segments[] = static::urlsafeB64Encode($signature); + + return \implode('.', $segments); + } + + /** + * Sign a string with a given key and algorithm. + * + * @param string $msg The message to sign + * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key. + * @param string $alg Supported algorithms are 'ES384','ES256', 'HS256', 'HS384', + * 'HS512', 'RS256', 'RS384', and 'RS512' + * + * @return string An encrypted message + * + * @throws DomainException Unsupported algorithm or bad key was specified + */ + public static function sign( + string $msg, + $key, + string $alg + ): string { + if (empty(static::$supported_algs[$alg])) { + throw new DomainException('Algorithm not supported'); + } + list($function, $algorithm) = static::$supported_algs[$alg]; + switch ($function) { + case 'hash_hmac': + if (!\is_string($key)) { + throw new InvalidArgumentException('key must be a string when using hmac'); + } + return \hash_hmac($algorithm, $msg, $key, true); + case 'openssl': + $signature = ''; + $success = \openssl_sign($msg, $signature, $key, $algorithm); // @phpstan-ignore-line + if (!$success) { + throw new DomainException('OpenSSL unable to sign data'); + } + if ($alg === 'ES256') { + $signature = self::signatureFromDER($signature, 256); + } elseif ($alg === 'ES384') { + $signature = self::signatureFromDER($signature, 384); + } + return $signature; + case 'sodium_crypto': + if (!\function_exists('sodium_crypto_sign_detached')) { + throw new DomainException('libsodium is not available'); + } + if (!\is_string($key)) { + throw new InvalidArgumentException('key must be a string when using EdDSA'); + } + try { + // The last non-empty line is used as the key. + $lines = array_filter(explode("\n", $key)); + $key = base64_decode((string) end($lines)); + return sodium_crypto_sign_detached($msg, $key); + } catch (Exception $e) { + throw new DomainException($e->getMessage(), 0, $e); + } + } + + throw new DomainException('Algorithm not supported'); + } + + /** + * Verify a signature with the message, key and method. Not all methods + * are symmetric, so we must have a separate verify and sign method. + * + * @param string $msg The original message (header and body) + * @param string $signature The original signature + * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial For HS*, a string key works. for RS*, must be an instance of OpenSSLAsymmetricKey + * @param string $alg The algorithm + * + * @return bool + * + * @throws DomainException Invalid Algorithm, bad key, or OpenSSL failure + */ + private static function verify( + string $msg, + string $signature, + $keyMaterial, + string $alg + ): bool { + if (empty(static::$supported_algs[$alg])) { + throw new DomainException('Algorithm not supported'); + } + + list($function, $algorithm) = static::$supported_algs[$alg]; + switch ($function) { + case 'openssl': + $success = \openssl_verify($msg, $signature, $keyMaterial, $algorithm); // @phpstan-ignore-line + if ($success === 1) { + return true; + } + if ($success === 0) { + return false; + } + // returns 1 on success, 0 on failure, -1 on error. + throw new DomainException( + 'OpenSSL error: ' . \openssl_error_string() + ); + case 'sodium_crypto': + if (!\function_exists('sodium_crypto_sign_verify_detached')) { + throw new DomainException('libsodium is not available'); + } + if (!\is_string($keyMaterial)) { + throw new InvalidArgumentException('key must be a string when using EdDSA'); + } + try { + // The last non-empty line is used as the key. + $lines = array_filter(explode("\n", $keyMaterial)); + $key = base64_decode((string) end($lines)); + return sodium_crypto_sign_verify_detached($signature, $msg, $key); + } catch (Exception $e) { + throw new DomainException($e->getMessage(), 0, $e); + } + case 'hash_hmac': + default: + if (!\is_string($keyMaterial)) { + throw new InvalidArgumentException('key must be a string when using hmac'); + } + $hash = \hash_hmac($algorithm, $msg, $keyMaterial, true); + return self::constantTimeEquals($hash, $signature); + } + } + + /** + * Decode a JSON string into a PHP object. + * + * @param string $input JSON string + * + * @return mixed The decoded JSON string + * + * @throws DomainException Provided string was invalid JSON + */ + public static function jsonDecode(string $input) + { + $obj = \json_decode($input, false, 512, JSON_BIGINT_AS_STRING); + + if ($errno = \json_last_error()) { + self::handleJsonError($errno); + } elseif ($obj === null && $input !== 'null') { + throw new DomainException('Null result with non-null input'); + } + return $obj; + } + + /** + * Encode a PHP array into a JSON string. + * + * @param array $input A PHP array + * + * @return string JSON representation of the PHP array + * + * @throws DomainException Provided object could not be encoded to valid JSON + */ + public static function jsonEncode(array $input): string + { + if (PHP_VERSION_ID >= 50400) { + $json = \json_encode($input, \JSON_UNESCAPED_SLASHES); + } else { + // PHP 5.3 only + $json = \json_encode($input); + } + if ($errno = \json_last_error()) { + self::handleJsonError($errno); + } elseif ($json === 'null' && $input !== null) { + throw new DomainException('Null result with non-null input'); + } + if ($json === false) { + throw new DomainException('Provided object could not be encoded to valid JSON'); + } + return $json; + } + + /** + * Decode a string with URL-safe Base64. + * + * @param string $input A Base64 encoded string + * + * @return string A decoded string + * + * @throws InvalidArgumentException invalid base64 characters + */ + public static function urlsafeB64Decode(string $input): string + { + $remainder = \strlen($input) % 4; + if ($remainder) { + $padlen = 4 - $remainder; + $input .= \str_repeat('=', $padlen); + } + return \base64_decode(\strtr($input, '-_', '+/')); + } + + /** + * Encode a string with URL-safe Base64. + * + * @param string $input The string you want encoded + * + * @return string The base64 encode of what you passed in + */ + public static function urlsafeB64Encode(string $input): string + { + return \str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_')); + } + + + /** + * Determine if an algorithm has been provided for each Key + * + * @param Key|ArrayAccess|array $keyOrKeyArray + * @param string|null $kid + * + * @throws UnexpectedValueException + * + * @return Key + */ + private static function getKey( + $keyOrKeyArray, + ?string $kid + ): Key { + if ($keyOrKeyArray instanceof Key) { + return $keyOrKeyArray; + } + + if ($keyOrKeyArray instanceof CachedKeySet) { + // Skip "isset" check, as this will automatically refresh if not set + return $keyOrKeyArray[$kid]; + } + + if (empty($kid)) { + throw new UnexpectedValueException('"kid" empty, unable to lookup correct key'); + } + if (!isset($keyOrKeyArray[$kid])) { + throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key'); + } + + return $keyOrKeyArray[$kid]; + } + + /** + * @param string $left The string of known length to compare against + * @param string $right The user-supplied string + * @return bool + */ + public static function constantTimeEquals(string $left, string $right): bool + { + if (\function_exists('hash_equals')) { + return \hash_equals($left, $right); + } + $len = \min(self::safeStrlen($left), self::safeStrlen($right)); + + $status = 0; + for ($i = 0; $i < $len; $i++) { + $status |= (\ord($left[$i]) ^ \ord($right[$i])); + } + $status |= (self::safeStrlen($left) ^ self::safeStrlen($right)); + + return ($status === 0); + } + + /** + * Helper method to create a JSON error. + * + * @param int $errno An error number from json_last_error() + * + * @throws DomainException + * + * @return void + */ + private static function handleJsonError(int $errno): void + { + $messages = [ + JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', + JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON', + JSON_ERROR_CTRL_CHAR => 'Unexpected control character found', + JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON', + JSON_ERROR_UTF8 => 'Malformed UTF-8 characters' //PHP >= 5.3.3 + ]; + throw new DomainException( + isset($messages[$errno]) + ? $messages[$errno] + : 'Unknown JSON error: ' . $errno + ); + } + + /** + * Get the number of bytes in cryptographic strings. + * + * @param string $str + * + * @return int + */ + private static function safeStrlen(string $str): int + { + if (\function_exists('mb_strlen')) { + return \mb_strlen($str, '8bit'); + } + return \strlen($str); + } + + /** + * Convert an ECDSA signature to an ASN.1 DER sequence + * + * @param string $sig The ECDSA signature to convert + * @return string The encoded DER object + */ + private static function signatureToDER(string $sig): string + { + // Separate the signature into r-value and s-value + $length = max(1, (int) (\strlen($sig) / 2)); + list($r, $s) = \str_split($sig, $length); + + // Trim leading zeros + $r = \ltrim($r, "\x00"); + $s = \ltrim($s, "\x00"); + + // Convert r-value and s-value from unsigned big-endian integers to + // signed two's complement + if (\ord($r[0]) > 0x7f) { + $r = "\x00" . $r; + } + if (\ord($s[0]) > 0x7f) { + $s = "\x00" . $s; + } + + return self::encodeDER( + self::ASN1_SEQUENCE, + self::encodeDER(self::ASN1_INTEGER, $r) . + self::encodeDER(self::ASN1_INTEGER, $s) + ); + } + + /** + * Encodes a value into a DER object. + * + * @param int $type DER tag + * @param string $value the value to encode + * + * @return string the encoded object + */ + private static function encodeDER(int $type, string $value): string + { + $tag_header = 0; + if ($type === self::ASN1_SEQUENCE) { + $tag_header |= 0x20; + } + + // Type + $der = \chr($tag_header | $type); + + // Length + $der .= \chr(\strlen($value)); + + return $der . $value; + } + + /** + * Encodes signature from a DER object. + * + * @param string $der binary signature in DER format + * @param int $keySize the number of bits in the key + * + * @return string the signature + */ + private static function signatureFromDER(string $der, int $keySize): string + { + // OpenSSL returns the ECDSA signatures as a binary ASN.1 DER SEQUENCE + list($offset, $_) = self::readDER($der); + list($offset, $r) = self::readDER($der, $offset); + list($offset, $s) = self::readDER($der, $offset); + + // Convert r-value and s-value from signed two's compliment to unsigned + // big-endian integers + $r = \ltrim($r, "\x00"); + $s = \ltrim($s, "\x00"); + + // Pad out r and s so that they are $keySize bits long + $r = \str_pad($r, $keySize / 8, "\x00", STR_PAD_LEFT); + $s = \str_pad($s, $keySize / 8, "\x00", STR_PAD_LEFT); + + return $r . $s; + } + + /** + * Reads binary DER-encoded data and decodes into a single object + * + * @param string $der the binary data in DER format + * @param int $offset the offset of the data stream containing the object + * to decode + * + * @return array{int, string|null} the new offset and the decoded object + */ + private static function readDER(string $der, int $offset = 0): array + { + $pos = $offset; + $size = \strlen($der); + $constructed = (\ord($der[$pos]) >> 5) & 0x01; + $type = \ord($der[$pos++]) & 0x1f; + + // Length + $len = \ord($der[$pos++]); + if ($len & 0x80) { + $n = $len & 0x1f; + $len = 0; + while ($n-- && $pos < $size) { + $len = ($len << 8) | \ord($der[$pos++]); + } + } + + // Value + if ($type === self::ASN1_BIT_STRING) { + $pos++; // Skip the first contents octet (padding indicator) + $data = \substr($der, $pos, $len - 1); + $pos += $len - 1; + } elseif (!$constructed) { + $data = \substr($der, $pos, $len); + $pos += $len; + } else { + $data = null; + } + + return [$pos, $data]; + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/Key.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/Key.php new file mode 100644 index 0000000..00cf7f2 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/Key.php @@ -0,0 +1,64 @@ +keyMaterial = $keyMaterial; + $this->algorithm = $algorithm; + } + + /** + * Return the algorithm valid for this key + * + * @return string + */ + public function getAlgorithm(): string + { + return $this->algorithm; + } + + /** + * @return string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate + */ + public function getKeyMaterial() + { + return $this->keyMaterial; + } +} diff --git a/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/SignatureInvalidException.php b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/SignatureInvalidException.php new file mode 100644 index 0000000..d35dee9 --- /dev/null +++ b/app/lab/broken-authentication/jwt-token-bypass/vendor/firebase/php-jwt/src/SignatureInvalidException.php @@ -0,0 +1,7 @@ +