From 51728313c1274ec9a5133a2b407031c496b59273 Mon Sep 17 00:00:00 2001 From: Matthew Wang Date: Thu, 26 Sep 2024 01:35:37 -0400 Subject: [PATCH] Initial commit --- .gitattributes | 1 + .github/ISSUE_TEMPLATE/bug_report.md | 36 + .github/ISSUE_TEMPLATE/feature_request.md | 20 + .github/PULL_REQUEST_TEMPLATE.md | 25 + .github/workflows/lint.yml | 57 + .gitignore | 11 + README.md | 218 + backend/.dockerignore | 2 + backend/.gitignore | 162 + backend/Dockerfile | 11 + backend/README.md | 1 + backend/alembic.ini | 117 + backend/app/__init__.py | 92 + backend/app/config.py | 42 + backend/app/models/__init__.py | 19 + backend/app/rest/__init__.py | 0 backend/app/server.py | 21 + .../app/services/interfaces/auth_service.py | 129 + .../app/services/interfaces/email_service.py | 25 + .../app/services/interfaces/entity_service.py | 59 + .../interfaces/file_storage_service.py | 63 + .../interfaces/simple_entity_service.py | 59 + .../app/services/interfaces/user_service.py | 138 + backend/app/utilities/csv_utils.py | 151 + backend/app/utilities/firebase_rest_client.py | 147 + backend/migrations/README | 1 + backend/migrations/env.py | 78 + backend/migrations/script.py.mako | 26 + backend/pdm.lock | 1324 ++++ backend/pyproject.toml | 28 + backend/tests/__init__.py | 0 backend/tests/functional/conftest.py | 9 + backend/tests/functional/test_user_routes.py | 69 + backend/tests/functional/test_user_service.py | 84 + backend/tests/unit/test_csv.py | 155 + backend/tests/unit/test_models.py | 26 + db-init/create-multiple-dbs.sh | 22 + docker-compose.yml | 54 + e2e-tests/cat.png | Bin 0 -> 524387 bytes e2e-tests/conftest.py | 95 + e2e-tests/dog.jpg | Bin 0 -> 127039 bytes e2e-tests/test_auth.py | 55 + e2e-tests/test_entity.py | 121 + e2e-tests/test_simple_entity.py | 81 + e2e-tests/test_user.py | 106 + frontend/.eslintrc.json | 3 + frontend/.gitignore | 36 + frontend/README.md | 40 + frontend/next.config.mjs | 6 + frontend/package-lock.json | 5308 +++++++++++++++++ frontend/package.json | 26 + frontend/postcss.config.mjs | 8 + frontend/public/favicon.ico | Bin 0 -> 25931 bytes frontend/src/pages/_app.tsx | 6 + frontend/src/pages/_document.tsx | 13 + frontend/src/pages/fonts/GeistMonoVF.woff | Bin 0 -> 67864 bytes frontend/src/pages/fonts/GeistVF.woff | Bin 0 -> 66268 bytes frontend/src/pages/index.tsx | 115 + frontend/src/setupTests.ts | 5 + frontend/src/styles/globals.css | 27 + frontend/tailwind.config.ts | 19 + frontend/tsconfig.json | 23 + hooks/post-merge | 21 + secret.config | 2 + setup.sh | 14 + update_secret_files.py | 56 + 66 files changed, 9668 insertions(+) create mode 100644 .gitattributes create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/lint.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 backend/.dockerignore create mode 100644 backend/.gitignore create mode 100644 backend/Dockerfile create mode 100644 backend/README.md create mode 100644 backend/alembic.ini create mode 100644 backend/app/__init__.py create mode 100644 backend/app/config.py create mode 100644 backend/app/models/__init__.py create mode 100644 backend/app/rest/__init__.py create mode 100644 backend/app/server.py create mode 100644 backend/app/services/interfaces/auth_service.py create mode 100644 backend/app/services/interfaces/email_service.py create mode 100644 backend/app/services/interfaces/entity_service.py create mode 100644 backend/app/services/interfaces/file_storage_service.py create mode 100644 backend/app/services/interfaces/simple_entity_service.py create mode 100644 backend/app/services/interfaces/user_service.py create mode 100644 backend/app/utilities/csv_utils.py create mode 100644 backend/app/utilities/firebase_rest_client.py create mode 100644 backend/migrations/README create mode 100644 backend/migrations/env.py create mode 100644 backend/migrations/script.py.mako create mode 100644 backend/pdm.lock create mode 100644 backend/pyproject.toml create mode 100644 backend/tests/__init__.py create mode 100644 backend/tests/functional/conftest.py create mode 100644 backend/tests/functional/test_user_routes.py create mode 100644 backend/tests/functional/test_user_service.py create mode 100644 backend/tests/unit/test_csv.py create mode 100644 backend/tests/unit/test_models.py create mode 100755 db-init/create-multiple-dbs.sh create mode 100644 docker-compose.yml create mode 100644 e2e-tests/cat.png create mode 100644 e2e-tests/conftest.py create mode 100644 e2e-tests/dog.jpg create mode 100644 e2e-tests/test_auth.py create mode 100644 e2e-tests/test_entity.py create mode 100644 e2e-tests/test_simple_entity.py create mode 100644 e2e-tests/test_user.py create mode 100644 frontend/.eslintrc.json create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/next.config.mjs create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/postcss.config.mjs create mode 100644 frontend/public/favicon.ico create mode 100644 frontend/src/pages/_app.tsx create mode 100644 frontend/src/pages/_document.tsx create mode 100644 frontend/src/pages/fonts/GeistMonoVF.woff create mode 100644 frontend/src/pages/fonts/GeistVF.woff create mode 100644 frontend/src/pages/index.tsx create mode 100644 frontend/src/setupTests.ts create mode 100644 frontend/src/styles/globals.css create mode 100644 frontend/tailwind.config.ts create mode 100644 frontend/tsconfig.json create mode 100644 hooks/post-merge create mode 100644 secret.config create mode 100755 setup.sh create mode 100644 update_secret_files.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8cfbd30 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +db-init/create-multiple-dbs.sh eol=lf diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..663f53e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,36 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Severity** + + + +- [ ] Low +- [ ] Moderate +- [ ] Critical + +**Describe the bug** + + +**Additional context** + + +**To reproduce** + + +**Device information** + +Type: +OS: +Browser: diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..a79fa0d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** + + +**Describe the solution you'd like** + + +**Describe alternatives you've considered** + + +**Additional context** + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..fd03fdc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,25 @@ +## Notion ticket link + +[Ticket Name](https://www.notion.so/uwblueprintexecs/Task-Board-db95cd7b93f245f78ee85e3a8a6a316d) + + + +## Implementation description +* + + + +## Steps to test +1. + + + +## What should reviewers focus on? +* + + +## Checklist +- [ ] My PR name is descriptive and in imperative tense +- [ ] My commit messages are descriptive and in imperative tense. My commits are atomic and trivial commits are squashed or fixup'd into non-trivial commits +- [ ] I have run the appropriate linter(s) +- [ ] I have requested a review from the PL, as well as other devs who have background knowledge on this PR or who will be building on top of this PR diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..2950c9f --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,57 @@ +name: Lint codebase + +on: + push: + branches: + - main + paths: + - "frontend/**" + - "backend/typescript/**" + - "backend/python/**" + pull_request: + branches: + - main + paths: + - "frontend/**" + - "backend/typescript/**" + - "backend/python/**" + +jobs: + run-lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Filter changed files + uses: dorny/paths-filter@v2 + id: changes + with: + filters: | + frontend: + - "frontend/**" + backend: + - "backend/**" + + - name: Set up Node.js + if: steps.changes.outputs.frontend == 'true' + uses: actions/setup-node@v2 + with: + node-version: "20.11.1" + cache: "yarn" + cache-dependency-path: | + frontend/yarn.lock + + - name: Install Node.js dependencies + if: steps.changes.outputs.frontend == 'true' + run: yarn --cwd ./frontend --prefer-offline + + - name: Lint frontend + if: steps.changes.outputs.frontend == 'true' + working-directory: ./frontend + run: yarn lint + + - name: Lint Python backend + if: steps.changes.outputs.python-backend == 'true' + working-directory: ./backend/python + run: pip install black && python -m black --check . diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f329ddd --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +**/node_modules +**/.env +**/build +**/venv +**/__pycache__ +**/*.log +**/firebaseServiceAccount.json +**/.DS_Store +.vscode +**/*.cache +**/*.egg-info diff --git a/README.md b/README.md new file mode 100644 index 0000000..93f366e --- /dev/null +++ b/README.md @@ -0,0 +1,218 @@ +# Starter Code V2 + +Starter Code for Blueprint projects, brought to you by the UW Blueprint Internal Tools team! πŸ—οΈ + +Starter Code is an easy to set up, flexible, and customizable bootstrap that aims to encourage best development practices and provide baseline implementations of features common to UW Blueprint projects. 24 different stack combinations are supported, allowing "mix and match" between our most commonly used technologies. For more information on the motivation and design decisions behind Starter Code, please check out the home page of our [documentation site](https://uwblueprint.github.io/starter-code-v2)! + +Teams should adopt Starter Code and use it as a foundation to get their projects off the ground faster, and as a guideline for how to structure their applications. We hope Starter Code will help project teams output higher quality and maintainable code, and allow them to focus on building cool, interesting features instead of setting up and doing boilerplate work. Put simply, Starter Code is here to help us deliver more value to our NPO partners. + +## Stack Choices +**Backend Language:** TypeScript (Express.js on Node.js) or Python (with Flask)
+**Backend API:** REST or GraphQL
+**Database:** PostgreSQL or MongoDB
+**User Auth:** Opt-in or opt-out
+**File Storage:** Opt-in or opt-out
+ +The provided frontend is a React application written in TypeScript. + +## Key Features & Benefits +* Many stack combinations, built with separation of concerns in mind to make it easy to swap out layers of the codebase as needed +* Prebuilt authentication and authorization services, including Google OAuth integration +* Basic CRUD services via PostgresSQL and MongoDB ORMs +* Email service +* File storage service +* CSV export utilities +* Out of the box support for frontend deployment to Firebase Hosting via CI/CD pipelines +* Lots of examples of programming best practices in both the frontend and backend + + +## Table of Contents +* πŸ“ [Documentation](#documentation) +* ❗❗ [Reporting Issues](#reporting-issues) +* πŸ‘¨β€πŸ’» [Getting Started: Users](#getting-started-users) +* πŸ‘· [Getting Started: Internal Tools Developers](#getting-started-internal-tools-developers) + * βœ”οΈ [Prerequisites](#prerequisites) + * βš™οΈ [Set up](#set-up) +* πŸš€ [Creating a Release](#creating-a-release) +* 🧰 [Useful Commands](#useful-commands) + * ℹ️ [Get Names & Statuses of Running Containers](#get-names--statuses-of-running-containers) + * πŸ’½ [Accessing PostgreSQL Database](#accessing-postgresql-database) + * ✨ [Linting & Formatting](#linting--formatting) + * πŸ§ͺ [Running Tests](#running-tests) +* ✍️ [Updating Documentation](#updating-documentation) +* 🌳 [Version Control Guide](#version-control-guide) + * 🌿 [Branching](#branching) + * πŸ”’ [Commits](#commits) + +## Documentation + +https://uwblueprint.github.io/starter-code-v2 + + +## Reporting Issues + +You can open an issue in this GitHub repository, or message the #internal-tools-help channel in UW Blueprint’s Slack workspace. + + +## Getting Started: Users + +Please follow the instructions in this [guide](https://uwblueprint.github.io/starter-code-v2/docs/getting-started) to generate and set up Starter Code. Starter Code must be preprocessed through the [`create-bp-app`](https://www.npmjs.com/package/@uwblueprint/create-bp-app) CLI tool before being used, so **please do not clone and run this repository directly**. + +--- + +## Getting Started: Internal Tools Developers + +### Prerequisites + +* Install Docker Desktop ([MacOS](https://docs.docker.com/docker-for-mac/install/) | [Windows (Home)](https://docs.docker.com/docker-for-windows/install-windows-home/) | [Windows (Pro, Enterprise, Education)](https://docs.docker.com/docker-for-windows/install/) | [Linux](https://docs.docker.com/engine/install/#server)) and ensure that it is running +* Ask a member of the Internal Tools team to be added to our Firebase and MongoDB Atlas projects +* Set up Vault client for secret management, see instructions [here](https://www.notion.so/uwblueprintexecs/Secret-Management-2d5b59ef0987415e93ec951ce05bf03e) + + +### Set up + +1. Clone this repository and `cd` into the project folder +```bash +git clone https://github.com/uwblueprint/starter-code-v2.git +cd starter-code-v2 +``` +2. Pull secrets from Vault +``` +vault kv get -format=json kv/internal-tools | python update_secret_files.py +``` +3. Generate a Firebase service account private key. Go to our project in the [Firebase console](https://console.firebase.google.com), click "Project settings" > "Service accounts" > "Generate private key", wait for a file to be downloaded. Copy the file into `/backend/typescript/` **and** `/backend/python`, and rename both to **`firebaseServiceAccount.json`** +4. Comment out one of the backend services in `docker-compose.yml` +5. In the root `.env` file, change the name of the MongoDB database according to the backend you're using: either `typescript-test` or `python-test` +6. If using the Python backend, update the email address and display name on lines 23-24 in `backend/python/app/rest/auth_routes.py` to be `internaltools@uwblueprint.org` and `Internal Tools` respectively +7. Run the application +```bash +docker-compose up --build +``` + +The backend runs at http://localhost:8080 and the frontend runs at http://localhost:3000. By default, we use GraphQL (with TypeScript backend), REST (with Python backend), MongoDB, with user auth. + + +## Creating a Release +To update the release branch with commits from main: +1. Create a new branch off the release branch +2. Merge main into the new branch +3. Open a PR from your new branch -> release branch +4. Reviewers should be able to see just the changes from the new main commits +5. Merge the PR, it should just show up as a single commit in the commit history of the release branch +6. Tag the most recent `main` commit included in the release +```bash +git tag +git push origin --tags +``` + + +## Useful Commands + +### Get Names & Statuses of Running Containers +```bash +docker ps +``` + +### Accessing PostgreSQL Database + +```bash +# run a bash shell in the container +docker exec -it scv2_db /bin/bash + +# in container now +psql -U postgres -d scv2 + +# in postgres shell, some common commands: +# display all table names +\dt +# quit +\q +# you can run any SQL query, don't forget the semicolon! +SELECT * FROM ; +``` + +### Linting & Formatting +Python backend: +```bash +docker exec -it scv2_py_backend /bin/bash -c "black ." +``` + +TypeScript backend and frontend: +```bash +# linting & formatting warnings only +docker exec -it scv2_ts_backend /bin/bash -c "yarn lint" + +# linting with fix & formatting +docker exec -it scv2_ts_backend /bin/bash -c "yarn fix" +``` + +### Running Tests +Python backend: +```bash +docker exec -it scv2_py_backend /bin/bash -c "pip install -e . && pytest" +``` + +TypeScript backend and frontend: +```bash +docker exec -it scv2_ts_backend /bin/bash -c "yarn test" +``` + + +## Updating Documentation + +To update documentation, checkout the `gh-pages` branch: +```bash +git checkout gh-pages +``` + +All documentation should be added to the `docs` folder. After making changes, commit and push to GitHub. The changes will be automatically deployed. + +We use Jekyll to build the site, so you will need to install some additional dependencies to run the site locally. See this [article](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/testing-your-github-pages-site-locally-with-jekyll) for more details. + +To run locally: +```bash +bundle exec jekyll serve +``` + +## Version Control Guide + +### Branching +* Branch off of `main` for all feature work and bug fixes, creating a "feature branch". Prefix the feature branch name with your name. The branch name should be in kebab case and it should be short and descriptive. E.g. `sherry/readme-update` +* To integrate changes on `main` into your feature branch, **use rebase instead of merge** + +```bash +# currently working on feature branch, there are new commits on main +git pull origin main --rebase + +# if there are conflicts, resolve them and then: +git add . +git rebase --continue + +# force push to remote feature branch +git push -f +``` + +### Commits +* Commits should be atomic (guideline: the commit is self-contained; a reviewer could make sense of it even if they viewed the commit diff in isolation) +* Trivial commits (e.g. fixing a typo in the previous commit, formatting changes) should be squashed or fixup'd into the last non-trivial commit + +```bash +# last commit contained a typo, fixed now +git add . +git commit -m "Fix typo" + +# fixup into previous commit through interactive rebase +# x in HEAD~x refers to the last x commits you want to view +git rebase -i HEAD~2 +# text editor opens, follow instructions in there to fixup + +# force push to remote feature branch +git push -f +``` + +* Commit messages and PR names are descriptive and written in **imperative tense**1. The first word should be capitalized. E.g. "Create user REST endpoints", not "Created user REST endpoints" +* PRs can contain multiple commits, they do not need to be squashed together before merging as long as each commit is atomic. Our repo is configured to only allow squash commits to `main` so the entire PR will appear as 1 commit on `main`, but the individual commits are preserved when viewing the PR. + +--- + +1: From Git's own [guidelines](https://github.com/git/git/blob/311531c9de557d25ac087c1637818bd2aad6eb3a/Documentation/SubmittingPatches#L139-L145) diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..4ccfae7 --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,2 @@ +.venv +**/__pycache__ diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..3a8816c --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,162 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm-project.org/#use-with-ide +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..2b9239b --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,11 @@ +FROM python:3.12 + +WORKDIR /app + +COPY requirements.txt ./ +RUN pip install -r requirements.txt + +COPY . ./app + +EXPOSE 8080 +ENTRYPOINT ["python", "server.py"] diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..7c3e011 --- /dev/null +++ b/backend/README.md @@ -0,0 +1 @@ +# llsc-backend diff --git a/backend/alembic.ini b/backend/alembic.ini new file mode 100644 index 0000000..18f8896 --- /dev/null +++ b/backend/alembic.ini @@ -0,0 +1,117 @@ +# A generic, single database configuration. + +[alembic] +# path to migration scripts +# Use forward slashes (/) also on windows to provide an os agnostic path +script_location = migrations + +# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s +# Uncomment the line below if you want the files to be prepended with date and time +# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file +# for all available tokens +# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s + +# sys.path path, will be prepended to sys.path if present. +# defaults to the current working directory. +prepend_sys_path = . + +# timezone to use when rendering the date within the migration file +# as well as the filename. +# If specified, requires the python>=3.9 or backports.zoneinfo library. +# Any required deps can installed by adding `alembic[tz]` to the pip requirements +# string value is passed to ZoneInfo() +# leave blank for localtime +# timezone = + +# max length of characters to apply to the "slug" field +# truncate_slug_length = 40 + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +# set to 'true' to allow .pyc and .pyo files without +# a source .py file to be detected as revisions in the +# versions/ directory +# sourceless = false + +# version location specification; This defaults +# to migrations/versions. When using multiple version +# directories, initial revisions must be specified with --version-path. +# The path separator used here should be the separator specified by "version_path_separator" below. +# version_locations = %(here)s/bar:%(here)s/bat:migrations/versions + +# version path separator; As mentioned above, this is the character used to split +# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. +# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas. +# Valid values for version_path_separator are: +# +# version_path_separator = : +# version_path_separator = ; +# version_path_separator = space +# version_path_separator = newline +version_path_separator = os # Use os.pathsep. Default configuration used for new projects. + +# set to 'true' to search source files recursively +# in each "version_locations" directory +# new in Alembic version 1.10 +# recursive_version_locations = false + +# the output encoding used when revision files +# are written from script.py.mako +# output_encoding = utf-8 + +sqlalchemy.url = driver://user:pass@localhost/dbname + + +[post_write_hooks] +# post_write_hooks defines scripts or Python functions that are run +# on newly generated revision scripts. See the documentation for further +# detail and examples + +# format using "black" - use the console_scripts runner, against the "black" entrypoint +# hooks = black +# black.type = console_scripts +# black.entrypoint = black +# black.options = -l 79 REVISION_SCRIPT_FILENAME + +# lint with attempts to fix using "ruff" - use the exec runner, execute a binary +# hooks = ruff +# ruff.type = exec +# ruff.executable = %(here)s/.venv/bin/ruff +# ruff.options = --fix REVISION_SCRIPT_FILENAME + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/backend/app/__init__.py b/backend/app/__init__.py new file mode 100644 index 0000000..82d5db9 --- /dev/null +++ b/backend/app/__init__.py @@ -0,0 +1,92 @@ +import os +import re +import firebase_admin +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from logging.config import dictConfig +from .config import app_config + +def create_app(): + # configure FastAPI logger + dictConfig( + { + "version": 1, + "handlers": { + "wsgi": { + "class": "logging.FileHandler", + "level": "ERROR", + "filename": "error.log", + "formatter": "default", + } + }, + "formatters": { + "default": { + "format": "%(asctime)s-%(levelname)s-%(name)s::%(module)s,%(lineno)s: %(message)s" + }, + }, + "root": {"level": "ERROR", "handlers": ["wsgi"]}, + } + ) + + app = FastAPI() + + app.add_middleware( + CORSMiddleware, + allow_origins=[ + "http://localhost:3000", + "https://uw-blueprint-starter-code.firebaseapp.com", + "https://uw-blueprint-starter-code.web.app", + # TODO: create a separate middleware functio to dynamically determine this value + # re.compile("^https:\/\/uw-blueprint-starter-code--pr.*\.web\.app$"), + ], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], + ) + + if os.getenv("FASTAPI_CONFIG") != "production": + app.state.database_uri = "postgresql://{username}:{password}@{host}:5432/{db}".format( + username=os.getenv("POSTGRES_USER"), + password=os.getenv("POSTGRES_PASSWORD"), + host=os.getenv("DB_HOST"), + db=( + os.getenv("POSTGRES_DB_TEST") + if app_config["TESTING"] + else os.getenv("POSTGRES_DB_DEV") + ), + ) + else: + app.state.database_uri = os.getenv("DATABASE_URL") + + private_key = os.getenv("FIREBASE_SVC_ACCOUNT_PRIVATE_KEY") + if private_key: + private_key = private_key.replace("\\n", "\n") + + firebase_admin.initialize_app( + firebase_admin.credentials.Certificate( + { + "type": "service_account", + "project_id": os.getenv("FIREBASE_PROJECT_ID"), + "private_key_id": os.getenv("FIREBASE_SVC_ACCOUNT_PRIVATE_KEY_ID"), + "private_key": private_key, + "client_email": os.getenv("FIREBASE_SVC_ACCOUNT_CLIENT_EMAIL"), + "client_id": os.getenv("FIREBASE_SVC_ACCOUNT_CLIENT_ID"), + "auth_uri": os.getenv("FIREBASE_SVC_ACCOUNT_AUTH_URI"), + "token_uri": os.getenv("FIREBASE_SVC_ACCOUNT_TOKEN_URI"), + "auth_provider_x509_cert_url": os.getenv( + "FIREBASE_SVC_ACCOUNT_AUTH_PROVIDER_X509_CERT_URL" + ), + "client_x509_cert_url": os.getenv( + "FIREBASE_SVC_ACCOUNT_CLIENT_X509_CERT_URL" + ), + } + ), + {"storageBucket": os.getenv("FIREBASE_STORAGE_DEFAULT_BUCKET")}, + ) + + # from . import models, rest + + # models.init_app(app) + # rest.init_app(app) + + return app diff --git a/backend/app/config.py b/backend/app/config.py new file mode 100644 index 0000000..2dd955b --- /dev/null +++ b/backend/app/config.py @@ -0,0 +1,42 @@ +import os + + +class Config(object): + """ + Common configurations + """ + + # put any configurations here that are common across all environments + + +class DevelopmentConfig(Config): + """ + Development configurations + """ + + DEBUG = True + SQLALCHEMY_ECHO = True + + +class ProductionConfig(Config): + """ + Production configurations + """ + + DEBUG = False + + +class TestingConfig(Config): + """ + Testing configurations + """ + + DEBUG = False + TESTING = True + + +app_config = { + "development": DevelopmentConfig, + "production": ProductionConfig, + "testing": TestingConfig, +} diff --git a/backend/app/models/__init__.py b/backend/app/models/__init__.py new file mode 100644 index 0000000..3e4e10c --- /dev/null +++ b/backend/app/models/__init__.py @@ -0,0 +1,19 @@ +from sqlalchemy import SQLAlchemy + +db = SQLAlchemy() + + +def init_app(app): + + app.app_context().push() + db.init_app(app) + + erase_db_and_sync = app.config["TESTING"] + + if erase_db_and_sync: + # drop tables + db.reflect() + db.drop_all() + + # recreate tables + db.create_all() diff --git a/backend/app/rest/__init__.py b/backend/app/rest/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/app/server.py b/backend/app/server.py new file mode 100644 index 0000000..36467c7 --- /dev/null +++ b/backend/app/server.py @@ -0,0 +1,21 @@ +import os +import uvicorn +from dotenv import load_dotenv +from typing import Union +from fastapi import FastAPI + +app = FastAPI() + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Union[str, None] = None): + return {"item_id": item_id, "q": q} + +if __name__ == "__main__": + load_dotenv() + + uvicorn.run(app, host="0.0.0.0", port=int(os.getenv("PORT", 8080))) diff --git a/backend/app/services/interfaces/auth_service.py b/backend/app/services/interfaces/auth_service.py new file mode 100644 index 0000000..ed4499b --- /dev/null +++ b/backend/app/services/interfaces/auth_service.py @@ -0,0 +1,129 @@ +from abc import ABC, abstractmethod + + +class IAuthService(ABC): + """ + AuthService interface with user authentication methods + """ + + @abstractmethod + def generate_token(self, email, password): + """ + Generate a short-lived JWT access token and a long-lived refresh token + when supplied user's email and password + + :param email: user's email + :type email: str + :param password: user's password + :type password: str + :return: AuthDTO object containing the access token, refresh token, and user info + :rtype: AuthDTO + :raises Exception: if token generation fails + """ + pass + + @abstractmethod + def generate_token_for_oauth(self, id_token): + """ + Generate a short-lived JWT access token and a long-lived refresh token + when supplied user's OAuth ID token + + :param id_token: user's OAuth ID token + :type id_token: str + :return: AuthDTO object containing the access token, refresh token, and user info + :rtype: AuthDTO + :raises Exception: if token generation fails + """ + pass + + @abstractmethod + def revoke_tokens(self, user_id): + """ + Revoke all refresh tokens of a user + + :param user_id: user_id of user whose refresh tokens are to be revoked + :type user_id: str + :raises Exception: if token revocation fails + """ + pass + + @abstractmethod + def renew_token(self, refresh_token): + """ + Generate new access and refresh token pair using the provided refresh token + + :param refresh_token: user's refresh token + :type refresh_token: str + :return: Token object containing new access and refresh tokens + :rtype: Token + :raises Exception: if token renewal fails + """ + pass + + @abstractmethod + def reset_password(self, email): + """ + Generates a password reset link for the user with the given email + and sends the reset link to that email address + + :param email: email of user requesting password reset + :type email: str + :raises Exception: if unable to generate link or send email + """ + pass + + @abstractmethod + def send_email_verification_link(self, email): + """ + Generates an email verification link for the user with the given email + and sends the reset link to that email address + + :param email: email of user requesting password reset + :type email: str + :raises Exception: if unable to generate link or send email + """ + pass + + @abstractmethod + def is_authorized_by_role(self, access_token, roles): + """ + Determine if the provided access token is valid and authorized for at least + one of the specified roles + + :param access_token: user's access token + :type access_token: str + :param roles: roles to check for + :type roles: {str} + :return: true if token valid and authorized, false otherwise + :rtype: bool + """ + pass + + @abstractmethod + def is_authorized_by_user_id(self, access_token, requested_user_id): + """ + Determine if the provided access token is valid and issued to the requested user + + :param access_token: user's access token + :type access_token: str + :param requested_user_id: user_id of the requested user + :type requested_user_id: str + :return: true if token valid and authorized, false otherwise + :rtype: bool + """ + pass + + @abstractmethod + def is_authorized_by_email(self, access_token, requested_email): + """ + Determine if the provided access token is valid and issued to the requested user + with the specified email address + + :param access_token: user's access token + :type access_token: str + :param requested_email: email address of the requested user + :type requested_email: str + :return: true if token valid and authorized, false otherwise + :rtype: bool + """ + pass diff --git a/backend/app/services/interfaces/email_service.py b/backend/app/services/interfaces/email_service.py new file mode 100644 index 0000000..c2a71f5 --- /dev/null +++ b/backend/app/services/interfaces/email_service.py @@ -0,0 +1,25 @@ +from abc import ABC, abstractmethod + + +class IEmailService(ABC): + """ + EmailService interface for handling email related functionality + """ + + @abstractmethod + def send_email(self, to, subject, body): + """ + Sends email with given parameters + + :param to: recipient's email + :type to: str + :param subject: email subject + :type subject: str + :param body: email body as html + :type body: str + :return: a dict that contains fields like id, threadId, labelIds + of the sent email + :rtype: dict + :raises Exception: if email was not sent successfully + """ + pass diff --git a/backend/app/services/interfaces/entity_service.py b/backend/app/services/interfaces/entity_service.py new file mode 100644 index 0000000..dd1fdad --- /dev/null +++ b/backend/app/services/interfaces/entity_service.py @@ -0,0 +1,59 @@ +from abc import ABC, abstractmethod + + +class IEntityService(ABC): + """ + A class to handle CRUD functionality for entities + """ + + @abstractmethod + def get_entities(self): + """Return a list of all entities + + :return: A list of dictionaries from Entity objects + :rtype: list of dictionaries + """ + pass + + @abstractmethod + def get_entity(self, id): + """Return a dictionary from the Entity object based on id + + :param id: Entity id + :return: dictionary of Entity object + :rtype: dictionary + :raises Exception: id retrieval fails + """ + pass + + @abstractmethod + def create_entity(self, entity): + """Create a new Entity object + + :param entity: dictionary of entity fields + :return: dictionary of Entity object + :rtype: dictionary + :raises Exception: if entity fields are invalid + """ + pass + + @abstractmethod + def update_entity(self, id, entity): + """Update existing entity + + :param entity: dictionary of entity fields + :param id: Entity id + :return: dictionary of Entity object + :rtype: dictionary + """ + pass + + @abstractmethod + def delete_entity(self, id): + """Delete existing entity + + :param id: Entity id + :return: id of the Entity deleted + :rtype: integer + """ + pass diff --git a/backend/app/services/interfaces/file_storage_service.py b/backend/app/services/interfaces/file_storage_service.py new file mode 100644 index 0000000..a643e06 --- /dev/null +++ b/backend/app/services/interfaces/file_storage_service.py @@ -0,0 +1,63 @@ +from abc import ABC, abstractmethod +from datetime import timedelta + + +class IFileStorageService(ABC): + """ + FileStorageService interface for handling blob storage + """ + + @abstractmethod + def get_file(self, file_name, expiration_time=timedelta(minutes=60)): + """ + Returns a signed url to the file with the given file name if found + + :param file_name: name of the file + :type file_name: str + :param expiration_time: the lifetime of the url, defaults to timedelta(minutes=60) + :type expiration_time: timedelta, optional + :return: signed url of the file + :rtype: str or None if file is not found + """ + pass + + @abstractmethod + def create_file(self, file_name, file, content_type=None): + """ + Creates a file in the default bucket with given file name + + :param file_name: name of the file + :type file_name: str + :param file: file to upload + :type file: file + :param content_type: MIME type of the file, defaults to None + :type content_type: string, optional + :raises Exception: file name already exists + """ + pass + + @abstractmethod + def update_file(self, file_name, file, content_type=None): + """ + Replaces the file that has given file name in default bucket + + :param file_name: name of the file + :type file_name: str + :param file: file to replace with + :type file: file + :param content_type: MIME type of the file, defaults to None + :type content_type: string, optional + :raises Exception: file name does not already exist + """ + pass + + @abstractmethod + def delete_file(self, file_name): + """ + Deletes the file with the given file name + + :param file_name: name of the file + :type file_name: str + :raises Exception: file not found + """ + pass diff --git a/backend/app/services/interfaces/simple_entity_service.py b/backend/app/services/interfaces/simple_entity_service.py new file mode 100644 index 0000000..300b6f8 --- /dev/null +++ b/backend/app/services/interfaces/simple_entity_service.py @@ -0,0 +1,59 @@ +from abc import ABC, abstractmethod + + +class ISimpleEntityService(ABC): + """ + A class to handle CRUD functionality for simple entities + """ + + @abstractmethod + def get_entities(self): + """Return a list of all simple entities + + :return: A list of dictionaries from SimpleEntity objects + :rtype: list of dictionaries + """ + pass + + @abstractmethod + def get_entity(self, id): + """Return a dictionary from the SimpleEntity object based on id + + :param id: SimpleEntity id + :return: dictionary of SimpleEntity object + :rtype: dictionary + :raises Exception: id retrieval fails + """ + pass + + @abstractmethod + def create_entity(self, entity): + """Create a new SimpleEntity object + + :param entity: dictionary of simple entity fields + :return: dictionary of SimpleEntity object + :rtype: dictionary + :raises Exception: if simple entity fields are invalid + """ + pass + + @abstractmethod + def update_entity(self, id, entity): + """Update existing simple entity + + :param entity: dictionary of simple entity fields + :param id: SimpleEntity id + :return: dictionary of SimpleEntity object + :rtype: dictionary + """ + pass + + @abstractmethod + def delete_entity(self, id): + """Delete existing simple entity + + :param id: SimpleEntity id + :return: id of the SimpleEntity deleted + :rtype: integer + """ + pass diff --git a/backend/app/services/interfaces/user_service.py b/backend/app/services/interfaces/user_service.py new file mode 100644 index 0000000..34c9c04 --- /dev/null +++ b/backend/app/services/interfaces/user_service.py @@ -0,0 +1,138 @@ +from abc import ABC, abstractmethod + + +class IUserService(ABC): + """ + UserService interface with user management methods + """ + + @abstractmethod + def get_user_by_id(self, user_id): + """ + Get user associated with user_id + + :param user_id: user's id + :type user_id: str + :return: a UserDTO with user's information + :rtype: UserDTO + :raises Exception: if user retrieval fails + """ + pass + + @abstractmethod + def get_user_by_email(self, email): + """ + Get user associated with email + + :param email: user's email + :type email: str + :return: a UserDTO with user's information + :rtype: UserDTO + :raises Exception: if user retrieval fails + """ + pass + + @abstractmethod + def get_user_role_by_auth_id(self, auth_id): + """ + Get role of user associated with auth_id + + :param auth_id: user's auth_id + :type auth_id: str + :return: role of the user + :rtype: str + :raises Exception: if user role retrieval fails + """ + pass + + @abstractmethod + def get_user_id_by_auth_id(self, auth_id): + """ + Get id of user associated with auth_id + + :param auth_id: user's auth_id + :type auth_id: str + :return: id of the user + :rtype: str + :raises Exception: if user_id retrieval fails + """ + pass + + @abstractmethod + def get_auth_id_by_user_id(self, user_id): + """ + Get auth_id of user associated with user_id + + :param user_id: user's id + :type user_id: str + :return: auth_id of the user + :rtype: str + :raises Exception: if auth_id retrieval fails + """ + pass + + @abstractmethod + def get_users(self): + """ + Get all users (possibly paginated in the future) + + :return: list of UserDTOs + :rtype: [UserDTO] + :raises Exception: if user retrieval fails + """ + pass + + @abstractmethod + def create_user(self, user, auth_id=None, signup_method="PASSWORD"): + """ + Create a user, email verification configurable + + :param user: the user to be created + :type user: CreateUserDTO + :param auth_id: user's firebase auth id, defaults to None + :type auth_id: string, optional + :param signup_method: method of signup, either "PASSWORD" or "GOOGLE", defaults to "PASSWORD" + :type signup_method: str, optional + :return: the created user + :rtype: UserDTO + :raises Exception: if user creation fails + """ + pass + + @abstractmethod + def update_user_by_id(self, user_id, user): + """ + Update a user + Note: the password cannot be updated using this method, use IAuthService.reset_password instead + + :param user_id: user's id + :type user_id: str + :param user: the user to be updated + :type user: UpdateUserDTO + :return: the updated user + :rtype: UserDTO + :raises Exception: if user update fails + """ + pass + + @abstractmethod + def delete_user_by_id(self, user_id): + """ + Delete a user by user_id + + :param user_id: user_id of user to be deleted + :type user_id: str + :raises Exception: if user deletion fails + """ + pass + + @abstractmethod + def delete_user_by_email(self, email): + """ + Delete a user by email + + :param str email: email of user to be deleted + :type email: str + :raises Exception: if user deletion fails + """ + pass diff --git a/backend/app/utilities/csv_utils.py b/backend/app/utilities/csv_utils.py new file mode 100644 index 0000000..c5d74a8 --- /dev/null +++ b/backend/app/utilities/csv_utils.py @@ -0,0 +1,151 @@ +""" +Generates a csv string given a list of dictionaries +Some Notes: +1. Unwind only unwinds a single level (i.e a list) +2. CSV requires all dictionaries in the list are of the same type +""" + +import csv +import io + + +def flatten_dicts(dictionary, parent_key="", sep="."): + """ + Flatten a dictionary of dictionaries into a single dictionary + + Example: + {'a': {'b': 1, 'c': 2}, 'd': {'e': 3, 'f': 4}} + flatten_dicts(dictionary, parent_key="", sep=".") + {'a.b': 1, 'a.c': 2, 'd.e': 3, 'd.f': 4} + + :param dictionary: dictionary to flatten + :param parent_key: key to use as the parent key for the new dictionary + :param sep: separator to use when combining keys + :return: flattened dictionary + :rtype: dict + """ + items = [] + for key, val in dictionary.items(): + new_key = parent_key + sep + str(key) if parent_key else str(key) + if isinstance(val, dict): + items.extend(flatten_dicts(val, new_key, sep=sep).items()) + + else: + items.append((new_key, val)) + return dict(items) + + +def flatten_lists_in_dict(dictionary, sep="."): + """ + Flatten a dictionary of lists into a single dictionary + + Example: + {'a': [1, 2, 3], 'b': [4, 5, 6]} + flatten_lists_in_dict(dictionary, sep=".") + {'a.1': 1, 'a.2': 2, 'a.3': 3, 'b.1': 4, 'b.2': 5, 'b.3': 6} + + :param dictionary: dictionary to flatten + :param sep: separator to use when combining keys + :return: flattened dictionary + :rtype: dict + """ + items = [] + lsts = 0 + for key, val in dictionary.items(): + if isinstance(val, list): + for i in range(len(val)): + lsts += 1 + new_key = key + sep + str(i) + items.append((new_key, val[i])) + else: + items.append((key, val)) + + return dict(items) if lsts == 0 else flatten_lists_in_dict(dict(items), sep=sep) + + +def transform_function(dict_list, transform): + """ + Applies a function to each dictionary in a list of dictionaries + + Example: + [{'a': 1}, {'a': 2}, {'a': 3}] + transform_function(dict_list, lambda x: x + 1) + [{'a': 2}, {'a': 3}, {'a': 4}] + + :param dict_list: list of dictionaries + :param transform: transformation function + :return: transformed dictionary list + :rtype: list of dict + """ + new_dict_list = [transform(dictionary) for dictionary in dict_list] + return new_dict_list + + +def unwind_field(list_of_dict, field): + """ + Unwinds lists inside dicts into multiple dictionaries, returning a new list at the end + + Example: + [{'a': [1, 2, 3]}, {'a': [4, 5, 6]}] + unwind_field(list_of_dict, 'a') + [{'a': 1}, {'a': 2}, {'a': 3}, {'a': 4}, {'a': 5}, {'a': 6}] + + :param list_of_dict: list of dictionaries + :param field: field to unwind + :return: list of dictionaries + :rtype: list of dict + """ + new_list = [] + for dictionary in list_of_dict: + found = False + for key, value in dictionary.items(): + if key == field and isinstance(value, list): + found = True + for item in value: + temp_dict = dictionary.copy() + temp_dict[key] = item + new_list.append(temp_dict) + + if not found: + new_list.append(dictionary) + return new_list + + +def generate_csv_from_list(dict_list, **kwargs): + """ + Given a list of dictionaries, generate a csv string without spaces + + :param dict_list: list of dictionaries + :param options: options to specify csv format + :return: csv string + :rtype: str + """ + if kwargs.get("transform", None): + dict_list = transform_function(dict_list, kwargs["transform"]) + + if kwargs.get("flatten_lists", None) and kwargs.get("flatten_objects", None): + dict_list = [flatten_lists_in_dict(flatten_dicts(dict)) for dict in dict_list] + + if kwargs.get("flatten_objects", None): + dict_list = [flatten_dicts(dict) for dict in dict_list] + + if kwargs.get("unwind", None): + dict_list = unwind_field(dict_list, kwargs["unwind"]) + + if kwargs.get("flatten_lists", None): + dict_list = [flatten_lists_in_dict(dict) for dict in dict_list] + + output = io.StringIO() + field_names = ( + {key: None for d in dict_list for key in d.keys()}.keys() + if not kwargs.get("field", None) + else kwargs["field"] + ) + writer = csv.DictWriter(output, fieldnames=field_names) + + if kwargs.get("header", None): + writer.writeheader() + + writer.writerows(dict_list) + + return output.getvalue() diff --git a/backend/app/utilities/firebase_rest_client.py b/backend/app/utilities/firebase_rest_client.py new file mode 100644 index 0000000..7c96404 --- /dev/null +++ b/backend/app/utilities/firebase_rest_client.py @@ -0,0 +1,147 @@ +import os +import requests + +from ..resources.token import Token + +FIREBASE_SIGN_IN_URL = ( + "https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword" +) +FIREBASE_REFRESH_TOKEN_URL = "https://securetoken.googleapis.com/v1/token" +FIREBASE_OAUTH_SIGN_IN_URL = ( + "https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp" +) + + +class FirebaseRestClient: + def __init__(self, logger): + """ + Create an instance of FirebaseRestClient + + :param logger: the application's logger instance + :type logger: logger + """ + self.logger = logger + + # docs: https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-email-password + def sign_in_with_password(self, email, password): + """ + Sign-in to Firebase using a email and password + + :param email: user's email + :type email: str + :param password: user's password + :type password: str + :return: access and refresh tokens + :rtype: Token + :raises Exception: if Firebase API call fails + """ + headers = {"Content-Type": "application/json"} + data = {"email": email, "password": password, "returnSecureToken": "true"} + + # IMPORTANT: must convert data to string as otherwise the payload will get URL-encoded + # e.g. "@" in the email address will get converted to "%40" which is incorrect + response = requests.post( + "{base_url}?key={api_key}".format( + base_url=FIREBASE_SIGN_IN_URL, api_key=os.getenv("FIREBASE_WEB_API_KEY") + ), + headers=headers, + data=str(data), + ) + + response_json = response.json() + + if response.status_code != 200: + error_message = [ + "Failed to sign-in via Firebase REST API, status code =", + str(response.status_code), + "error message =", + response_json["error"]["message"], + ] + self.logger.error(" ".join(error_message)) + + raise Exception("Failed to sign-in via Firebase REST API") + + return Token(response_json["idToken"], response_json["refreshToken"]) + + # docs: https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-with-oauth-credential + def sign_in_with_google(self, id_token): + """ + Obtain user's personal info, access token, and refresh token from Google OAuth. + + :param id_token: Google issued id token from frontend sign in + :type id_token: str + :return: access token, refresh token, and user's personal info + :rtype: dict + :raises Exception: if Firebase API call fails + """ + + headers = {"Content-Type": "application/json"} + data = { + "postBody": f"id_token={id_token}&providerId=google.com", + "requestUri": os.getenv("FIREBASE_REQUEST_URI"), + "returnIdpCredential": "true", + "returnSecureToken": "true", + } + + response = requests.post( + "{base_url}?key={api_key}".format( + base_url=FIREBASE_OAUTH_SIGN_IN_URL, + api_key=os.getenv("FIREBASE_WEB_API_KEY"), + ), + headers=headers, + data=str(data), + ) + + response_json = response.json() + + if response.status_code != 200: + error_message = [ + "Failed to sign-in via Firebase REST API with OAuth, status code =", + str(response.status_code), + "error message =", + response_json["error"]["message"], + ] + self.logger.error(" ".join(error_message)) + + raise Exception("Failed to sign-in via Firebase REST API with OAuth") + return response_json + + # docs: https://firebase.google.com/docs/reference/rest/auth/#section-refresh-token + def refresh_token(self, ref_token): + """ + Refresh a user's access and refresh tokens + + :param ref_token: user's current refresh token + :type ref_token: str + :return: access and refresh tokens + :rtype: Token + :raises Exception: if Firebase API call fails + """ + headers = {"Content-Type": "application/x-www-form-urlencoded"} + data = "grant_type=refresh_token&refresh_token={refresh_token}".format( + refresh_token=ref_token + ) + + response = requests.post( + "{base_url}?key={api_key}".format( + base_url=FIREBASE_REFRESH_TOKEN_URL, + api_key=os.getenv("FIREBASE_WEB_API_KEY"), + ), + headers=headers, + data=data, + ) + + response_json = response.json() + + if response.status_code != 200: + error_message = [ + "Failed to refresh token via Firebase REST API, status code =", + str(response.status_code), + "error message =", + response_json["error"]["message"], + ] + self.logger.error(" ".join(error_message)) + + raise Exception("Failed to refresh token via Firebase REST API") + + return Token(response_json["id_token"], response_json["refresh_token"]) diff --git a/backend/migrations/README b/backend/migrations/README new file mode 100644 index 0000000..98e4f9c --- /dev/null +++ b/backend/migrations/README @@ -0,0 +1 @@ +Generic single-database configuration. \ No newline at end of file diff --git a/backend/migrations/env.py b/backend/migrations/env.py new file mode 100644 index 0000000..36112a3 --- /dev/null +++ b/backend/migrations/env.py @@ -0,0 +1,78 @@ +from logging.config import fileConfig + +from sqlalchemy import engine_from_config +from sqlalchemy import pool + +from alembic import context + +# this is the Alembic Config object, which provides +# access to the values within the .ini file in use. +config = context.config + +# Interpret the config file for Python logging. +# This line sets up loggers basically. +if config.config_file_name is not None: + fileConfig(config.config_file_name) + +# add your model's MetaData object here +# for 'autogenerate' support +# from myapp import mymodel +# target_metadata = mymodel.Base.metadata +target_metadata = None + +# other values from the config, defined by the needs of env.py, +# can be acquired: +# my_important_option = config.get_main_option("my_important_option") +# ... etc. + + +def run_migrations_offline() -> None: + """Run migrations in 'offline' mode. + + This configures the context with just a URL + and not an Engine, though an Engine is acceptable + here as well. By skipping the Engine creation + we don't even need a DBAPI to be available. + + Calls to context.execute() here emit the given string to the + script output. + + """ + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, + target_metadata=target_metadata, + literal_binds=True, + dialect_opts={"paramstyle": "named"}, + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online() -> None: + """Run migrations in 'online' mode. + + In this scenario we need to create an Engine + and associate a connection with the context. + + """ + connectable = engine_from_config( + config.get_section(config.config_ini_section, {}), + prefix="sqlalchemy.", + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, target_metadata=target_metadata + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/backend/migrations/script.py.mako b/backend/migrations/script.py.mako new file mode 100644 index 0000000..fbc4b07 --- /dev/null +++ b/backend/migrations/script.py.mako @@ -0,0 +1,26 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision: str = ${repr(up_revision)} +down_revision: Union[str, None] = ${repr(down_revision)} +branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)} +depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)} + + +def upgrade() -> None: + ${upgrades if upgrades else "pass"} + + +def downgrade() -> None: + ${downgrades if downgrades else "pass"} diff --git a/backend/pdm.lock b/backend/pdm.lock new file mode 100644 index 0000000..8060413 --- /dev/null +++ b/backend/pdm.lock @@ -0,0 +1,1324 @@ +# This file is @generated by PDM. +# It is not intended for manual editing. + +[metadata] +groups = ["default"] +strategy = ["inherit_metadata"] +lock_version = "4.5.0" +content_hash = "sha256:2c6832080dcc206f03ea5f1d2a28462446baa6af5ec7721ed9b6d06b0809e1f4" + +[[metadata.targets]] +requires_python = "==3.12.*" + +[[package]] +name = "alembic" +version = "1.13.3" +requires_python = ">=3.8" +summary = "A database migration tool for SQLAlchemy." +groups = ["default"] +dependencies = [ + "Mako", + "SQLAlchemy>=1.3.0", + "importlib-metadata; python_version < \"3.9\"", + "importlib-resources; python_version < \"3.9\"", + "typing-extensions>=4", +] +files = [ + {file = "alembic-1.13.3-py3-none-any.whl", hash = "sha256:908e905976d15235fae59c9ac42c4c5b75cfcefe3d27c0fbf7ae15a37715d80e"}, + {file = "alembic-1.13.3.tar.gz", hash = "sha256:203503117415561e203aa14541740643a611f641517f0209fcae63e9fa09f1a2"}, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +requires_python = ">=3.8" +summary = "Reusable constraint types to use with typing.Annotated" +groups = ["default"] +dependencies = [ + "typing-extensions>=4.0.0; python_version < \"3.9\"", +] +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.6.0" +requires_python = ">=3.9" +summary = "High level compatibility layer for multiple asynchronous event loop implementations" +groups = ["default"] +dependencies = [ + "exceptiongroup>=1.0.2; python_version < \"3.11\"", + "idna>=2.8", + "sniffio>=1.1", + "typing-extensions>=4.1; python_version < \"3.11\"", +] +files = [ + {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, + {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, +] + +[[package]] +name = "cachecontrol" +version = "0.14.0" +requires_python = ">=3.7" +summary = "httplib2 caching for requests" +groups = ["default"] +dependencies = [ + "msgpack<2.0.0,>=0.5.2", + "requests>=2.16.0", +] +files = [ + {file = "cachecontrol-0.14.0-py3-none-any.whl", hash = "sha256:f5bf3f0620c38db2e5122c0726bdebb0d16869de966ea6a2befe92470b740ea0"}, + {file = "cachecontrol-0.14.0.tar.gz", hash = "sha256:7db1195b41c81f8274a7bbd97c956f44e8348265a1bc7641c37dfebc39f0c938"}, +] + +[[package]] +name = "cachetools" +version = "5.5.0" +requires_python = ">=3.7" +summary = "Extensible memoizing collections and decorators" +groups = ["default"] +files = [ + {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, + {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, +] + +[[package]] +name = "certifi" +version = "2024.8.30" +requires_python = ">=3.6" +summary = "Python package for providing Mozilla's CA Bundle." +groups = ["default"] +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] + +[[package]] +name = "cffi" +version = "1.17.1" +requires_python = ">=3.8" +summary = "Foreign Function Interface for Python calling C code." +groups = ["default"] +marker = "platform_python_implementation != \"PyPy\"" +dependencies = [ + "pycparser", +] +files = [ + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +requires_python = ">=3.7.0" +summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +groups = ["default"] +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +requires_python = ">=3.7" +summary = "Composable command line interface toolkit" +groups = ["default"] +dependencies = [ + "colorama; platform_system == \"Windows\"", + "importlib-metadata; python_version < \"3.8\"", +] +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +summary = "Cross-platform colored terminal text." +groups = ["default"] +marker = "sys_platform == \"win32\" or platform_system == \"Windows\"" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "cryptography" +version = "43.0.1" +requires_python = ">=3.7" +summary = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +groups = ["default"] +dependencies = [ + "cffi>=1.12; platform_python_implementation != \"PyPy\"", +] +files = [ + {file = "cryptography-43.0.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8385d98f6a3bf8bb2d65a73e17ed87a3ba84f6991c155691c51112075f9ffc5d"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e613d7077ac613e399270253259d9d53872aaf657471473ebfc9a52935c062"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68aaecc4178e90719e95298515979814bda0cbada1256a4485414860bd7ab962"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:de41fd81a41e53267cb020bb3a7212861da53a7d39f863585d13ea11049cf277"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f98bf604c82c416bc829e490c700ca1553eafdf2912a91e23a79d97d9801372a"}, + {file = "cryptography-43.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:61ec41068b7b74268fa86e3e9e12b9f0c21fcf65434571dbb13d954bceb08042"}, + {file = "cryptography-43.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:014f58110f53237ace6a408b5beb6c427b64e084eb451ef25a28308270086494"}, + {file = "cryptography-43.0.1-cp37-abi3-win32.whl", hash = "sha256:2bd51274dcd59f09dd952afb696bf9c61a7a49dfc764c04dd33ef7a6b502a1e2"}, + {file = "cryptography-43.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:666ae11966643886c2987b3b721899d250855718d6d9ce41b521252a17985f4d"}, + {file = "cryptography-43.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac119bb76b9faa00f48128b7f5679e1d8d437365c5d26f1c2c3f0da4ce1b553d"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bbcce1a551e262dfbafb6e6252f1ae36a248e615ca44ba302df077a846a8806"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58d4e9129985185a06d849aa6df265bdd5a74ca6e1b736a77959b498e0505b85"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d03a475165f3134f773d1388aeb19c2d25ba88b6a9733c5c590b9ff7bbfa2e0c"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:511f4273808ab590912a93ddb4e3914dfd8a388fed883361b02dea3791f292e1"}, + {file = "cryptography-43.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:80eda8b3e173f0f247f711eef62be51b599b5d425c429b5d4ca6a05e9e856baa"}, + {file = "cryptography-43.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38926c50cff6f533f8a2dae3d7f19541432610d114a70808f0926d5aaa7121e4"}, + {file = "cryptography-43.0.1-cp39-abi3-win32.whl", hash = "sha256:a575913fb06e05e6b4b814d7f7468c2c660e8bb16d8d5a1faf9b33ccc569dd47"}, + {file = "cryptography-43.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:d75601ad10b059ec832e78823b348bfa1a59f6b8d545db3a24fd44362a1564cb"}, + {file = "cryptography-43.0.1.tar.gz", hash = "sha256:203e92a75716d8cfb491dc47c79e17d0d9207ccffcbcb35f598fbe463ae3444d"}, +] + +[[package]] +name = "dnspython" +version = "2.6.1" +requires_python = ">=3.8" +summary = "DNS toolkit" +groups = ["default"] +files = [ + {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, + {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, +] + +[[package]] +name = "email-validator" +version = "2.2.0" +requires_python = ">=3.8" +summary = "A robust email address syntax and deliverability validation library." +groups = ["default"] +dependencies = [ + "dnspython>=2.0.0", + "idna>=2.0.0", +] +files = [ + {file = "email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631"}, + {file = "email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"}, +] + +[[package]] +name = "fastapi" +version = "0.115.0" +requires_python = ">=3.8" +summary = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +groups = ["default"] +dependencies = [ + "pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4", + "starlette<0.39.0,>=0.37.2", + "typing-extensions>=4.8.0", +] +files = [ + {file = "fastapi-0.115.0-py3-none-any.whl", hash = "sha256:17ea427674467486e997206a5ab25760f6b09e069f099b96f5b55a32fb6f1631"}, + {file = "fastapi-0.115.0.tar.gz", hash = "sha256:f93b4ca3529a8ebc6fc3fcf710e5efa8de3df9b41570958abf1d97d843138004"}, +] + +[[package]] +name = "fastapi-cli" +version = "0.0.5" +requires_python = ">=3.8" +summary = "Run and manage FastAPI apps from the command line with FastAPI CLI. πŸš€" +groups = ["default"] +dependencies = [ + "typer>=0.12.3", + "uvicorn[standard]>=0.15.0", +] +files = [ + {file = "fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46"}, + {file = "fastapi_cli-0.0.5.tar.gz", hash = "sha256:d30e1239c6f46fcb95e606f02cdda59a1e2fa778a54b64686b3ff27f6211ff9f"}, +] + +[[package]] +name = "fastapi-cli" +version = "0.0.5" +extras = ["standard"] +requires_python = ">=3.8" +summary = "Run and manage FastAPI apps from the command line with FastAPI CLI. πŸš€" +groups = ["default"] +dependencies = [ + "fastapi-cli==0.0.5", + "uvicorn[standard]>=0.15.0", +] +files = [ + {file = "fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46"}, + {file = "fastapi_cli-0.0.5.tar.gz", hash = "sha256:d30e1239c6f46fcb95e606f02cdda59a1e2fa778a54b64686b3ff27f6211ff9f"}, +] + +[[package]] +name = "fastapi" +version = "0.115.0" +extras = ["standard"] +requires_python = ">=3.8" +summary = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +groups = ["default"] +dependencies = [ + "email-validator>=2.0.0", + "fastapi-cli[standard]>=0.0.5", + "fastapi==0.115.0", + "httpx>=0.23.0", + "jinja2>=2.11.2", + "python-multipart>=0.0.7", + "uvicorn[standard]>=0.12.0", +] +files = [ + {file = "fastapi-0.115.0-py3-none-any.whl", hash = "sha256:17ea427674467486e997206a5ab25760f6b09e069f099b96f5b55a32fb6f1631"}, + {file = "fastapi-0.115.0.tar.gz", hash = "sha256:f93b4ca3529a8ebc6fc3fcf710e5efa8de3df9b41570958abf1d97d843138004"}, +] + +[[package]] +name = "firebase-admin" +version = "6.5.0" +requires_python = ">=3.7" +summary = "Firebase Admin Python SDK" +groups = ["default"] +dependencies = [ + "cachecontrol>=0.12.6", + "google-api-core[grpc]<3.0.0dev,>=1.22.1; platform_python_implementation != \"PyPy\"", + "google-api-python-client>=1.7.8", + "google-cloud-firestore>=2.9.1; platform_python_implementation != \"PyPy\"", + "google-cloud-storage>=1.37.1", + "pyjwt[crypto]>=2.5.0", +] +files = [ + {file = "firebase_admin-6.5.0-py3-none-any.whl", hash = "sha256:fe34ee3ca0e625c5156b3931ca4b4b69b5fc344dbe51bba9706ff674ce277898"}, + {file = "firebase_admin-6.5.0.tar.gz", hash = "sha256:e716dde1447f0a1cd1523be76ff872df33c4e1a3c079564ace033b2ad60bcc4f"}, +] + +[[package]] +name = "google-api-core" +version = "2.20.0" +requires_python = ">=3.7" +summary = "Google API client core library" +groups = ["default"] +dependencies = [ + "google-auth<3.0.dev0,>=2.14.1", + "googleapis-common-protos<2.0.dev0,>=1.56.2", + "proto-plus<2.0.0dev,>=1.22.3", + "protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0.dev0,>=3.19.5", + "requests<3.0.0.dev0,>=2.18.0", +] +files = [ + {file = "google_api_core-2.20.0-py3-none-any.whl", hash = "sha256:ef0591ef03c30bb83f79b3d0575c3f31219001fc9c5cf37024d08310aeffed8a"}, + {file = "google_api_core-2.20.0.tar.gz", hash = "sha256:f74dff1889ba291a4b76c5079df0711810e2d9da81abfdc99957bc961c1eb28f"}, +] + +[[package]] +name = "google-api-core" +version = "2.20.0" +extras = ["grpc"] +requires_python = ">=3.7" +summary = "Google API client core library" +groups = ["default"] +marker = "platform_python_implementation != \"PyPy\"" +dependencies = [ + "google-api-core==2.20.0", + "grpcio-status<2.0.dev0,>=1.33.2", + "grpcio-status<2.0.dev0,>=1.49.1; python_version >= \"3.11\"", + "grpcio<2.0dev,>=1.33.2", + "grpcio<2.0dev,>=1.49.1; python_version >= \"3.11\"", +] +files = [ + {file = "google_api_core-2.20.0-py3-none-any.whl", hash = "sha256:ef0591ef03c30bb83f79b3d0575c3f31219001fc9c5cf37024d08310aeffed8a"}, + {file = "google_api_core-2.20.0.tar.gz", hash = "sha256:f74dff1889ba291a4b76c5079df0711810e2d9da81abfdc99957bc961c1eb28f"}, +] + +[[package]] +name = "google-api-python-client" +version = "2.146.0" +requires_python = ">=3.7" +summary = "Google API Client Library for Python" +groups = ["default"] +dependencies = [ + "google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0.dev0,>=1.31.5", + "google-auth!=2.24.0,!=2.25.0,<3.0.0.dev0,>=1.32.0", + "google-auth-httplib2<1.0.0,>=0.2.0", + "httplib2<1.dev0,>=0.19.0", + "uritemplate<5,>=3.0.1", +] +files = [ + {file = "google_api_python_client-2.146.0-py2.py3-none-any.whl", hash = "sha256:b1e62c9889c5ef6022f11d30d7ef23dc55100300f0e8aaf8aa09e8e92540acad"}, + {file = "google_api_python_client-2.146.0.tar.gz", hash = "sha256:41f671be10fa077ee5143ee9f0903c14006d39dc644564f4e044ae96b380bf68"}, +] + +[[package]] +name = "google-auth" +version = "2.35.0" +requires_python = ">=3.7" +summary = "Google Authentication Library" +groups = ["default"] +dependencies = [ + "cachetools<6.0,>=2.0.0", + "pyasn1-modules>=0.2.1", + "rsa<5,>=3.1.4", +] +files = [ + {file = "google_auth-2.35.0-py2.py3-none-any.whl", hash = "sha256:25df55f327ef021de8be50bad0dfd4a916ad0de96da86cd05661c9297723ad3f"}, + {file = "google_auth-2.35.0.tar.gz", hash = "sha256:f4c64ed4e01e8e8b646ef34c018f8bf3338df0c8e37d8b3bba40e7f574a3278a"}, +] + +[[package]] +name = "google-auth-httplib2" +version = "0.2.0" +summary = "Google Authentication Library: httplib2 transport" +groups = ["default"] +dependencies = [ + "google-auth", + "httplib2>=0.19.0", +] +files = [ + {file = "google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05"}, + {file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"}, +] + +[[package]] +name = "google-cloud-core" +version = "2.4.1" +requires_python = ">=3.7" +summary = "Google Cloud API client core library" +groups = ["default"] +dependencies = [ + "google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0dev,>=1.31.6", + "google-auth<3.0dev,>=1.25.0", + "importlib-metadata>1.0.0; python_version < \"3.8\"", +] +files = [ + {file = "google-cloud-core-2.4.1.tar.gz", hash = "sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073"}, + {file = "google_cloud_core-2.4.1-py2.py3-none-any.whl", hash = "sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61"}, +] + +[[package]] +name = "google-cloud-firestore" +version = "2.18.0" +requires_python = ">=3.7" +summary = "Google Cloud Firestore API client library" +groups = ["default"] +marker = "platform_python_implementation != \"PyPy\"" +dependencies = [ + "google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0dev,>=1.34.0", + "google-auth!=2.24.0,!=2.25.0,<3.0.0dev,>=2.14.1", + "google-cloud-core<3.0.0dev,>=1.4.1", + "proto-plus<2.0.0dev,>=1.22.0", + "proto-plus<2.0.0dev,>=1.22.2; python_version >= \"3.11\"", + "protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev,>=3.20.2", +] +files = [ + {file = "google_cloud_firestore-2.18.0-py2.py3-none-any.whl", hash = "sha256:9a735860b692f39f93f900dd3390713ceb9b47ea82cda98360bb551f03d2b916"}, + {file = "google_cloud_firestore-2.18.0.tar.gz", hash = "sha256:3db5dd42334b9904d82b3786703a5a4b576810fb50f61b8fa83ecf4f17b7fdae"}, +] + +[[package]] +name = "google-cloud-storage" +version = "2.18.2" +requires_python = ">=3.7" +summary = "Google Cloud Storage API client library" +groups = ["default"] +dependencies = [ + "google-api-core<3.0.0dev,>=2.15.0", + "google-auth<3.0dev,>=2.26.1", + "google-cloud-core<3.0dev,>=2.3.0", + "google-crc32c<2.0dev,>=1.0", + "google-resumable-media>=2.7.2", + "requests<3.0.0dev,>=2.18.0", +] +files = [ + {file = "google_cloud_storage-2.18.2-py2.py3-none-any.whl", hash = "sha256:97a4d45c368b7d401ed48c4fdfe86e1e1cb96401c9e199e419d289e2c0370166"}, + {file = "google_cloud_storage-2.18.2.tar.gz", hash = "sha256:aaf7acd70cdad9f274d29332673fcab98708d0e1f4dceb5a5356aaef06af4d99"}, +] + +[[package]] +name = "google-crc32c" +version = "1.6.0" +requires_python = ">=3.9" +summary = "A python wrapper of the C library 'Google CRC32C'" +groups = ["default"] +dependencies = [ + "importlib-resources>=1.3; python_version < \"3.9\" and os_name == \"nt\"", +] +files = [ + {file = "google_crc32c-1.6.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ed767bf4ba90104c1216b68111613f0d5926fb3780660ea1198fc469af410e9d"}, + {file = "google_crc32c-1.6.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:62f6d4a29fea082ac4a3c9be5e415218255cf11684ac6ef5488eea0c9132689b"}, + {file = "google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c87d98c7c4a69066fd31701c4e10d178a648c2cac3452e62c6b24dc51f9fcc00"}, + {file = "google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd5e7d2445d1a958c266bfa5d04c39932dc54093fa391736dbfdb0f1929c1fb3"}, + {file = "google_crc32c-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:7aec8e88a3583515f9e0957fe4f5f6d8d4997e36d0f61624e70469771584c760"}, + {file = "google_crc32c-1.6.0.tar.gz", hash = "sha256:6eceb6ad197656a1ff49ebfbbfa870678c75be4344feb35ac1edf694309413dc"}, +] + +[[package]] +name = "google-resumable-media" +version = "2.7.2" +requires_python = ">=3.7" +summary = "Utilities for Google Media Downloads and Resumable Uploads" +groups = ["default"] +dependencies = [ + "google-crc32c<2.0dev,>=1.0", +] +files = [ + {file = "google_resumable_media-2.7.2-py2.py3-none-any.whl", hash = "sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa"}, + {file = "google_resumable_media-2.7.2.tar.gz", hash = "sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0"}, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.65.0" +requires_python = ">=3.7" +summary = "Common protobufs used in Google APIs" +groups = ["default"] +dependencies = [ + "protobuf!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0.dev0,>=3.20.2", +] +files = [ + {file = "googleapis_common_protos-1.65.0-py2.py3-none-any.whl", hash = "sha256:2972e6c496f435b92590fd54045060867f3fe9be2c82ab148fc8885035479a63"}, + {file = "googleapis_common_protos-1.65.0.tar.gz", hash = "sha256:334a29d07cddc3aa01dee4988f9afd9b2916ee2ff49d6b757155dc0d197852c0"}, +] + +[[package]] +name = "greenlet" +version = "3.1.1" +requires_python = ">=3.7" +summary = "Lightweight in-process concurrent programming" +groups = ["default"] +marker = "(platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\") and python_version < \"3.13\"" +files = [ + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, +] + +[[package]] +name = "grpcio" +version = "1.66.1" +requires_python = ">=3.8" +summary = "HTTP/2-based RPC framework" +groups = ["default"] +marker = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "grpcio-1.66.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:a92c4f58c01c77205df6ff999faa008540475c39b835277fb8883b11cada127a"}, + {file = "grpcio-1.66.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fdb14bad0835914f325349ed34a51940bc2ad965142eb3090081593c6e347be9"}, + {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f03a5884c56256e08fd9e262e11b5cfacf1af96e2ce78dc095d2c41ccae2c80d"}, + {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ca2559692d8e7e245d456877a85ee41525f3ed425aa97eb7a70fc9a79df91a0"}, + {file = "grpcio-1.66.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ca1be089fb4446490dd1135828bd42a7c7f8421e74fa581611f7afdf7ab761"}, + {file = "grpcio-1.66.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:d639c939ad7c440c7b2819a28d559179a4508783f7e5b991166f8d7a34b52815"}, + {file = "grpcio-1.66.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b9feb4e5ec8dc2d15709f4d5fc367794d69277f5d680baf1910fc9915c633524"}, + {file = "grpcio-1.66.1-cp312-cp312-win32.whl", hash = "sha256:7101db1bd4cd9b880294dec41a93fcdce465bdbb602cd8dc5bd2d6362b618759"}, + {file = "grpcio-1.66.1-cp312-cp312-win_amd64.whl", hash = "sha256:b0aa03d240b5539648d996cc60438f128c7f46050989e35b25f5c18286c86734"}, + {file = "grpcio-1.66.1.tar.gz", hash = "sha256:35334f9c9745add3e357e3372756fd32d925bd52c41da97f4dfdafbde0bf0ee2"}, +] + +[[package]] +name = "grpcio-status" +version = "1.66.1" +requires_python = ">=3.8" +summary = "Status proto mapping for gRPC" +groups = ["default"] +marker = "platform_python_implementation != \"PyPy\"" +dependencies = [ + "googleapis-common-protos>=1.5.5", + "grpcio>=1.66.1", + "protobuf<6.0dev,>=5.26.1", +] +files = [ + {file = "grpcio_status-1.66.1-py3-none-any.whl", hash = "sha256:cf9ed0b4a83adbe9297211c95cb5488b0cd065707e812145b842c85c4782ff02"}, + {file = "grpcio_status-1.66.1.tar.gz", hash = "sha256:b3f7d34ccc46d83fea5261eea3786174459f763c31f6e34f1d24eba6d515d024"}, +] + +[[package]] +name = "h11" +version = "0.14.0" +requires_python = ">=3.7" +summary = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +groups = ["default"] +dependencies = [ + "typing-extensions; python_version < \"3.8\"", +] +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.5" +requires_python = ">=3.8" +summary = "A minimal low-level HTTP client." +groups = ["default"] +dependencies = [ + "certifi", + "h11<0.15,>=0.13", +] +files = [ + {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, + {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, +] + +[[package]] +name = "httplib2" +version = "0.22.0" +requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +summary = "A comprehensive HTTP client library." +groups = ["default"] +dependencies = [ + "pyparsing!=3.0.0,!=3.0.1,!=3.0.2,!=3.0.3,<4,>=2.4.2; python_version > \"3.0\"", + "pyparsing<3,>=2.4.2; python_version < \"3.0\"", +] +files = [ + {file = "httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc"}, + {file = "httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"}, +] + +[[package]] +name = "httptools" +version = "0.6.1" +requires_python = ">=3.8.0" +summary = "A collection of framework independent HTTP protocol utils." +groups = ["default"] +files = [ + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"}, + {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"}, + {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"}, +] + +[[package]] +name = "httpx" +version = "0.27.2" +requires_python = ">=3.8" +summary = "The next generation HTTP client." +groups = ["default"] +dependencies = [ + "anyio", + "certifi", + "httpcore==1.*", + "idna", + "sniffio", +] +files = [ + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, +] + +[[package]] +name = "idna" +version = "3.10" +requires_python = ">=3.6" +summary = "Internationalized Domain Names in Applications (IDNA)" +groups = ["default"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[[package]] +name = "inflection" +version = "0.5.1" +requires_python = ">=3.5" +summary = "A port of Ruby on Rails inflector to Python" +groups = ["default"] +files = [ + {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, + {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +requires_python = ">=3.7" +summary = "brain-dead simple config-ini parsing" +groups = ["default"] +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +requires_python = ">=3.7" +summary = "A very fast and expressive template engine." +groups = ["default"] +dependencies = [ + "MarkupSafe>=2.0", +] +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[[package]] +name = "mako" +version = "1.3.5" +requires_python = ">=3.8" +summary = "A super-fast templating language that borrows the best ideas from the existing templating languages." +groups = ["default"] +dependencies = [ + "MarkupSafe>=0.9.2", +] +files = [ + {file = "Mako-1.3.5-py3-none-any.whl", hash = "sha256:260f1dbc3a519453a9c856dedfe4beb4e50bd5a26d96386cb6c80856556bb91a"}, + {file = "Mako-1.3.5.tar.gz", hash = "sha256:48dbc20568c1d276a2698b36d968fa76161bf127194907ea6fc594fa81f943bc"}, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +requires_python = ">=3.8" +summary = "Python port of markdown-it. Markdown parsing, done right!" +groups = ["default"] +dependencies = [ + "mdurl~=0.1", +] +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[[package]] +name = "markupsafe" +version = "2.1.5" +requires_python = ">=3.7" +summary = "Safely add untrusted strings to HTML/XML markup." +groups = ["default"] +files = [ + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +requires_python = ">=3.7" +summary = "Markdown URL utilities" +groups = ["default"] +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +requires_python = ">=3.8" +summary = "MessagePack serializer" +groups = ["default"] +files = [ + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b"}, + {file = "msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b"}, + {file = "msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f"}, + {file = "msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e"}, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +summary = "Node.js virtual environment builder" +groups = ["default"] +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, +] + +[[package]] +name = "packaging" +version = "24.1" +requires_python = ">=3.8" +summary = "Core utilities for Python packages" +groups = ["default"] +files = [ + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +requires_python = ">=3.8" +summary = "plugin and hook calling mechanisms for python" +groups = ["default"] +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[[package]] +name = "proto-plus" +version = "1.24.0" +requires_python = ">=3.7" +summary = "Beautiful, Pythonic protocol buffers." +groups = ["default"] +dependencies = [ + "protobuf<6.0.0dev,>=3.19.0", +] +files = [ + {file = "proto-plus-1.24.0.tar.gz", hash = "sha256:30b72a5ecafe4406b0d339db35b56c4059064e69227b8c3bda7462397f966445"}, + {file = "proto_plus-1.24.0-py3-none-any.whl", hash = "sha256:402576830425e5f6ce4c2a6702400ac79897dab0b4343821aa5188b0fab81a12"}, +] + +[[package]] +name = "protobuf" +version = "5.28.2" +requires_python = ">=3.8" +summary = "" +groups = ["default"] +files = [ + {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, + {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, + {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, + {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, + {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, + {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, + {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +requires_python = ">=3.8" +summary = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" +groups = ["default"] +files = [ + {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, + {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.1" +requires_python = ">=3.8" +summary = "A collection of ASN.1-based protocols modules" +groups = ["default"] +dependencies = [ + "pyasn1<0.7.0,>=0.4.6", +] +files = [ + {file = "pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd"}, + {file = "pyasn1_modules-0.4.1.tar.gz", hash = "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c"}, +] + +[[package]] +name = "pycparser" +version = "2.22" +requires_python = ">=3.8" +summary = "C parser in Python" +groups = ["default"] +marker = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + +[[package]] +name = "pydantic" +version = "2.9.2" +requires_python = ">=3.8" +summary = "Data validation using Python type hints" +groups = ["default"] +dependencies = [ + "annotated-types>=0.6.0", + "pydantic-core==2.23.4", + "typing-extensions>=4.12.2; python_version >= \"3.13\"", + "typing-extensions>=4.6.1; python_version < \"3.13\"", +] +files = [ + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, +] + +[[package]] +name = "pydantic-core" +version = "2.23.4" +requires_python = ">=3.8" +summary = "Core functionality for Pydantic validation and serialization" +groups = ["default"] +dependencies = [ + "typing-extensions!=4.7.0,>=4.6.0", +] +files = [ + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, +] + +[[package]] +name = "pygments" +version = "2.18.0" +requires_python = ">=3.8" +summary = "Pygments is a syntax highlighting package written in Python." +groups = ["default"] +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[[package]] +name = "pyjwt" +version = "2.9.0" +requires_python = ">=3.8" +summary = "JSON Web Token implementation in Python" +groups = ["default"] +files = [ + {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, + {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, +] + +[[package]] +name = "pyjwt" +version = "2.9.0" +extras = ["crypto"] +requires_python = ">=3.8" +summary = "JSON Web Token implementation in Python" +groups = ["default"] +dependencies = [ + "cryptography>=3.4.0", + "pyjwt==2.9.0", +] +files = [ + {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, + {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, +] + +[[package]] +name = "pyparsing" +version = "3.1.4" +requires_python = ">=3.6.8" +summary = "pyparsing module - Classes and methods to define and execute parsing grammars" +groups = ["default"] +marker = "python_version > \"3.0\"" +files = [ + {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, + {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, +] + +[[package]] +name = "pyright" +version = "1.1.381" +requires_python = ">=3.7" +summary = "Command line wrapper for pyright" +groups = ["default"] +dependencies = [ + "nodeenv>=1.6.0", + "typing-extensions>=3.7; python_version < \"3.8\"", +] +files = [ + {file = "pyright-1.1.381-py3-none-any.whl", hash = "sha256:5dc0aa80a265675d36abab59c674ae01dbe476714f91845b61b841d34aa99081"}, + {file = "pyright-1.1.381.tar.gz", hash = "sha256:314cf0c1351c189524fb10c7ac20688ecd470e8cc505c394d642c9c80bf7c3a5"}, +] + +[[package]] +name = "pytest" +version = "8.3.3" +requires_python = ">=3.8" +summary = "pytest: simple powerful testing with Python" +groups = ["default"] +dependencies = [ + "colorama; sys_platform == \"win32\"", + "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", + "iniconfig", + "packaging", + "pluggy<2,>=1.5", + "tomli>=1; python_version < \"3.11\"", +] +files = [ + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, +] + +[[package]] +name = "python-dotenv" +version = "1.0.1" +requires_python = ">=3.8" +summary = "Read key-value pairs from a .env file and set them as environment variables" +groups = ["default"] +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[[package]] +name = "python-multipart" +version = "0.0.10" +requires_python = ">=3.8" +summary = "A streaming multipart parser for Python" +groups = ["default"] +files = [ + {file = "python_multipart-0.0.10-py3-none-any.whl", hash = "sha256:2b06ad9e8d50c7a8db80e3b56dab590137b323410605af2be20d62a5f1ba1dc8"}, + {file = "python_multipart-0.0.10.tar.gz", hash = "sha256:46eb3c6ce6fdda5fb1a03c7e11d490e407c6930a2703fe7aef4da71c374688fa"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +requires_python = ">=3.8" +summary = "YAML parser and emitter for Python" +groups = ["default"] +files = [ + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "requests" +version = "2.32.3" +requires_python = ">=3.8" +summary = "Python HTTP for Humans." +groups = ["default"] +dependencies = [ + "certifi>=2017.4.17", + "charset-normalizer<4,>=2", + "idna<4,>=2.5", + "urllib3<3,>=1.21.1", +] +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[[package]] +name = "rich" +version = "13.8.1" +requires_python = ">=3.7.0" +summary = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +groups = ["default"] +dependencies = [ + "markdown-it-py>=2.2.0", + "pygments<3.0.0,>=2.13.0", + "typing-extensions<5.0,>=4.0.0; python_version < \"3.9\"", +] +files = [ + {file = "rich-13.8.1-py3-none-any.whl", hash = "sha256:1760a3c0848469b97b558fc61c85233e3dafb69c7a071b4d60c38099d3cd4c06"}, + {file = "rich-13.8.1.tar.gz", hash = "sha256:8260cda28e3db6bf04d2d1ef4dbc03ba80a824c88b0e7668a0f23126a424844a"}, +] + +[[package]] +name = "rsa" +version = "4.9" +requires_python = ">=3.6,<4" +summary = "Pure-Python RSA implementation" +groups = ["default"] +dependencies = [ + "pyasn1>=0.1.3", +] +files = [ + {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, + {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, +] + +[[package]] +name = "ruff" +version = "0.6.7" +requires_python = ">=3.7" +summary = "An extremely fast Python linter and code formatter, written in Rust." +groups = ["default"] +files = [ + {file = "ruff-0.6.7-py3-none-linux_armv6l.whl", hash = "sha256:08277b217534bfdcc2e1377f7f933e1c7957453e8a79764d004e44c40db923f2"}, + {file = "ruff-0.6.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c6707a32e03b791f4448dc0dce24b636cbcdee4dd5607adc24e5ee73fd86c00a"}, + {file = "ruff-0.6.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:533d66b7774ef224e7cf91506a7dafcc9e8ec7c059263ec46629e54e7b1f90ab"}, + {file = "ruff-0.6.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17a86aac6f915932d259f7bec79173e356165518859f94649d8c50b81ff087e9"}, + {file = "ruff-0.6.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3f8822defd260ae2460ea3832b24d37d203c3577f48b055590a426a722d50ef"}, + {file = "ruff-0.6.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ba4efe5c6dbbb58be58dd83feedb83b5e95c00091bf09987b4baf510fee5c99"}, + {file = "ruff-0.6.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:525201b77f94d2b54868f0cbe5edc018e64c22563da6c5c2e5c107a4e85c1c0d"}, + {file = "ruff-0.6.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8854450839f339e1049fdbe15d875384242b8e85d5c6947bb2faad33c651020b"}, + {file = "ruff-0.6.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f0b62056246234d59cbf2ea66e84812dc9ec4540518e37553513392c171cb18"}, + {file = "ruff-0.6.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b1462fa56c832dc0cea5b4041cfc9c97813505d11cce74ebc6d1aae068de36b"}, + {file = "ruff-0.6.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:02b083770e4cdb1495ed313f5694c62808e71764ec6ee5db84eedd82fd32d8f5"}, + {file = "ruff-0.6.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0c05fd37013de36dfa883a3854fae57b3113aaa8abf5dea79202675991d48624"}, + {file = "ruff-0.6.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f49c9caa28d9bbfac4a637ae10327b3db00f47d038f3fbb2195c4d682e925b14"}, + {file = "ruff-0.6.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a0e1655868164e114ba43a908fd2d64a271a23660195017c17691fb6355d59bb"}, + {file = "ruff-0.6.7-py3-none-win32.whl", hash = "sha256:a939ca435b49f6966a7dd64b765c9df16f1faed0ca3b6f16acdf7731969deb35"}, + {file = "ruff-0.6.7-py3-none-win_amd64.whl", hash = "sha256:590445eec5653f36248584579c06252ad2e110a5d1f32db5420de35fb0e1c977"}, + {file = "ruff-0.6.7-py3-none-win_arm64.whl", hash = "sha256:b28f0d5e2f771c1fe3c7a45d3f53916fc74a480698c4b5731f0bea61e52137c8"}, + {file = "ruff-0.6.7.tar.gz", hash = "sha256:44e52129d82266fa59b587e2cd74def5637b730a69c4542525dfdecfaae38bd5"}, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +requires_python = ">=3.7" +summary = "Tool to Detect Surrounding Shell" +groups = ["default"] +files = [ + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +requires_python = ">=3.7" +summary = "Sniff out which async library your code is running under" +groups = ["default"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.35" +requires_python = ">=3.7" +summary = "Database Abstraction Library" +groups = ["default"] +dependencies = [ + "greenlet!=0.4.17; (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\") and python_version < \"3.13\"", + "importlib-metadata; python_version < \"3.8\"", + "typing-extensions>=4.6.0", +] +files = [ + {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf"}, + {file = "SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc"}, + {file = "SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1"}, + {file = "sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f"}, +] + +[[package]] +name = "starlette" +version = "0.38.6" +requires_python = ">=3.8" +summary = "The little ASGI library that shines." +groups = ["default"] +dependencies = [ + "anyio<5,>=3.4.0", + "typing-extensions>=3.10.0; python_version < \"3.10\"", +] +files = [ + {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"}, + {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"}, +] + +[[package]] +name = "typer" +version = "0.12.5" +requires_python = ">=3.7" +summary = "Typer, build great CLIs. Easy to code. Based on Python type hints." +groups = ["default"] +dependencies = [ + "click>=8.0.0", + "rich>=10.11.0", + "shellingham>=1.3.0", + "typing-extensions>=3.7.4.3", +] +files = [ + {file = "typer-0.12.5-py3-none-any.whl", hash = "sha256:62fe4e471711b147e3365034133904df3e235698399bc4de2b36c8579298d52b"}, + {file = "typer-0.12.5.tar.gz", hash = "sha256:f592f089bedcc8ec1b974125d64851029c3b1af145f04aca64d69410f0c9b722"}, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +requires_python = ">=3.8" +summary = "Backported and Experimental Type Hints for Python 3.8+" +groups = ["default"] +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "uritemplate" +version = "4.1.1" +requires_python = ">=3.6" +summary = "Implementation of RFC 6570 URI Templates" +groups = ["default"] +files = [ + {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, + {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +requires_python = ">=3.8" +summary = "HTTP library with thread-safe connection pooling, file post, and more." +groups = ["default"] +files = [ + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] + +[[package]] +name = "uvicorn" +version = "0.30.6" +requires_python = ">=3.8" +summary = "The lightning-fast ASGI server." +groups = ["default"] +dependencies = [ + "click>=7.0", + "h11>=0.8", + "typing-extensions>=4.0; python_version < \"3.11\"", +] +files = [ + {file = "uvicorn-0.30.6-py3-none-any.whl", hash = "sha256:65fd46fe3fda5bdc1b03b94eb634923ff18cd35b2f084813ea79d1f103f711b5"}, + {file = "uvicorn-0.30.6.tar.gz", hash = "sha256:4b15decdda1e72be08209e860a1e10e92439ad5b97cf44cc945fcbee66fc5788"}, +] + +[[package]] +name = "uvicorn" +version = "0.30.6" +extras = ["standard"] +requires_python = ">=3.8" +summary = "The lightning-fast ASGI server." +groups = ["default"] +dependencies = [ + "colorama>=0.4; sys_platform == \"win32\"", + "httptools>=0.5.0", + "python-dotenv>=0.13", + "pyyaml>=5.1", + "uvicorn==0.30.6", + "uvloop!=0.15.0,!=0.15.1,>=0.14.0; (sys_platform != \"cygwin\" and sys_platform != \"win32\") and platform_python_implementation != \"PyPy\"", + "watchfiles>=0.13", + "websockets>=10.4", +] +files = [ + {file = "uvicorn-0.30.6-py3-none-any.whl", hash = "sha256:65fd46fe3fda5bdc1b03b94eb634923ff18cd35b2f084813ea79d1f103f711b5"}, + {file = "uvicorn-0.30.6.tar.gz", hash = "sha256:4b15decdda1e72be08209e860a1e10e92439ad5b97cf44cc945fcbee66fc5788"}, +] + +[[package]] +name = "uvloop" +version = "0.20.0" +requires_python = ">=3.8.0" +summary = "Fast implementation of asyncio event loop on top of libuv" +groups = ["default"] +marker = "(sys_platform != \"cygwin\" and sys_platform != \"win32\") and platform_python_implementation != \"PyPy\"" +files = [ + {file = "uvloop-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4b75f2950ddb6feed85336412b9a0c310a2edbcf4cf931aa5cfe29034829676d"}, + {file = "uvloop-0.20.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:77fbc69c287596880ecec2d4c7a62346bef08b6209749bf6ce8c22bbaca0239e"}, + {file = "uvloop-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6462c95f48e2d8d4c993a2950cd3d31ab061864d1c226bbf0ee2f1a8f36674b9"}, + {file = "uvloop-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:649c33034979273fa71aa25d0fe120ad1777c551d8c4cd2c0c9851d88fcb13ab"}, + {file = "uvloop-0.20.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a609780e942d43a275a617c0839d85f95c334bad29c4c0918252085113285b5"}, + {file = "uvloop-0.20.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aea15c78e0d9ad6555ed201344ae36db5c63d428818b4b2a42842b3870127c00"}, + {file = "uvloop-0.20.0.tar.gz", hash = "sha256:4603ca714a754fc8d9b197e325db25b2ea045385e8a3ad05d3463de725fdf469"}, +] + +[[package]] +name = "watchfiles" +version = "0.24.0" +requires_python = ">=3.8" +summary = "Simple, modern and high performance file watching and code reload in python." +groups = ["default"] +dependencies = [ + "anyio>=3.0.0", +] +files = [ + {file = "watchfiles-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7211b463695d1e995ca3feb38b69227e46dbd03947172585ecb0588f19b0d87a"}, + {file = "watchfiles-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b8693502d1967b00f2fb82fc1e744df128ba22f530e15b763c8d82baee15370"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdab9555053399318b953a1fe1f586e945bc8d635ce9d05e617fd9fe3a4687d6"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:34e19e56d68b0dad5cff62273107cf5d9fbaf9d75c46277aa5d803b3ef8a9e9b"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41face41f036fee09eba33a5b53a73e9a43d5cb2c53dad8e61fa6c9f91b5a51e"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5148c2f1ea043db13ce9b0c28456e18ecc8f14f41325aa624314095b6aa2e9ea"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e4bd963a935aaf40b625c2499f3f4f6bbd0c3776f6d3bc7c853d04824ff1c9f"}, + {file = "watchfiles-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c79d7719d027b7a42817c5d96461a99b6a49979c143839fc37aa5748c322f234"}, + {file = "watchfiles-0.24.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:32aa53a9a63b7f01ed32e316e354e81e9da0e6267435c7243bf8ae0f10b428ef"}, + {file = "watchfiles-0.24.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce72dba6a20e39a0c628258b5c308779b8697f7676c254a845715e2a1039b968"}, + {file = "watchfiles-0.24.0-cp312-none-win32.whl", hash = "sha256:d9018153cf57fc302a2a34cb7564870b859ed9a732d16b41a9b5cb2ebed2d444"}, + {file = "watchfiles-0.24.0-cp312-none-win_amd64.whl", hash = "sha256:551ec3ee2a3ac9cbcf48a4ec76e42c2ef938a7e905a35b42a1267fa4b1645896"}, + {file = "watchfiles-0.24.0-cp312-none-win_arm64.whl", hash = "sha256:b52a65e4ea43c6d149c5f8ddb0bef8d4a1e779b77591a458a893eb416624a418"}, + {file = "watchfiles-0.24.0.tar.gz", hash = "sha256:afb72325b74fa7a428c009c1b8be4b4d7c2afedafb2982827ef2156646df2fe1"}, +] + +[[package]] +name = "websockets" +version = "13.1" +requires_python = ">=3.8" +summary = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +groups = ["default"] +files = [ + {file = "websockets-13.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d75baf00138f80b48f1eac72ad1535aac0b6461265a0bcad391fc5aba875cfc"}, + {file = "websockets-13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9b6f347deb3dcfbfde1c20baa21c2ac0751afaa73e64e5b693bb2b848efeaa49"}, + {file = "websockets-13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de58647e3f9c42f13f90ac7e5f58900c80a39019848c5547bc691693098ae1bd"}, + {file = "websockets-13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1b54689e38d1279a51d11e3467dd2f3a50f5f2e879012ce8f2d6943f00e83f0"}, + {file = "websockets-13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf1781ef73c073e6b0f90af841aaf98501f975d306bbf6221683dd594ccc52b6"}, + {file = "websockets-13.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d23b88b9388ed85c6faf0e74d8dec4f4d3baf3ecf20a65a47b836d56260d4b9"}, + {file = "websockets-13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3c78383585f47ccb0fcf186dcb8a43f5438bd7d8f47d69e0b56f71bf431a0a68"}, + {file = "websockets-13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d6d300f8ec35c24025ceb9b9019ae9040c1ab2f01cddc2bcc0b518af31c75c14"}, + {file = "websockets-13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a9dcaf8b0cc72a392760bb8755922c03e17a5a54e08cca58e8b74f6902b433cf"}, + {file = "websockets-13.1-cp312-cp312-win32.whl", hash = "sha256:2f85cf4f2a1ba8f602298a853cec8526c2ca42a9a4b947ec236eaedb8f2dc80c"}, + {file = "websockets-13.1-cp312-cp312-win_amd64.whl", hash = "sha256:38377f8b0cdeee97c552d20cf1865695fcd56aba155ad1b4ca8779a5b6ef4ac3"}, + {file = "websockets-13.1-py3-none-any.whl", hash = "sha256:a9a396a6ad26130cdae92ae10c36af09d9bfe6cafe69670fd3b6da9b07b4044f"}, + {file = "websockets-13.1.tar.gz", hash = "sha256:a3b3366087c1bc0a2795111edcadddb8b3b59509d5db5d7ea3fdd69f954a8878"}, +] diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 0000000..0f306ca --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,28 @@ +[project] +name = "llsc-backend" +version = "0.1.0" +description = "Default template for PDM package" +authors = [ + {name = "uwblueprint", email = "matthewwang@uwblueprint.org"}, +] +dependencies = [ + "fastapi[standard]>=0.115.0", + "sqlalchemy>=2.0.35", + "alembic>=1.13.3", + "ruff>=0.6.7", + "pyright>=1.1.381", + "python-dotenv>=1.0.1", + "firebase-admin>=6.5.0", + "pytest>=8.3.3", + "inflection>=0.5.1", +] +requires-python = "==3.12.*" +readme = "README.md" +license = {text = "MIT"} + + +[tool.pdm] +distribution = false + +[tool.pdm.scripts] +dev = "fastapi dev app/server.py" diff --git a/backend/tests/__init__.py b/backend/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/tests/functional/conftest.py b/backend/tests/functional/conftest.py new file mode 100644 index 0000000..0f046ad --- /dev/null +++ b/backend/tests/functional/conftest.py @@ -0,0 +1,9 @@ +import pytest + +from app import create_app + + +@pytest.fixture(scope="session", autouse=True) +def client(): + test_client = create_app("testing").test_client() + yield test_client diff --git a/backend/tests/functional/test_user_routes.py b/backend/tests/functional/test_user_routes.py new file mode 100644 index 0000000..3a80787 --- /dev/null +++ b/backend/tests/functional/test_user_routes.py @@ -0,0 +1,69 @@ +import pytest + +from app import create_app + +from app.models import db + +""" +Sample python test. +For more information on pytest, visit: +https://docs.pytest.org/en/6.2.x/reference.html +""" + + +TEST_USERS = [ + { + "auth_id": "A", + "first_name": "Jane", + "last_name": "Doe", + "role": "Admin", + }, + { + "auth_id": "B", + "first_name": "Hello", + "last_name": "World", + "role": "User", + }, +] + + +class FirebaseUser: + """ + Mock returned firebase user + """ + + def __init__(self): + self.email = "test@test.com" + + +def get_expected_user(user): + """ + Remove auth_id field from user and sets email field. + """ + user["email"] = "test@test.com" + user.pop("auth_id", None) + return user + + +def insert_users(): + user_instances = [User(**data) for data in TEST_USERS] + db.session.bulk_save_objects(user_instances) + db.session.commit() + + +@pytest.fixture(scope="module", autouse=True) +def setup(module_mocker): + module_mocker.patch( + "app.services.implementations.auth_service.AuthService.is_authorized_by_role", + return_value=True, + ) + module_mocker.patch("firebase_admin.auth.get_user", return_value=FirebaseUser()) + + +def test_get_users(client): + insert_users() + res = client.get("/users") + users_with_email = list(map(get_expected_user, TEST_USERS)) + for expected_user, actual_user in zip(users_with_email, res.json): + for key in users_with_email[0].keys(): + assert expected_user[key] == actual_user[key] diff --git a/backend/tests/functional/test_user_service.py b/backend/tests/functional/test_user_service.py new file mode 100644 index 0000000..563e4b0 --- /dev/null +++ b/backend/tests/functional/test_user_service.py @@ -0,0 +1,84 @@ +from flask import current_app +import pytest + +from app.models.user import User +from app.services.implementations.user_service import UserService + +from app.models import db + +""" +Sample python test. +For more information on pytest, visit: +https://docs.pytest.org/en/6.2.x/reference.html +""" + + +@pytest.fixture(scope="module", autouse=True) +def setup(module_mocker): + module_mocker.patch( + "app.services.implementations.auth_service.AuthService.is_authorized_by_role", + return_value=True, + ) + module_mocker.patch("firebase_admin.auth.get_user", return_value=FirebaseUser()) + + +@pytest.fixture +def user_service(): + user_service = UserService(current_app.logger) + yield user_service + User.query.delete() + + +TEST_USERS = ( + { + "auth_id": "A", + "first_name": "Jane", + "last_name": "Doe", + "role": "Admin", + }, + { + "auth_id": "B", + "first_name": "Hello", + "last_name": "World", + "role": "User", + }, +) + + +class FirebaseUser: + """ + Mock returned firebase user + """ + + def __init__(self): + self.email = "test@test.com" + + +def get_expected_user(user): + """ + Remove auth_id field from user and sets email field. + """ + expected_user = user.copy() + expected_user["email"] = "test@test.com" + expected_user.pop("auth_id", None) + return expected_user + + +def insert_users(): + user_instances = [User(**data) for data in TEST_USERS] + db.session.bulk_save_objects(user_instances) + db.session.commit() + + +def assert_returned_users(users, expected): + for expected_user, actual_user in zip(expected, users): + for key in expected[0].keys(): + assert expected_user[key] == actual_user[key] + + +def test_get_users(user_service): + insert_users() + res = user_service.get_users() + users = list(map(lambda user: user.__dict__, res)) + users_with_email = list(map(get_expected_user, TEST_USERS)) + assert_returned_users(users, users_with_email) diff --git a/backend/tests/unit/test_csv.py b/backend/tests/unit/test_csv.py new file mode 100644 index 0000000..36ed049 --- /dev/null +++ b/backend/tests/unit/test_csv.py @@ -0,0 +1,155 @@ +""" +Test Cases for generate_csv + +Current Issues: +1. Note that unwind only unwinds at the current level +2. List of dictionaries must be of the same type +""" + +person = [ + { + "name": "Person1", + "age": 20, + "pets": [ + {"name": "Beans", "type": "Cat"}, + {"name": "Spot", "type": "Dog"}, + ], + }, + { + "name": "Person2", + "age": 25, + "pets": [{"name": "Splash", "type": "Fish"}], + }, +] + +person2 = [ + { + "name": "Person1", + "age": 20, + "pets": [ + {"name": "Beans", "type": "Cat"}, + {"name": "Spot", "type": "Dog"}, + ], + }, +] + +person3 = [ + { + "name": "Person1", + "age": 20, + "pets": [ + {"name": "Beans", "type": "Cat"}, + {"name": "Spot", "type": "Dog"}, + ], + "num_pets": 5, + }, +] + +person4 = [ + { + "name": "Person1", + "age": 20, + "pet": {"name": "Beans", "type": "Cat"}, + }, +] + + +def transform_person(person): + transformed = person.copy() + transformed["num_pets"] = len(transformed["pets"]) + return transformed + + +options = { + "header": True, + "transform": transform_person, + "flatten_lists": False, + "flatten_objects": False, +} + +unwind_options = { + "header": True, + "unwind": "pets", + "flatten_lists": False, + "flatten_objects": False, +} + + +flatten_list_options = { + "header": True, + "flatten_lists": True, + "flatten_objects": False, +} + + +flatten_objects_options = { + "header": True, + "flatten_lists": False, + "flatten_objects": True, +} + + +flatten_both_options = { + "header": True, + "flatten_lists": True, + "flatten_objects": True, +} + + +no_header_options = { + "header": False, + "flatten_lists": False, + "flatten_objects": False, +} + +from app.utilities.csv_utils import generate_csv_from_list + + +def test_basic(): + result = generate_csv_from_list(person) + assert ( + result + == "Person1,20,\"[{'name': 'Beans', 'type': 'Cat'}, {'name': 'Spot', 'type': 'Dog'}]\"\r\nPerson2,25,\"[{'name': 'Splash', 'type': 'Fish'}]\"\r\n" + ) + + +def test_transform(): + result = generate_csv_from_list(person2, **options) + assert ( + result + == "name,age,pets,num_pets\r\nPerson1,20,\"[{'name': 'Beans', 'type': 'Cat'}, {'name': 'Spot', 'type': 'Dog'}]\",2\r\n" + ) + + +def test_nested(): + result = generate_csv_from_list(person4, **no_header_options) + assert result == "Person1,20,\"{'name': 'Beans', 'type': 'Cat'}\"\r\n" + + +def test_flatten_objects(): + result = generate_csv_from_list(person4, **flatten_objects_options) + assert result == "name,age,pet.name,pet.type\r\nPerson1,20,Beans,Cat\r\n" + + +def test_flatten_lists(): + result = generate_csv_from_list(person2, **flatten_list_options) + assert ( + result + == "name,age,pets.0,pets.1\r\nPerson1,20,\"{'name': 'Beans', 'type': 'Cat'}\",\"{'name': 'Spot', 'type': 'Dog'}\"\r\n" + ) + + +def test_flatten_both(): + result = generate_csv_from_list(person2, **flatten_both_options) + assert ( + result + == "name,age,pets.0.name,pets.0.type,pets.1.name,pets.1.type\r\nPerson1,20,Beans,Cat,Spot,Dog\r\n" + ) + + +def test_unwind(): + result = generate_csv_from_list(person2, **unwind_options) + assert ( + result + == "name,age,pets\r\nPerson1,20,\"{'name': 'Beans', 'type': 'Cat'}\"\r\nPerson1,20,\"{'name': 'Spot', 'type': 'Dog'}\"\r\n" + ) diff --git a/backend/tests/unit/test_models.py b/backend/tests/unit/test_models.py new file mode 100644 index 0000000..23863d0 --- /dev/null +++ b/backend/tests/unit/test_models.py @@ -0,0 +1,26 @@ +from app.models.user import User + +from app.models import db + +""" +Sample python test. +For more information on pytest, visit: +https://docs.pytest.org/en/6.2.x/reference.html +""" + + +def test_create_user(): + user = { + "first_name": "Jane", + "last_name": "Doe", + "auth_id": "abc", + "role": "Admin", + } + + user = User(**user) + db.session.add(user) + db.session.commit() + assert user.first_name == "Jane" + assert user.last_name == "Doe" + assert user.auth_id == "abc" + assert user.role == "Admin" diff --git a/db-init/create-multiple-dbs.sh b/db-init/create-multiple-dbs.sh new file mode 100755 index 0000000..aa665fa --- /dev/null +++ b/db-init/create-multiple-dbs.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e +set -u + +function create_user_and_database() { + local database=$1 + echo " Creating user and database '$database'" + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL + CREATE USER $database; + CREATE DATABASE $database; + GRANT ALL PRIVILEGES ON DATABASE $database TO $database; +EOSQL +} + +if [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; then + echo "Multiple database creation requested: $POSTGRES_MULTIPLE_DATABASES" + for db in $(echo $POSTGRES_MULTIPLE_DATABASES | tr ',' ' '); do + create_user_and_database $db + done + echo "Multiple databases created" +fi diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..378ee67 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,54 @@ +version: "3.7" + +services: + frontend: + container_name: llsc_frontend + build: + context: ./frontend + dockerfile: Dockerfile + volumes: + - ./frontend:/app + - /app/node_modules + ports: + - 3000:3000 + environment: + - CHOKIDAR_USEPOLLING=true + env_file: + - ./frontend/.env + py-backend: + container_name: llsc_py_backend + restart: always + build: + context: ./backend/python + dockerfile: Dockerfile + ports: + - 8080:8080 + dns: + - 8.8.8.8 + volumes: + - ./backend/python:/app + depends_on: + db: + condition: service_healthy + env_file: + - ./.env + db: + container_name: llsc_db + image: postgres:12-alpine + ports: + - 5432:5432 + volumes: + - postgres_data:/var/lib/postgresql/data/ + - ./db-init:/docker-entrypoint-initdb.d + env_file: + - ./.env + environment: + - POSTGRES_MULTIPLE_DATABASES=${POSTGRES_DB_DEV},${POSTGRES_DB_TEST} + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + postgres_data: diff --git a/e2e-tests/cat.png b/e2e-tests/cat.png new file mode 100644 index 0000000000000000000000000000000000000000..ad118fa8c4907d3a6fca96df02c4bbbef3db1619 GIT binary patch literal 524387 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 z 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�}OhR(E;igkaYu8Fd@=GwSll~T8Q((gS|W69!V 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 K7gQF=q5lsqPv{8% literal 0 HcmV?d00001 diff --git a/e2e-tests/test_auth.py b/e2e-tests/test_auth.py new file mode 100644 index 0000000..9f3b644 --- /dev/null +++ b/e2e-tests/test_auth.py @@ -0,0 +1,55 @@ +import inflection +import requests + +from test_user import delete_user + + +def register_user(backend_url, body, access_token_field): + response = requests.post(f"{backend_url}/auth/register", json=body) + assert response.status_code == 200 + data = response.json() + assert "role" in data + assert data["role"] == "User" + assert "id" in data + assert access_token_field in data + expected = {k: v for k, v in body.items() if k != "password"} + actual = {k: v for k, v in data.items() if k in body} + assert actual == expected + return response.json() + + +def reset_password(backend_url, auth_header, email): + response = requests.post( + f"{backend_url}/auth/resetPassword/{email}", + headers=auth_header, + ) + assert response.status_code == 204 + + +def logout(backend_url, auth_header, id): + response = requests.post( + f"{backend_url}/auth/logout/{id}", + headers=auth_header, + ) + assert response.status_code == 204 + + +def test_auth(backend_url, auth_header, auth_user, lang, api, new_user_email): + if not auth_header or api != "rest": + return + + body = { + "firstName": "Test", + "lastName": "Script", + "email": new_user_email, + "password": "password123", + } + access_token_field = "accessToken" + if lang != "ts": + body = {inflection.underscore(k): v for k, v in body.items()} + access_token_field = inflection.underscore(access_token_field) + user = register_user(backend_url, body, access_token_field) + delete_user(backend_url, auth_header, user["id"], lang) + # Call the following with the auth user since we cannot verify emails on new users in the script + reset_password(backend_url, auth_header, auth_user["email"]) + logout(backend_url, auth_header, auth_user["id"]) diff --git a/e2e-tests/test_entity.py b/e2e-tests/test_entity.py new file mode 100644 index 0000000..da8a000 --- /dev/null +++ b/e2e-tests/test_entity.py @@ -0,0 +1,121 @@ +import inflection +import json +import requests + + +def get_entities(backend_url, auth_header): + response = requests.get(f"{backend_url}/entities", headers=auth_header) + assert response.status_code == 200 + return response.json() + + +def get_entity_by_id(backend_url, auth_header, id): + response = requests.get( + f"{backend_url}/entities/{id}", + headers=auth_header, + ) + assert response.status_code == 200 + return response.json() + + +def get_file(backend_url, auth_header, filename): + response = requests.get( + f"{backend_url}/entities/files/{filename}", + headers=auth_header, + ) + assert response.status_code == 200 + return response.json() + + +def create_entity(backend_url, auth_header, body, fs, file, filename_field): + if fs: + response = requests.post( + f"{backend_url}/entities/", + headers=auth_header, + files={"file": file}, + data={"body": json.dumps(body)}, + ) + else: + response = requests.post( + f"{backend_url}/entities/", + json=body, + headers=auth_header, + ) + assert response.status_code == 201 + data = response.json() + if fs: + assert filename_field in data + actual = {k: v for k, v in data.items() if k in body} + assert actual == body + return data + + +def update_entity(backend_url, auth_header, id, body, fs, file, filename_field): + if fs: + response = requests.put( + f"{backend_url}/entities/{id}", + headers=auth_header, + files={"file": file}, + data={"body": json.dumps(body)}, + ) + else: + response = requests.put( + f"{backend_url}/entities/{id}", + json=body, + headers=auth_header, + ) + assert response.status_code == 200 + data = response.json() + if fs: + assert filename_field in data + actual = {k: v for k, v in data.items() if k in body} + assert actual == body + return data + + +def delete_entity(backend_url, auth_header, id): + response = requests.delete( + f"{backend_url}/entities/{id}", + headers=auth_header, + ) + assert response.status_code == 200 + + +def test_entities(backend_url, auth_header, lang, api, fs): + if api != "rest": + return + + body1 = { + "stringField": "TestScript1", + "intField": 1, + "enumField": "A", + "stringArrayField": ["test1", "test2"], + "boolField": True, + } + body2 = { + "stringField": "TestScript2", + "intField": 2, + "enumField": "B", + "stringArrayField": ["test2"], + "boolField": False, + } + filename_field = "fileName" + if lang != "ts": + body1 = {inflection.underscore(k): v for k, v in body1.items()} + body2 = {inflection.underscore(k): v for k, v in body2.items()} + filename_field = inflection.underscore(filename_field) + file1 = ("dog.jpg", open("dog.jpg", "rb"), "image/jpeg") + file2 = ("cat.png", open("cat.png", "rb"), "image/png") + + entity = create_entity(backend_url, auth_header, body1, fs, file1, filename_field) + if fs: + get_file(backend_url, auth_header, entity[filename_field]) + updated_entity = update_entity( + backend_url, auth_header, entity["id"], body2, fs, file2, filename_field + ) + if fs: + get_file(backend_url, auth_header, updated_entity[filename_field]) + retrieved_entity = get_entity_by_id(backend_url, auth_header, entity["id"]) + assert updated_entity == retrieved_entity + assert get_entities(backend_url, auth_header) + delete_entity(backend_url, auth_header, entity["id"]) diff --git a/e2e-tests/test_simple_entity.py b/e2e-tests/test_simple_entity.py new file mode 100644 index 0000000..20f3182 --- /dev/null +++ b/e2e-tests/test_simple_entity.py @@ -0,0 +1,81 @@ +import inflection +import requests + + +def get_entities(backend_url, auth_header): + response = requests.get(f"{backend_url}/simple-entities", headers=auth_header) + assert response.status_code == 200 + return response.json() + + +def get_entity_by_id(backend_url, auth_header, id): + response = requests.get( + f"{backend_url}/simple-entities/{id}", + headers=auth_header, + ) + assert response.status_code == 200 + return response.json() + + +def create_entity(backend_url, auth_header, body): + response = requests.post( + f"{backend_url}/simple-entities/", + json=body, + headers=auth_header, + ) + assert response.status_code == 201 + data = response.json() + actual = {k: v for k, v in data.items() if k in body} + assert actual == body + return data + + +def update_entity(backend_url, auth_header, id, body): + response = requests.put( + f"{backend_url}/simple-entities/{id}", + json=body, + headers=auth_header, + ) + assert response.status_code == 200 + data = response.json() + actual = {k: v for k, v in data.items() if k in body} + assert actual == body + return data + + +def delete_entity(backend_url, auth_header, id): + response = requests.delete( + f"{backend_url}/simple-entities/{id}", + headers=auth_header, + ) + assert response.status_code == 200 + + +def test_simple_entities(backend_url, auth_header, lang, api): + if api != "rest": + return + + body1 = { + "stringField": "TestScript1", + "intField": 1, + "enumField": "A", + "stringArrayField": ["test1", "test2"], + "boolField": True, + } + body2 = { + "stringField": "TestScript2", + "intField": 2, + "enumField": "B", + "stringArrayField": ["test2"], + "boolField": False, + } + if lang != "ts": + body1 = {inflection.underscore(k): v for k, v in body1.items()} + body2 = {inflection.underscore(k): v for k, v in body2.items()} + + entity = create_entity(backend_url, auth_header, body1) + updated_entity = update_entity(backend_url, auth_header, entity["id"], body2) + retrieved_entity = get_entity_by_id(backend_url, auth_header, entity["id"]) + assert updated_entity == retrieved_entity + assert get_entities(backend_url, auth_header) + delete_entity(backend_url, auth_header, entity["id"]) diff --git a/e2e-tests/test_user.py b/e2e-tests/test_user.py new file mode 100644 index 0000000..add3485 --- /dev/null +++ b/e2e-tests/test_user.py @@ -0,0 +1,106 @@ +import inflection +import requests + + +def get_users(backend_url, auth_header): + response = requests.get(f"{backend_url}/users", headers=auth_header) + assert response.status_code == 200 + return response.json() + + +def get_user_by_id(backend_url, auth_header, id, lang): + if lang == "ts": + response = requests.get( + f"{backend_url}/users?userId={id}", + headers=auth_header, + ) + else: + response = requests.get( + f"{backend_url}/users?user_id={id}", + headers=auth_header, + ) + assert response.status_code == 200 + return response.json() + + +def get_user_by_email(backend_url, auth_header, email): + response = requests.get( + f"{backend_url}/users?email={email}", + headers=auth_header, + ) + assert response.status_code == 200 + return response.json() + + +def create_user(backend_url, auth_header, body): + response = requests.post( + f"{backend_url}/users/", + json=body, + headers=auth_header, + ) + assert response.status_code == 201 + data = response.json() + expected = {k: v for k, v in body.items() if k != "password"} + actual = {k: v for k, v in data.items() if k in body} + assert actual == expected + return data + + +def update_user(backend_url, auth_header, id, body): + response = requests.put( + f"{backend_url}/users/{id}", + json=body, + headers=auth_header, + ) + assert response.status_code == 200 + data = response.json() + actual = {k: v for k, v in data.items() if k in body} + assert actual == body + return data + + +def delete_user(backend_url, auth_header, id, lang): + if lang == "ts": + response = requests.delete( + f"{backend_url}/users?userId={id}", + headers=auth_header, + ) + else: + response = requests.delete( + f"{backend_url}/users?user_id={id}", + headers=auth_header, + ) + assert response.status_code == 204 + + +def test_users(backend_url, auth_header, lang, api, new_user_email): + if not auth_header or api != "rest": + return + + body1 = { + "firstName": "Test", + "lastName": "Script", + "role": "User", + "email": new_user_email, + "password": "password", + } + body2 = { + "firstName": "Test2", + "lastName": "Script2", + "role": "User", + "email": new_user_email, + } + if lang != "ts": + body1 = {inflection.underscore(k): v for k, v in body1.items()} + body2 = {inflection.underscore(k): v for k, v in body2.items()} + + user = create_user(backend_url, auth_header, body1) + updated_user = update_user(backend_url, auth_header, user["id"], body2) + retrieved_user_by_id = get_user_by_id(backend_url, auth_header, user["id"], lang) + assert updated_user == retrieved_user_by_id + retrieved_user_by_email = get_user_by_email( + backend_url, auth_header, updated_user["email"] + ) + assert updated_user == retrieved_user_by_email + assert get_users(backend_url, auth_header) + delete_user(backend_url, auth_header, user["id"], lang) diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json new file mode 100644 index 0000000..d9cdaf7 --- /dev/null +++ b/frontend/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["next/core-web-vitals", "next/typescript"] +} \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..fd3dbb5 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..a75ac52 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,40 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. + +[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. + +The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/frontend/next.config.mjs b/frontend/next.config.mjs new file mode 100644 index 0000000..d5456a1 --- /dev/null +++ b/frontend/next.config.mjs @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, +}; + +export default nextConfig; diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..1e66f9d --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,5308 @@ +{ + "name": "frontend", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.1.0", + "dependencies": { + "next": "14.2.13", + "react": "^18", + "react-dom": "^18" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.13", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.13.tgz", + "integrity": "sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.13.tgz", + "integrity": "sha512-z8Mk0VljxhIzsSiZUSdt3wp+t2lKd+jk5a9Jsvh3zDGkItgDMfjv/ZbET6HsxEl/fSihVoHGsXV6VLyDH0lfTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz", + "integrity": "sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz", + "integrity": "sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz", + "integrity": "sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz", + "integrity": "sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz", + "integrity": "sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz", + "integrity": "sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz", + "integrity": "sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz", + "integrity": "sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz", + "integrity": "sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.16.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.6.tgz", + "integrity": "sha512-T7PpxM/6yeDE+AdlVysT62BX6/bECZOmQAgiFg5NoBd5MQheZ3tzal7f1wvzfiEcmrcJNRi2zRr2nY2zF+0uqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.8.tgz", + "integrity": "sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.7.0.tgz", + "integrity": "sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.7.0", + "@typescript-eslint/type-utils": "8.7.0", + "@typescript-eslint/utils": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.7.0.tgz", + "integrity": "sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.7.0", + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/typescript-estree": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz", + "integrity": "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.7.0.tgz", + "integrity": "sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.7.0", + "@typescript-eslint/utils": "8.7.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz", + "integrity": "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz", + "integrity": "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz", + "integrity": "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.7.0", + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/typescript-estree": "8.7.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz", + "integrity": "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.7.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001663", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz", + "integrity": "sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.13.tgz", + "integrity": "sha512-aro1EKAoyYchnO/3Tlo91hnNBO7QO7qnv/79MAFC+4Jq8TdUVKQlht5d2F+YjrePjdpOvfL+mV9JPfyYNwkk1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "14.2.13", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.1.tgz", + "integrity": "sha512-EwcbfLOhwVMAfatfqLecR2yv3dE5+kQ8kx+Rrt0DvDXEVwW86KQ/xbMDQhtp5l42VXukD5SOF8mQQHbaNtO0CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", + "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", + "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.6.3" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/next": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.13.tgz", + "integrity": "sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg==", + "license": "MIT", + "dependencies": { + "@next/env": "14.2.13", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.13", + "@next/swc-darwin-x64": "14.2.13", + "@next/swc-linux-arm64-gnu": "14.2.13", + "@next/swc-linux-arm64-musl": "14.2.13", + "@next/swc-linux-x64-gnu": "14.2.13", + "@next/swc-linux-x64-musl": "14.2.13", + "@next/swc-win32-arm64-msvc": "14.2.13", + "@next/swc-win32-ia32-msvc": "14.2.13", + "@next/swc-win32-x64-msvc": "14.2.13" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz", + "integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..2487242 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,26 @@ +{ + "name": "frontend", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "react": "^18", + "react-dom": "^18", + "next": "14.2.13" + }, + "devDependencies": { + "typescript": "^5", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "eslint": "^8", + "eslint-config-next": "14.2.13" + } +} diff --git a/frontend/postcss.config.mjs b/frontend/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/frontend/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/frontend/src/pages/_app.tsx b/frontend/src/pages/_app.tsx new file mode 100644 index 0000000..a7a790f --- /dev/null +++ b/frontend/src/pages/_app.tsx @@ -0,0 +1,6 @@ +import "@/styles/globals.css"; +import type { AppProps } from "next/app"; + +export default function App({ Component, pageProps }: AppProps) { + return ; +} diff --git a/frontend/src/pages/_document.tsx b/frontend/src/pages/_document.tsx new file mode 100644 index 0000000..628a733 --- /dev/null +++ b/frontend/src/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from "next/document"; + +export default function Document() { + return ( + + + +

+ + + + ); +} diff --git a/frontend/src/pages/fonts/GeistMonoVF.woff b/frontend/src/pages/fonts/GeistMonoVF.woff new file mode 100644 index 0000000000000000000000000000000000000000..f2ae185cbfd16946a534d819e9eb03924abbcc49 GIT binary patch literal 67864 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ϣ%UY8`RWp~V-U_7 zDSM&-@cv_g11tXxtR8hhSsvhbm}^TIbEA^ zez~Ise9A5xP83c_%z83NHI&u7X>Mt9`pnf9TVC8vDso9r$$%-f#fu6f@a*df)uo-Q_5os=ED| zcEe;FMSWSJ&ct}ag!R8s`bGUZ`f~{uR>BX_16UIZu3|HQ{An_9v zHp7)lLClDc62YY@VO}JkS_2kF)MYGEO;oHS%W;YuDSf29meyQ*kC&Q@D5Y()UirbQ zeT^&uH7^72nS2!YD|zY#+SZO~YV!l{p=s^XHa8fe1Wr{Ir~lt? z&T9&mFQ)1Obn6G9RBhN4O5^az)h8(>R7Z`?G=z2B6om`t%6fF1Lre{m0c~K~0 zXZ`%Asz;D)&nPl8w^z!q(xW3qYNIS&^j=w1)?4pd)hsHQJu%L&>=IUNSr-?V@a<#y zTe$XUE|?}yQS@G4Hzyq}NAYok$^v;@M3G?#N~=Lk0A7LKEyo$`IGn`T`3c+&xhE&g zGUdOb(GqsDl}c<$s___$V9iP|P`$KE66Ka)!2y>Q0W!(Z1+^C&IwAD7-&RKDm zn@lTqPUJ4whnly4U#AuBOX0`y@9}=T_iKqGj)SrPBvyHgUX8{~cQ&n$YZMhEYGih$;=(NLFnCA; zJ<{P6EViq3GdR@A0F*j71H;Z7rbk7w@|D5)fHG%I7z!A3i&zoOG}HN^4@2Y@zZPW8k#z-2^|-~Kx5rTa2PJ#IoVGbx9( zms$_6iSdGT;U0f^Fi(^HUqEObfHCxveHQQmm5N68!ya{NsbpQ!J&T!=K7H*BqwI3( z<(8F_S1t|R9X3GYtkqCkY%MCbUS*P0tD$w9$x6L;NSmOB={inXdS_%wItd~9g6P?q zbe5ls)xwWyqa@6o*JRjjFm*JXA3Z_f7BV2Q zr|8x;r2WS3q$)JNtkgct{V{eZW>(nSUAP3`gSGb@Ta068{O(62Mo>By3C4Fb0xq|f zF($svLG@T|?ZAQUbnm64rqnxjz@vnk*h&!BzyCpfWGxn*q%`b!2z>QlqgEDaj{z0qttc?)(Dp;3e z(yy(@YjF6%)!PGZ32TFI_{e0?Tr)><@Nh}%lMmyo%EZs_SFe3u*|%^JhjHJ1XGXjI z``I;gHSp+U(PI(CA?ZoqXG6&?-|KFNIGgKWj|g#lmAvsh#qaePKkb)vfkVD7B!sBr ztwrDIu9PhVp@t9Ota(3qIW!E{Stq+;x1M+(GR!qB3mdmJ6EZTkf_M>gnYyV*G~{HY z916Bf_&5)i%wxFAr?Wy1r!~*FqLp^99NyPZ-4ZHUy`0AUEz%0+bKT6;SlXPy5^Tn9 zit~>w<74c@=Of=s&C`mfeNxu7BhA8zZ8aUPGKDEyrHnjrw?v_#{)nzNg>MHveY_6& zIahSkcjLb>)xyrl4^6X;NEoPI)mVS-Scfz&*j>UtsLUHUf3vOFe{VM$n}31R)1_Fa z4wRr_VWG*Hdy0v*FC?d$Ny$k{ruxs|=UgZ|Sy?quvZB$JfE;70t4l^6I!Tg}>eg_Y zhK81qii(yP9MQjwa+ZXOmOLc=wpjZZ^%-&YDc@d%&LQkEUp2PM-s@%<^j>Wd*zN{m z`uIvD`cpvhgNaqh?8!Rgu94tEplL>Qwr-K^bDvl+D{FmgJ(tCsl2)sp@ zO8+Z6RqvHilF0dRCY(_2%LY>mq<5f&S<@pZhp;K@gL)OlJ+wIoR9s4riQb7G*E(lM zT`eb%v_6o2fW3}!gLQdyB7{*2rErWtZ}2<$YTTn(CQ5@*lC)YA5dw-p!l1x?Fy_?9 z3leg;vQHW-#<5G;K_a7kIS|F5x2qAw4Sjry?}hr}BzXo5(-a}1Nc2lv-Ux=7dw_`8 zr#XGH9?Vo})J2ws+jH0iX=yh&74q$+tx?E~Dm3uC#iso#%yxrgdwQ4sCaS#1Ba6qP@BDTTlWER; z_Nr?)h}&+X`Ml*kd?vj9KHR?7)+4QIjnxNdB$-4<7JHBLV%V%f75QVvg=?DA@P6oP z6|+Cm*j}NeBB0y|MVZI3d#*aVv3lH!Q7ug;bw0VX0C1mpTVDuBU-JlZ&L*CrEx~@g zvWYf!%l@HoTQc76+$Rpybh9IpMMRVsTga6ck4{C19$W_b-Af|r-k^#2-F(MyP}23< zJMWV1g}YafX{Z_Rw!3?-w2Q@oq1XAOMa^scf-SjkdSwG>qy_`I@4l?3=ytXtN6RU2 zRZ?CjbKpA1i}Nb`pyH@hS5vF0`s&TH$8A47t|iq@+0wI3nn-*7ob=)T!M(+ruye(< zEom9SCd#4heQ9Q{%npGh?2m^nPetWYjy9zv4ia)CrBY?wNlG2o zo#y=B+)MHX17`SlMY?qZw;;hMoH1JbxC*NXfq=*3fcaLt)%B_ci+Z)ctA0~lZj7Ga z6vPCw82$QeeH~s2j~}m&FVF^B5Z#nSEA;WOmT~aU%`JChOSD#3x0<`7!@a5b^5klL zE{Z37&-828$DM=l8@bj!a;JCkT=(qSYNG~mYkT=r@32~Pp9^&Xo0jSK~pHT?6)f?A*>9E846baRamXh?Tkxg^BjK7qxaHX5Y=?%)&BTXb5Z*`A0_YR#@MG~i$G&mDiVqBUEQmb~ zT-b4iN)tcawMQpfkx7NKEy1{U4Vn; zOn`N`SltDeICuwP!4I|f=KE&G=pA?A`qlH(c;DggP=Hm>jkJD-jK*C)#5xi`pESX`hO z)^AT71c;{_!-jQ+x%G$xqtk23#8vBfe!c#pI5j)(Ml$E{L-uq#7#P3Dj=X_A4S*3H znBlL^`de1}*(c$r2C$6jPAg-6!zeYxwbp@XvS>GY%obNhzgT{!V7`!tha) z-OVAEZ3n1vj2wN3s5_q~K0zKsWlI+qA)%XFSW#i>btv)AF5|UYK=>9Y<6WAGKhDm9 z>~TM~Vs#Y8lnF4USHyMiR4{8lyM^>Z)dfszO%?SH*J5wT-p#cJ8(>q7#3GzJM3d!F z)-Za@re5UMqQu?&n9LL_mJ&?!G}p(vhkYsK$*YuiBRNhjbc7<@KedR3oRvOw-kVSZ zvNJxHu<3gx+=T^c628Kyo3L^%6*UVHBMCbNS2_Jlr-!(Ngw;HidJPwcpmr&Bl;U59 zAB?_`@FD&}7<>qFe0pDef`=aa3O_%Rh`BLksk z1{srtza=8k86*=_O@dPgt9HG}|0hh)8OxMT0bAv-7S4Fb0 zkDTdD6%FGH%Ue}4h>u*^j8xB_GrG5#lle?4ZT|>P~W#{+!GHsZ*!l_U6YuunTFV9Vtqf-CEsVDxn`5_ zegWYFLHw{L|BwU&fdGMe0K@i!pl&e$0rj!O=1jNPZnS(7m~FJ!;{0j+xwhQ_1~U3a z05a}_tpl|I+UO&6fZzNz(^vM}Pl59UBL=z@EIP=wKXq5@hQb5vVDO@jfd;{P@VE}| z0xY~=(gD8rGvaO%D4&jJXmxC?gP==rw>UIMnZNf={z4-^_zT*Ix}^-jB!2k zsR-f(%PW|#fZ&86H7muGRa1F6?9pIhm8d1o)(~P9%PpAKkYJU7&co?v^T_d|XN>#) z!3%Ovp#4Gk3#VVSKe7Ntf`SREr>Nwd-~$rz5UQg@HcIOd^R48sza~N%YRAc*PdML#BJHU% zJ4#DV4c^j`%%U_6meXa;{077Xkq-yUny?@_RH-3I0cN|8tC7J-Yl^_$Rx=_&M=_pvWW=AIentRL+haM^^M| z!TJ`luzS(QKo?tikn2H_8}V;H#ebuMG_;kI2~LHZbhVRt6=mpZSrx`hmuKFx z3p~}OY^Pl#R_&`Tvz(4^{RvRshVqw-X{)yH9 zEB6-L=j}?Bvia1BBkGmEU6oSnRJ0X5#9WAJ5!^$}`yjW`GO}i*_erGV6U72-gx>Mg zW9BMOQH5LzgXPRFBi|ThsvX!{k@({FMf7vMm_e4Kum+_J(dn)Lx?}A7A200KY_cH& zZ?wkfPkq{|_yzY9Mp{DUScVS29VmOGc7M+9)y?>8m5*ZX!DrXh%3k;_&I`f^Jz;aa zG6fxC5KR*@I8v{~$+WUL|Ow zdm)QEgfm<=jDTes8x>}^Dn@G@!Z^BWn9Ycf*$dbtGkju9OVo@ zN9JtXndsN)ukmMZ%1Mg5TXE=SLrr7d` zicE-1gCh69WSS7B=|11x~CP`}>r@j8`xaL>{FyB{^fQ6J{djI=f^&&_Ni6`plZ3X^D3zfCZpN`I&8SBNX_9q)=j-Lf8 zYj3Tk$k~Cdm-m&_^Hkc^D`A`*;amMNkFK47Q+u?<4Y#Q_%qirCD5S5q7wGWybg1UW z$zq7iLKXIoVfZFiSM=*s=+hIaizoRvD#CpOAc7%+GWDghfOQ{tkn;%--4Rdsk7xQ1 zgN;yU_w@wG?XGduS}l@sWdStsu_z{6;wpta-!bKJ1NAzhaD3S(Z8t)%dEs)kE+ZJX zn8YzdzDArt7?Kv}*9<8pI<*d*u?4C%O?XObZYL18(V7*eHk@GU(b-JnjL1;83=vDO zb;;T{Zg#laRQT$Wg#f8g5vXrExuj*tA6dXNu?im;@qC!!En^%oGk<^`Y5@}S?vGnV zm-(nUVZCeBf=!wptO)3Hfz9gv<&t@Q067A9>=;Xr601f*wx}hVjrJs18=Pv$yWBLbvBXw>nybvCzqLC zIvrQL3rJLYh8-HK9rX@x*;aZ$M_Xqe$PWEobiHM zan!Ew`Cb1ABg@_`z-Ti_x(?)N#Fhiceb94=| zCK|AfQTYM6Amb+3f%HP z^V4u0z!4aj5*Yk9nldObupdW=d4v&@(TVAIU?{B2Hx}l~SJ>@fP_{27JOjnY%M8y! zFSIc9J%$(=7`=%Z6NZr7BHnsLv&+2%b>kD-&{MgM;U5Wu%_=ludGG0P;EwJW zw(-;ih3{K>ko83AOA0DgEede`#!H=+2LCmb%YhpN|7{bPt;+fcyrUuMIsZgGWq{iXfqPthbyUu9!)+ zJU47kLMuMCbn6s|E6}bu>(tIG0N>CJ@Q1Pr-g*MPj?{*DqyMSS{34WyvLz~O|1T(2 zL!vZgEsOg4iI8i%i@K`0YFUfAzVi_26`4t4@Yc>Z|G;(e@^zj z$RazYfEor}cw|BSH0p1sR9{H z5rKppn$OY{68FPYH>jflNo`1d5gH7I{M`SGey=+||IUHXQR9o|yI5~A4_rC(H ziNr(c;DY1}bfi`lQWhNvTivA%hIb~>UV>O*vs~WqJra`4%34)gQ6uu5Nrd}@kHYv9 zYLbh=uF#=k5vVROQ>1en6Dca%))vuV#c!4zxpn!=w5MsUA#AfLGdLllZ>os0SP!nK zGUf>;|Jv{1!@HI8m)2JoqbVhd({sx;Gc2P>wrloU#1#(d{Nas#BgdxI^s9)uBt)ia zj2)`u`D3HwLNo5h=+lDJ($hi5Jsnrb*)+;tiWerf?GSdd)}TI|C^nUe1fMU zzfJl#(}0yS{m1j&l~1x4VgC#H{ygyC0zhBjy>E89|ET$zUp;$Yo_wD9rnt914vO=h z8n1c%Fg^%@8mg8@?$*t??Ha4AQyTA5H{7(vs4cN*@=O~5Pf3@p1hkz~1CXK?M93+i zBqXGkV^Z)=$^k*BWke}|h2YK>LY`dmskcsyQ)qfsTllME$jy-N(`S^_8bYftjv&7F z8Ads#u;?7ay*K~W7YjgFIz&}bM46)5{8eq*q3tkjjBQz9Tcgu9bLK6WQr5IK^k4On zw~f9~hp|WEiNtH`~g%s2WN=~vDAXev}Q)o5k(7`1|7#$y#ymJcr$Sy=QryTHvc8)XBDW+kk z7<8p_$g1GU=lWAVB5ZXR!o^d@Hd8*Vj7zic{OJUL zu*i!8;e3v#P+SpiNyT4P&D~X5{!z)^RZ;y>(YILzB1IicRfSYl*>y?Dc1clpNtwD? zO}kl#_f7G8LH@1RZ&~28Q1DGP z_%SQ&3;}K-54)z9MF>J-+OC5F84oRYI!c0vZBCl;q&j^Wkf}{e+uYhFxOy23Vecw%=fq6_;Z3X&;HZgK zY1LfSvQ(F;Hgl%UT50E6Rl`~r2CLAOW?%M7?g1<_MXExofEv2@z5Tuk=I$PiN@D0s zTfCdy!%fImrCanX!RW^jE3Df(1~OM1xT6oZVBbYRj>#wnO{ zo|+`GnVs#`F*RnXWG6Z8b!I=lCcmBJoZChJkMC7wns_p2^7XI{r#*n@IYX~B!#ogR zOlT6gAq5M*#~BrBdd$~P&FmZsKbSZ$9_t8WL_@A>Qcm7P$w6x)?9-(MdAPLd(0*S zkhr0RX15y8;h<;k5lrB8dc^NR2846F>eFVcY9@g1?Jm-l7o+-I%+nqdHoCs0&}=s> z?DXGMD8-uGUnTkbO@FbvT41f|(#}Dn%xFV@>_!_`*p-PNbJ^_Xbw3qD_K;Re=fS)R z_e4U~4iu!8cSHqGU%!EHfL|Ah)B%6n&xq7MGiakN!FG0??PMfDzD^s^sOFsEtIMRE zV4H;eA_%N{(s|;J;^}xkIn1gRm0tQ`$=y&bOnhe^l(^;DZ7OeOtq@yoX#4$;G^O)LQ=g=q(@lq)b>A*=H@mxy1J=1&$=^A?lTO_)l#39YQ>8=k^ zm~&c`E@4bOQGyNNKrF$Sh~dLLVPP!6y3BDP`#UzA>@I>0Kg*Lx_+7KT=$om;f_*0EcZg?l*n zX>l~XdwUjs2d6Y6=?ALU)`6ast-`jVSY9kFg9XYb+lEo4ZL)Gd#>Qpc0$t~2!Mxsk z`973z41*Q_AUwwj;u1XfJ_T!B`yZ`m@4jH3vN$gU&sE|W&*UA@enDVCMIfO5ttcQw z&|P3YpnxpMnl}zXU;{F-NNCjwaP91JN3!W8P{|Fqi^PV}lvZB|k>XffE+?6=4wOt# zY`Gjx_q{|KPW76tHd6V(PHws@UWJFTyx$&u6~BKZ*yj9=WAYzBXuaq1j1{F~C0{Yg zj8?1Ja-~2y&5qaW@s!yPPg6dU^&Md0iW0NX@4opoq*35$~QV9DpFcPN^){+Vw{?Sin6l2 z;`R3Y`llrVF`z%-BU{$GM$u10*rtbz-d6PzU(k^$lxu`asFti2E0k*mi^!(5nxy{k z_m&Ga!ew+@UJqvr_I>$;gJLn*%yt9ClnZ8nOlJH3LefdKDy>Gl!BX0vo>_0a?kgZ3 zmCNRGz8WZ@Ub#IYOH7DzF(JZf9}_2xQgk|>?uPi2%j11}7M|z#dikgK%k%zfu(N6Jwh{(y%8})eFDrzrt0CJ69iK=NHI;V{+r*cDa#0yxXyC{;s zFG9~p?Vdi!(Ed|s<}7A&NPp|sTKDv6ulf{>4cEK3Nea!4X#6K&^4C>tYAW5>>j|6vzAEsWdBL!Irzul32428BP6n;xBh z-j5>ZCV&jv%pUen`nCs)oih!Iea(RjX-G;F~W5+~{MJX+Mq8nHs{#5OWyQbLN!9dgwk7DS!-P&l$( zq@ZmKP;a=}sQjW?tVMRtAe_q)pRVBZN#jX%IA5@$KkkyBUc^C85(;0Rzm7!q*n_PNR$*tPzlZz;(il~CDJR%oms*gR}8Ky_i&nk8k@OHEOulB zF$!Zc2i>M%cUvJmYW2NHG4xn7^qe!u?FJisln=BiFwjvkz{6mQ`bo#pLW(8AtY+i6 z>Xf^LNaije4=*VZ!HY(oVW$XD7tJHSZc_oLiD!TtuK$+72{{d}JNpg54Y3Sn@I@>| z7?==DXM+s>{rzCWMV)xs@}nmZDsUx#C&Eq88WLS(Lbev4rj~YIW^lbEAK_?L|H4=K z{-HZNu@wPE4dqrnZAchZ;H&C_6wY)&+3v!7#}76D{dNyi^cqbnBIUD8y&jeR;F;bT zeSP*Q`@*{(dOtY#Hq7?^nEy7e1E=MBm^WZODTc!=VYDcbO|Lf?CY#FVhR<$ukT#z! z6sDgl1Q7$I*BPXkEr4*dSyHjZU>0Y&48(wSy1=xu$d#IB0pNqHpt5Y>(=NdA$ZVW2 zIiq#pVdzfbv|LV1hpZBwfQw?ls~@14(W{u`I_83}I2`r|XoCf#;k#p^;V~JF2ZB^b zWDzb_O{!KIjN%RFf8M-cqS<8P%HVO!;1$zkc3b1ITch;?tRAg8skQT{ZH8B7)wUAY z<<7Tyz1$^EXMUKhzK>_4n9*p|8;%B|tRxw-X2AaZp3z_^M3ZmPP;avOfB|#ckB!%H z>d7xlkv=VT66ONLL&d{pDuI+h>aTn+^}hNqE~j)|f62w=t4V#&)YE+M!8NOqLt$R;ed=V(&BdkE+%zUu*e2|WOh&KbEFp<3FTBOjQ zCpX;rFkblx;J@$8M-1M(cA}hQ+oFdr2vvvvjOq^JUy|!C_^jNZ z71pFMm#kwXB&{YK?nzgO96d9 znhQcPoU>(ZsU(eentx@bDCGuT&~ncF&15hH;w#sAbmyXRO-5db`(!MXOwUn++L-sL zxa_%NS~TC4T(y=t}1I*7Xv9 z7HY}b#P->8Q3sw@DLwUXot%8iEJC+bHB)e$ueT{=RBxgsh!Ob1p-)8jX68vxZHk!y zLf041kwvK$7B2k5Ns!v$)wQ!QDg3RnX4M;vnoaR{tG^(mxG9fQfk!E^VlCI8uPRy( zF%A9%*_@DrSPa}Ei0wqDv_9Fh3rUIPxnYRmi&JmWFXZJPg+7+Lz4Pw009IOU<6aLU zA3%EYo{PW?5@n&-P(|^|=TX-iO$jpn9zj-{qvKo*e@zpr7kCTY*8#X!lI8gKzAQuw zn73cW^i7z18lQjuDA0ra;*qr0Wn$73v?y;sMh?S~tTH&U11gX|SPE6!~{hmrgr)BMD-fX)gy|Gn%k>5a_ z*t3=Y^$SP=^}vFLKp=bc{6EoT%sv6HdZr~*B`b7BKmo`@CKr-2MUDwnSk{mSmw7*<{BVX1;{23V3J@E)J+B; zfrGG>;+&tTR(09`qC~bEPfx(Vf&9gQ>iRjzUqEo+zfcg0!7~Kp6kt_;u?jNJLOnnX z_JKzjDr!J22Td86a{$$Zdw;!PX`&L82zx4Gslc&{>dpeO;BO6Ms*f}~!fc`;3?1Cq zd}Is}b4n;G1+$RmNboad%8*Nsfj8vvkX%#bLs@8LCZ(1wSsJhB#uaUxh^Z89M*$YGX3rW5heNEJ#Q4xS9Jru^T zhao>?eJc!&rAn53YC@-}lbQr~2+65Rmw0|i=c(+cqM?ZZmHJsvN6I&ngqE zTDHjgsL{O=>f))Z%f5`~qR%TMza0G_)-6x4g7F~xDbc&E56jeZYV($5XjYYBiJpFB z*0^RbmnEH`l^~ixo`Asj5KFKif7W`_`66zsv@zh;I(T8yIabs9eqrf7+0#U?3%jxa z=ZdnW^HYx06(X2M@Y6u7j%5`y8_o_~KKKtIv?wO43~DKibExZJ>Yjb-F7Sli@1G*d zw&dR9R4*}#|M4)`2!4W*{|Q2Bd#9gHP93H?X0>T=I$tqAN3*~7e{lI>_{a1P?SK%@ zA~u2X_5(5C#{637LvtW4bpm{(y9*H(v@+;m(gV=HqAZ61L};#aC}oilL-Gtz03ak9 z80!J>I=Bnq@IFQdaGhW5eU~?|A3)#vixeox3U-U2t^&TZkSxGcg4(mdF1Wg8_66o` zh;-rBduDAYSCQfS^&Vt;0V})LBv|7jkaH4liGPxbmL!Ph<7CKS#;~90JSBVP50lHF zn=S0LvegRUES%Tl+)6-BA-Mvl6A~po*RC!gEeo4;)~S8t`Nkp-V;X4Xlh`NdQ$(b^ zNVNx$p}46&lff=jkBTzInwONU^j&k_h~k-NQ?>{IeMBv44sJJM5>QKU)lk-ZQG0ZI zb9=TI%{O@xxgn&)3q;Yx(M1_Wu7x>;pM^<8&)oWL8a!)x4%M7tvV&cZRj>7$DdG6P2@M$3P z(#9RnWAOd6ntyJt5FIF6X}MQR_wa9Bd7}jT{14xssGw* z>)y%#3i3ym=ixe&HP2QaRy2PdC4_y>UP|=wmL)Q^&cZU$GoSLVW^otPR;K5XI&$9@ z-#Xsj!x%^EZs+qd8?vY}&eGX3r!%56HZsLCb~H3xWu?U@K_|H;v8=VMEve0OfJuXy zghLCQ;_-v>85TjX3-LiNLzD+g3}K%Jn)i+!$lEZwe$q8mRI?H==MgdjY((RJtIr-< zm^J;@f|t!-n040xr(st^u8bp0$H57s?Q=T_y*>7z_krbu&=0;Ik>6{*6&Il*B36tF zfTZt7k&W;>Qyfw;0Tg|Ezw*AGCo|77xX z-nUzOM|o>`ZhL3FV&;i|j_oY+Qz(!z5Z+`yHrTF#U4XkGct>>)_CT8j5!vsX-_r{>3oi&E3=R+a4onVk4~!0^5rYw{5=~1~ORS8&j7^MvQJ`NU z<00puOky^U5Y?B~8`gu}syOQU)bFC7LD7aH4VV}fIp}$i9%Crhx3tOdQ1K;9NDG{i z#46DzJ&j`>?mL-gq<%W-wrBC^=@Am7o^u zYgKPb1%x1`o4|6^yYu{HnK`XzJ8%2$+;k9Bi#<;-9Cy8U(Pu4e`X5|N_P}EX$1)lq zYX15OC23VJo^2~5uLhH@xqn=z`Gl5u4>bIoY zLzfH=cnChWD9kcg5I)bL=|ZU@c`bn4eq}p!DCrZ5y|e|2YXmOiT#ck7Ii^Xmqu;JJI6baux0aV7kP#z8%m3JV z{6#mQfD{F_WYw;tCf~T$RcZ-K{U9SJ=XG<(bd;N!>6Dt9#z{)Y09&CdL78@N6|QY6 zl~^2(kVJ)%n~@<&ma-}a2NSgGh8YIK_c}lFG#HN1x@4drJCJ6=h)FZRz%!~v8!>Oq z%KAh6$^D>0#makW-V{7MEZX~xo75Z1&=HIXy@AV+Iw-a$P#E+V^IxwOu>WA z&N->3J?mU=3 zPv(kPphJ%>;;7R$(C0I!0vS|>>eGorms0mg0Zgq=zwRT@?E0j$OwohG7ph(FYnQ7j zX~X`qrhS=JdTnc6t!i=ESG(BozUw~leopvqltk)E#>Yk0Hl$q(oIgW72Mt@Jl-b3- zS6O(k(Q)CaRcKMAxJ;jQKJ`D$7sY0(IvS|Clq`6mYLJ|vrib92!^IGkUGCNKe!kQr z7s;R;e7`rMr6k$;$=0%AP7fHwa8j4m_`mx1e$JTyo$Lr|Zt2l)YinsqRmNBjVPy&~ zbpYf=r#^j|xmcID7Vtv~h)AF_)pYf0*ml4~TL1tLMK+vhUoxwpzOA-?)*V(0O&u0R zd3myXO>1}l5TqXQCwwDNitITG)RD06uojT24o!wO0U9#xsNn)b{{S+hfFlLnKhnR3 zhYbFJpsUCQVXlTSK0llO9{^-Po4+bH97qfqgpjKy<(9n9HqI!|I8g0)K&-r6SkQGr zQ1g{Wl>?!`unDP}+TDbiHuA_Z2xRXqq*9_NQ-`_Ao3f$aRW@{Q(Mb#6E;Y`1kpl|o z-s2rDe-L4)2n{nL2xyU^OR01;WTh+Vjg5_Th334G2u&Xx9Gui>T2*PlU8RI<)_8z6 zaWCL*st2VP0e4$;D73d%t~KN)yDP(lLa@<50%yIykfWplJOtaZ6tI$F$CM2BM(b1caS63xzb@lPh(a|h4J0!`W(8c}zVgkLAB~FBR3(=A^ zRQ3bPxX;yOg+Ay#=(Q}n@)LA}t10w@f2sbmyUy+`nR*57Koi)9Gic@^Vs|wmB53UN zB3hhAU9FGzw=lZ*cz@eNf)>&Zb+9l7;i(~jxM*GwR#yuR*TlpGFifMN$UH?E$3PM} zmyBI(!li2^?Sq*xeYCK!AV2{Iv~vETp>bf9UWbew)SF!5BQu}2W8{2IC$C#V2t!54 z2K4Z?(u#J+Xwm}uZ5dT$9Ay$VpoE3sH-x)VlL}B&MnxIlTWI4M7a6(H2@h7%qF->C zvqd$C6PB0Dng();%07IU;ItbzP6R=NpLlw@ZS(>e!{2H2ENPj9(cggU1a4lygBNzL z{}=z>Y<&4;=IE%Q(8oVl`&!crwIBU4hX2;L%)UMzh&*7f|LQs-=cnb|0PILVQ^k)6 z-wb8^3jW476ui4jJ`>IupeWmCQ2T^!l6*z^)cle8hm=pzXXrEd{)fyTosZ{*@q7p& zt8kZ``X^0sjsBB@{y@U2N#vBXO*#Du`k!EQf2R!_LW|-%+q>sf+M+q!db;aV1U?4v zs{r>&j^Nd+S5;L-4(V4`#)EaUmAQBCs5IAFqtCUy1>!9j4ElqvUs*5jcDqH+?Z(vH z<&}Q}VWTm1bF&P?63xQsb;L5VbAF?Q#35p7icL#X zi5R47)j*Vm3`C*)Dy(ibk6fdmUq)Rp0?k~Ez|gXDdeDx}Ho*egJVW+DFoWJ-dc2Q+ z(t>MWQFefp0TrQGAhT(E7p~^sg{xT7F{Hi=UvuxqSG)AO(0U`gC5&-tcWv?i{Fndo zU;fYHTJrGlFuAr2mgw@@iD`cEMWgY>7p8ea)Lt1``8dN{QMn@9=66s(EVUnP&(9M> zC6(&w0X7_Av1yu!6`WEa5RjZgVQp=#APhn@V^Gj3>iYFo)nUL!1JQJxp(tcDWZM*M z8nj;t2~$(DWqH}}&txVh&gpMFiqRx$I&_#Os*1RC6c!~z(~P7976+4LWPx*p&_OwJ z>(;@6FH0d7FvcPZn0ga%wpkk;ttoL!IeVPhUR_<4d7*Ja5G4rb=Q@EfRNy0gN{x(+ zP^TE5W=~I{VuA3HdvkLWbpPPs;K|7eeDQj{pZiM8J`8@qlu9-$%xATg4u^&g6*ru9 z&`7~a6Dzssmf zB@n`)W-vB?q}S`Rv5AiI&-OYJa)Fypa;(zwzY`thn6B@6x0*9Oyp0`$^}i2JAoiqG9`O3)RO`txe<|3SQ$9c z{R0Dk`A36r2o|FpiVE)6E+Omkw_udCG=n86@ z%b0;l7;NFBWZo6a)@Hdnnx98??AMLL5lhhx5R0%-;csZ`!-|a8*FU#tcPQhY;K?cSr|9pazyJAb&t|ac z*{tiRCxw{d?9*Ycwmu2Hl1Wk(eCG~$Hp3pjL1l955^q#^szOFdp;YT#!TJb*u4Q+qFM~S1mKL$xUgB}Wz$gTo5Jh}sxeBw8@O z^9}}H6bt!l*9trL?%mtL*REmcRXZz|t5uoah9dJ$DxUevBnT8$K1v^C3|vmGtgLV` z7%vP)UX-%BYz|Qa9$bk?f7I{X&z30BxueW_c$Ol8X1#2hK8So>>Gk^L zF#}UBsYhxZsYw&}i+i+ZpmAUIq@dD{zH1W&Xe&4z=coBG!suHFp=cJs5`?g}j?1MY z*p$Um*#!omvsOw&OIibh#IYF#-``V^IcHxuLO$5cfPmDEg#{%V9UU9bW`~DIqhW~$ z+l-gO$zS~97n^yiXLxwHhb}_*hM`z3PGXaBEQ4kHq{Nnp?5wgbh*`Jza~TY^Dm#$Z#C0)#C03ve+W95I@Sm861EQmgp2x}5R^LD?yd0CPLI^%WHm>mE#fvAi;-@$XR47hGA5)d)uq)>yotcVs(43ky>A0PZ_Sk4?p}c2E1>@49gK5I4ue& zAvlXc7h5Hoti*yd|E7l6y%Zt*9>9MD@S)RG>h#@fZAIhXvf!bGk3U{0VT;9rOWC8H zy}fXFYkTJ?%bo7+?VVae6W{*!x32~i2Td1?=p74ht?&;ZjQ#{dXv`z%%wWvN)EeL+ z4zhL#ui05sS97^sv1U4fG+pK?1V~OnWQ*qDP~94xM8GJh@?%D2vh!7cdJ*HJc!$Gb!I(8crmsB9Vej}gkPi4(7#}aK zTqo3TA=EEc>b%ca1;XD`tGdh)@xp<4iD-F{FZoJcXF&ywO?b=cWRU=mH4vL1sHcx}H`$C~~ zI$fxizje0SeZVi;GWyYsf8xUa+KWrhynYaBhDvUy9q! zMuQcgI7LC2_Q>{#k87w0Kpv+JTO^`%)VYuj?hfxDDIM)_jlezce!esOuOkc<;M1Ch zeog!aiI_sa7LI49Ef#bJdVKP#ueSXF%KFMi8se3ym#a%Z{pAB1O6~N;g9rDY=M3Mq zYu6-0an)*>40;b-kDlikh?3sl$dpKc3?e>$^OR_AMW*(5PvXE+tP`vO7fwhjkmvQW zZ~$Zp7%qoZ574Ws$QDPh7v{3_GKUGfAF7F0w2Pdl6;aOQ2#!yaBg`_@r8fO7+9VF~=~-d-u21)?NL z+&Fd(%hb@*rwQlgema{yp&|LPxtW!utU|8=PU1MbB2ycalWi;Tca33ZNz2&fGmZf4 zJmUuyA@A+mgM;7w=5KxS$?q8eQE5ek3>8kn0E&u!&%f6F!*WQq7Ku%UJfzZEU)=;^fi>*ghYy?*Hz=(h6^v5Q*YbpKf1ir$f@8dziqd3@80d-gt`AVLg)j=ZnyI^GW2R?btO%E#&0x? z8m(dC{A-2dEjZ4t|`}0*tgm} z{UPx5^tAUO#v)+jb6~3siJpAvU-@6+WR#w*5QpLl4uzn7X)RW|k zH4q#kOeWNd+hm(19oY53{hc^t;Zda;r+qg+`Z~C4$4wU~0^8e#qljtKH?Q9s84fx~ ziZM7mcH`E>^t49&?+kKYfz!C+ngi*f7EK2JB@=QCyn*Ggd#VxVM(%7Y1Q-gQ8fU0aF_okFHI>bWt zHd$zPi6=EWNLlW@_n(Vm^p}Xl3?odD7pxHq#o%UP;3okvVFzC;ot$jGI6OW+&Z{^u zFfb6LRo}ost+>19z`8Dn3{)@35 zgETb24}x==fAFP@?w(Um?BX66>+|^_O`SRfB}-@(;)7~ZX4co9o>Qpv@a4;w@KCTv zk}6GydX{$&H5${?lW$Puc(i4K*u^F$Xs85DV%`svTui}d{76lb;p1r1Tl9L1ZR6W@ zJ)1@Cb6k!SfJ8=Fr~=dv+IXT!PBPWS4?enp4`0|!0u+#J$GQUyuUu|uAT$uLDRZ25 z1ke*xp&ULjA*F!yL2UI>+2&=LmBp8P+iMW8s#KwSFDx|(7Mo0sOawYd7%lJeQ*amC z%Iw17^)7I&BfR_gB7xVt%u9D(wH>wclU!sMMRt=hMMn2N=dz<{RT|t>fL*^Q2#Hr- zN(`P9g#|ORi*INfF_atxZ{!}s+*8mWNr>7+pu!(53qlb&N(vT)PtZTd3`5=lq3GWv z{(o9Ymu{Nd`a|pHaB6FR5O4G;sMhphbr}sNY&*LX=5k+u-&6DIzCtANM<9@8G=Jd< zo%?<+HgDRc;FaJ8J)GGEDrXfEZc3^Ox+i1W_{_C_0*=t(W@gx2_Yd~5<#okQLROQJ zh#>qKK^U;Nd7suU=f`)krMWJWp6UX(T);c#w)q=;Wud}8oJ2EE5u5vOIoA(7?Bs^9 zG1+l^<}!WY&Qwix^544q10-_%hX6jz*}#Sm+J;AZD7ZoA7HI=P7A6ww6*((OX)ra= zk0+q=9TX;Mx-+7=duY=j{~5tUPT2;zA}t*BbCpBL&kff}-n*7rc#_dw!&lWaonpY; z%%qM_>*^{<$!1!v*8%#CbGUeiXgyEMS(+BDjMXY+M*x1G~m|Pm`0hD*5W=KMIjN!PyI-Khg^JH4j zU&0yu{EEHp1g>`()%C8`#m;4?)7n%_xk5RcElb6s1bX^#O=i}fz0%XfX^BD!OOiJm z4rk#B>6XllPE0~8*qd*^FWjDI>c3dSIKog7@`BG?wgJxp1D;iLxvF1P{R&57Ea>uD zypKP)dH-y8cef8p$mMb#hC+u5M}jPIDgf`2EvUaWBT^x)onz&;E+;^B zfwNtoZ;LLn&FCTp(Z!CGrnbw?OPu~znQG}EQ_aqN%yn4tC0d2M5l|7jMkJw?@9VQS z@|zpH1vkohC}-tLrEFUKey@Y2ptVoW0J9%MCZxY!Etk}?6Yc?fC=&tKW0cziHf>(1 zp=nwcHjAd;WjD*2%}wQ69iGsu#bOnKY}IuG(JU0sLem&Gs+Drh)N9}wPy&P_1Wth+ z$rgrTbnwvXvWJ2JDdcuRA?`Z#gz=rM0qy}}g;zI?Zj$(X6rlhM(FGPa&d$yn*a=3s z6BohIEs}JUVd6N2O+&V=Fc59@*VS({F?R3%@*yqkw#6h|Sa z1*8|{bhhTY9>wT3;Z6rUe|{euW2g?@_OgCi2d#503@PkQ%t(j&NSy);^5bclpeUeq-iN!hSrL{M1=Fm+Kq`Jt>;u%== zWN{WRp^hAGyykEbVW@~@Fa?FFPLcl2`=JbTpNv5-AsD68vuAF2mO1Dp&yHbumI)rg zvv1rN=ZaMbf7hX0zrMK0UBAAvv~>3ig(3gDNXwY~JLcicOnURnhlean}r~I>4-@gcb{~8(DA$nXZ zt681z1tHjPtH{xcH~`cWwwdbAh7@qKW}^flw4KBB{t6YPApVgiv7xF4nE(@`jN=Uj6dRFJBZ)_teee zSy314HptJ{YPALppMoeTazya?qJXq3UQ0a(J}3B64*g_*74E5R9UrTZ{WJ}|UX@u3 zM_X8&xctAJiHW%xLW=rJq&zvkWou#F_^6R&EPTFjD}o!CJq znGEbCJ39*>GyIR4nQ_lj+cUez%*@R9@y^cd4u-*T5;I%2n57o<|5pM#@?_xnDk-bg z>MpKVuipE;SJ+y?@( zuX8<3o<5yicKy23+F$4z^&RSJZgzgRrJy-cfvk>6?jJvR@OabQ9G7cljlXh*)ZegI zV<}J{tM&fn>qB9B|HRIq zwpUU;fm6X1aWuNMv9?xgWr#8PUYIJv8;-5rSTeQ0wliit4W2#iZft4NIfM%^#V5Za zOnab2yZm%3odvYr1W?O_k1hjm6ejO#yxL>sBV08T3(J#JpkmV#6K#aEvxSGo z62rBEymz+TTb!P}N^V5>8{`I&?YB)2#gA53$hioAj+`S$droW1PP0Y-Ec!PUNb{=(elBS%tYKF zesuFAmOwMtW*d9Z#_qvmd(PdSmC>Y&OQEbs8qn>5p>>o3rEQgT>c~!qKD#bh)|j1+ zXH9UQJ?jzpt~J3sIeBEM6Njy$-m=xvX65HC2Hiboe)#axG+<)Wm&{-JwZHb)e&rIr zpDh-F7#AUgj1}t<<;HeVgv|8DjW_-Ai3x#%nWRGe$-nz||L%!^@613JPlL-G@d^>; z+%V)vg~GXWZ+_NFmvEE=4oBc@x&O@9zIL|%V=G-|d^~gN6i+2pRVB(N5~og8*D!Y0 zs-Lyeb!;qVhuORZgv@5!d~knplh~d-&X%yol(IG-#+gZI0DCRn$@I zoubgJwKh`UjV9vj)6?m+cVx^+)YH>bLjg&W0z>Hb_5%7^AyYYci7 zw8o%UZnj3dWS84G>K-@rcKg^+?kC*LFbX2SsQSVSFQ`RqRkW~xQXCZDwB&N9PTklm za;<{&80XIqIT;Fd$S6)u7O!TrS92&p4idm%s|$L)mNzVZe>9425L+2{VV{R&6Jyn6 zl27N(OxPe$gFtF6k40rVm&y}e$4;wbfasFk?xB{QRDKzqvKEV#!_6g78|s)#K?Z;O zexhR~MH2UJnoT_6`CP7LAz#rWE-+!cSW;jpWf=yI3d*t)=A$U2M!L&paatFavUm#J zIcy=>rw^?T3#pWt2apPxk)#>uQp&Lyv$J2$w~V-k+-|93+Qp-2C|kW$ynNn$WWnV= zH&e{ljtsl3^|}?wD6$+xVUSI36@}YHAtQob!CVdVto=R%ef~nHAAz%o#xlint=dxT z_HtzgxAZVWat7(3RO4i)J1o0TW0QK?En#zeMKfVV>*?!p*~~)33aYoBS4JT{D3bH% z=fZqpH(QTzqTL&opFBqYEIfXy(fjw0d-C!iAtOa_*u`81*=BOhA@t5WQDG2GHz?#b z-}`U>?Z3UZnZqjzsYJL6QRdyOb#ASdh%$n98#a+L+EH^k8DXa!VoT_XKVYFnx%xu< zN3%}q!<_@)aLWCq0?)s9dviW9E`-Ojj;K~jqQpTl|R+h z4ZXp>fH~q)y#4)|x8Htyy{wEp+ZQ?TL4qs^To`7RKEf=}@87@M?2uy$cjdVh?k2ql zwP9MiR}=>arJ}gz>85bv#Dq9DX4E-wWL(`iI2ao%ErDxWDrpw0Ro9LY7-*diHNu8G~6{QU@DbNRaBpkL=X4lU^n-+*4IDFc(XqqJJ{db z+1glN-%pQvy}n>i@4z5JlzfI&=L_EcfX#8Z6J1@|*-h;xOIwOMbaujH6F$q-v!8dk zJ+8sA@$rclUsv+^bZTRLb#>|8pDB~iWdl0c;Tokoaq05;fW2BRHi+~jq=osVr7MFG z0r|Z4%jV_UOK!{K)r=`D2sXEW0Hf{eUth{b1dR4an=Nj;2Wj=Qb@~NLU-+q^yZl%# zH&%Mb`#s;|d8Z`Y9r`Kl@AwzMZ2kLE*}2#nD$rfA7K|Y_|wYWox#DK`^rxbvbX-y5q5GMZ@Ddtix$}H zI;nHj^Gek36Qk(lv#gshZf#xstRZhw z)s+?U-|00#If4B84fy4^G_jk73Sd!YtIOu``PSDr*S0^p{b2LSmM(C0(2fQtcqTw$ zCq0V33-)EZ0!v%7&Fhj$2D_TP5H{I7-q8Nd$B$OC^B|~U`<>-1v5n!KF&oK3C8=Gg z9!3+`D3_|agY9jf&(4PiFP;xLO}wEv-3TgQ+JddjX0C36to_WO1&!RVx_maNCi~m~ zyxR&pTbb>&1a1fc>lR1D_UR#;phsb&eoz%`gGVy@R|Z=girYnaDssHQ2z@JX)a6Ma zkckPhM%>ubyXhL8tp=V}l-z?vC)@kC-s+%JI1P#~bf$KDO`$vf}7^LX#oSNGO% zv6_DM)wE`5!s1Ofg{yIVE#ka560*R``{G46$wkppZujx-)-gzk)Y7BHN4sV=*BH`qx>%Ufcx)51bISBIsUI91 zEH8)Q1CGV{9yJC8{I04#c;GoT<#(&qS1(noK40~gDBjW}4DeT=RSSbOed(&t=X>d; zdi~O+Fn{S%z5ZEf^Uubx``c0}_m2c_3T!ov{)gJ-3+4Y1Rqh6U1TvrZ5@*XheSJIb zmz4*1gqPj5i;4F%DvDu>BC$_QGf`ym*jL0)GHV7~U*GP2wrXOyzaoNy3v(m8v(?wH zHqszFyW87)_((x24Zt5^2&Mg+6^Oq?JXYkHdfrbOhDLcKf}Vc!RC#xIWXLJxAu&Hp zQ<^@+MV6|;UZ7bdCy+NjyWI!Lt3%di$MJm>Eb36eT&>k@c86GJ7{s*R^rEL)BwmyN zr;(54JU)yulY4b_gu&<*FwDq5)5ve0XM0yR1H|~)zGpcont#2S{PR!Noa)-Kt!^)q z$?W{Yr-Olwjlkg2Kiq*##`S~F#Z`}IbLs*qO}4 zL?V$YNdqlm$-c%~v>$XJ^B1UtDwsf({eaB$yLTo@SXWF7i@aQW9*JZdU!7 z>h)6T%$dgnx0)_#en}&LDop;^yyehW-LP05KCJ0uXYx!>{Th-We?3h8@_c8ve~fL$ z4DqaO_YKFx^w1YRk^l^@7xP0KqDuN>X3~7iKFH>BM=s=v55rD-x^0Bd4y0-ROn`<86t&kmCdD_T>aOE4cMYWQU%_nKk z-d@kKV-cPw^?F#nu}^|nD1u}kLV$rRBfJSL3T`O%+*ZP@gff)bXgTOkPtT6lqnE0p z-3?j1+b&j1x<2d>bxdzvbPNx_c_jB`9{+rh7%4SfYGFx|y5W9SU_^^-$z8`JSWfG2 z`W91(I2bzclF$nFxa!*=@aR^};}~+w45^<3m|_?x{mH?Qxr0=8ASc(e5+iYKIPUpw zB}^6~`~q1ZGXKbSL%RL``|>3-F<&Axt$y*NUwQ|hl^A)~*z4U3 z9QJO@W=J^A_}6-W6z@+Co|GVU(%1?N46t-q3GfW%jsw7}rPan_>3#CS+i$C#L@(86 zj-~51@~ljW)rTvhI%40B|6q7cq=ePvNCP*;C>eH2iB|An%P}S<@Esxp#un5d<9QUT zS<&*39%=6MsZ$d{^lWeEb9%Nk%VL8`xepU^mmNsb-)SpI5nOBuQ+yE%x+JO-(X72-lRvE<&Zcp9bHT z*&nsQ8;NBf-@E9}+;Q6;)afCT|V%$&^BlYOf zxasuiiPL5RA|-}RC?b!RRif}+U9;YW5>5}TDYGv`_MxU#k~y;QBKEMsdcGc%b^vJ9Io@#0|1w$bGj1ln$P z7VtLbbXAfQqa?kw#Jm?yBrDZ;*e+Z80GW(2jBPD~S>zdu3R7ri&I;%+LuW!Q5#|quhYz$C;`^v1#)45q#q5sDCM!SNuIOv7r?bCEHA32?g}H|3lEID~d(Icgdj z84CG4zTR`i>ts&(<&Bk<#*4q~m%ZrbB*m-<95IuD__PP8;(~X&S*i)N+yI+CgwmFj zqBV=G7Tgfq-v!Phn@n4Q8#hc+pm4iD%lf>aPff)ZY`UU&$p@ixx#S1Rm%gNg1>H=N z$*`zDeym#ukNs#eyNA(!NIrJcgf>-r7Y58_0I2)>?V}eEa8DNdF-7MfpLui`A+?Ak zHLWzIu!(Jd_ld(n3XzuO>6rB^U%CFmg)5`zAdvi|Y4j^!`HFRKdFcth;U2B-F$*Tm zWwqAt?lCKP>C0c!Z#4rG-ey`Ix`T{*+;BfI;zu)Grr!xmn-+z>7C=HMO)a5UH`3J9knkm4T z6OiWqQ|D)1xOR<`jA9!6+sc!>_g&=EOazYo6k_5Ln|Ha~AL5Jg_(AkAx(MM5_dzdg zKBp1J=56|mmIqHVswhf|%|4*Bt=DgPl0nLl&E0#@p2a;KY&H}>m!7v5fb@m!N8Z_< zEHB$^%i=`(?QbO}#Ol=cI~t`l{3&|^cLzsnfBMwE`;V4}f}5Mcq2+(H3z^JrfB&xg zhg^@>yxz6Pt{-wY)9U7o2}>hz%%e2PKPOk;YjK?#<2s*VQY;UBkK%{^MVXQo@7XMa zx8o7g{gg~3AWUdVV#s$jy0*Y-V$(BOu2)V%ARJa+qS*N~7c6lTLQ|OVBSAB9yX8tO z0Zz1BWMek|fNkz{h`Sh%5g~k7Xv86nh+wGoU@yM4w6(ppy`9NGO93w|PM5>$CEJ4| z+pxWtRi#(l*hBz`D&>V%SAcT3ZcVnYNy*nQH6dT_25A^m7 z;uFR&g@b)X^1*&P1!ApF-EY9~;vVD_GvtS{#f<=hg zQw#O<5@_+G4I4jyzEl7TO6NpT$RQLfRB$I#hU8_+tZ|1_DoJj33581IAPLk|1)z2+ z$|jjqD%onSVMO}s>F?ga6kFIhsHou3u_z^p#XpG^;?fr!^869kfQa?7HGD2e{d8lGUbUjl)Fh5PKFnG~CO6^R*nrw<*zTsSd@C9 z<#99;3-=VW+$d*3d!jqhh4@$`;zl;zv z?XsHhJ;*jK5{9itK5zJ-BlViN-Hkx6*F@Q&4ba@A*nW-&P9{_>IvL2^7qH>Z+HU!S7)j4i{+9(xgE`+2MgCcMRWc+MJ1}=3 z;AMuDRtZVVUO%(+8nV$8%*pU;{cxS>st?eTW^`=@gNq|v+wZfhv&$!~tq_$b&1d0$ zbMlt#-6ZQ?@$+s zc<^w)Tw`XtRUR@lM?){>wwqo!-I(+J4o6tIa%E>FY9NGZ4Q|0IIMrf$%Ee_sOb&>t zZ#Wto8}s#g0#5jIh2X`la!7}P8hTN`kizyCyQy5*^5B6<;#uJ(nWx7+gGk7f%Y$Gl zMb|chK2pl>FM~WK3xy0UV{(S*f$HB`E$p=%nL&SAZd8qkn-fg|=6}DixX842RYqaM z)?2#`H&(Av7##HALo`V9oQ?SA<^dau4Z@tz zIZ2A?oQV_HK5~fb?WS(flxLY)-1Hb4%LzqA6V`AIVFm;G++aGnUi_i)r^AwZ(DG2QZ`gp>Q6nLIM z{=-Nu+TDJR(b#o{GGsLN2pc04ibx1Qm|3%GZ}OXTprN%jX8&K?AJ94LR$-9E6oimf z>>NmH_u>6iJ7iO-t@l5~h27;V=k=L;*fRf#0~+F?M<2UKo0|fdsyu4 zW6Jk8&qYoC;-2iy8>K=a1sYr>s>f#-)Ziox8LQRl^GcGDN+x5;T+U)iX>ZyjWFcUs z!qbqh)Zvr2S_efEZJ-KbEXHImEotZPMd^PBA>^e_>CsT}WZfKu9Mf;cs_)0_@|j60 zVMZ_^a#U!_~JZ6Q_fV38i#8It= zI<=yd`h6CWVVY|^rF<2lm>LI*b_`5T!~lTY1%D-;K2yVQ1S!ueShLL%1?9)@VERzm zLZwoVNR$|qP=2nfrhkJ_^4FPnwoXk2Ns1m;Brg*&gXT$Y2p?TiEp{Lwh=`3kVGXQE z2BwM%?;{SQu)S&6jaC3}m|c8=3+=z7{-4y_^Vd4VyX%bx z;ZY!-vcd_}D5VmKeTXh{W!_>d*-Mp@4h*>=iYA-2(I|b+M*6g|(wdL25=vfV^Rd%% zQYKS{mz&J~J_>U8FQ^7pXW1GU`S!f&W&kkE~*WNHM z1CEXj;*R`m@BPWPef_oPmjP>ZDnqQjY=N}8T-Feik6HO_+KOO76a^W7ZFZ~n@j?nH zb5PKgPr=zsyTL$<5dV{tb8SQD9d5<;nr%d$q0m{kNt5T2ciNZ2By77A|w)>mu*&6G~N zR2hNixg&DZs>h!ol>9M5h|;MCnnp33&`5-faHV275}?G!EE`CMSvEAUZ6wRCKVBz= zBXvsZk}O6PQI_h2Hc*jR>nY^wRxfU$;|qC^4|6`gUzdak=B!!!)RqZ;QpuYYR$kA8Cdn|!@soLMk^ zdi(Z#V*7?*WI!F>H~xp)u$)a+5E`7#R(^gn^?Xt@m9c<^xwtOOAKR5o3=-1AjsoCF zqsENGRLm}wFb`7&A_pr6+Mls+{2B|SgVs(E}piRag*EUQ*Bl&oX2P#YHq66YLyzLp-^4xro!ji2pI6(VTE}?agyTB z)|-S6bGgS)-}odRWmW|{oo4(QwRrtuD@S-_q}XgQpq1s%!Abl8^8F!#&RyH6py zv!6jcXFnG`{85zU#|R-*6oDc(V=@^%K9T5&t(~1BWMC01C06u-MPN>53LJB!TW8kE z<|^SVtoJh;@d)3jBR6%sNX)pU5{8kcke-eRA`whNDpwa&Ur$fKrYOzAH46zKb~+$9MZ2L2>%@%#oX-kDUAP@$^6 zL_+?Iys_bMu&DhRIS|<0Wl=lE=vkk^hBP<>|HKUk`$yC;DTGD;4*S=ABG@db3%T}6 zozz~@Oj}zHM+G#k!2Gq`yh+~rjzH*lG*ck3v(o^2lhPBGkxJ`LVzbSeS}(FBG^O<- zxp{NW)OwGl@W0^Q(~RabYTSPJ$A28c)HxF2zVwyXu9JvnKT4=m4^un2xjAy(_!GkH zciwt?RR=+_9vMaO$g+oh4!aYH!8oLdNYvCjWtFpA z@I-AbXCLj9BF@{lZ@%|osnQTYK$NR5UY?oxX1CovS0u2z=Rmu(ZktWQVKvsM&o{?m zW2Vu=!@1V)0-=b6%#*;}Ji*;AITnQyg4pJ$$)pj}+_9983h=Vi#aHk{$-Us8p_uq` zG#Uu7sPT!x(B7W`Um1o}VtpNOsnRp@)EV|xe{9?L7uZ{Btu{T4WA}QOmn|0UOSL)f zTl}A_e@Xii|C{Q+ruMhFfB5DX8-KL%N9okmSIK|FzrToo6;d%ghKHY=6a?+#NMUNz zJ3a!MZDU-x-D#Dv_WW~y!R!6P`02B!U-kK3WuL)EkAj-UGq(CQIV&%n|9CO@+hwOHcN;wotCKV-@YuD^*=L}|E(EV^R z6k60ctb}0>M0Ni8`LmV{F}1cB7DUfZy!TD=9BcGY5X9ByiUa&mdujV z8$w}Eq|Qp7O2iIYE>Qg*7Zy2Xa*_y~A%r|((GwI5PSBjJ%DzCb7ilAhoxSJ*o_q3y zY{KhKr3lugoQmyjwp0Id$NN4jdymf^7+^dIJW{L&ePUftLydHJxV?`on^m#VLXn3> z0JDbk^9Fb)-sU8Cdict%&f9uKrQzF=?fUbCLI{-Iu< zMIt#c2yw!3nu!vy4T8zx@n~J`K1TqVKxV&WZH{zsW5L0e6^tx3F>C^r+%q$7ayu>! zb5DQq7x`gxmLa)`4VxDGocdrZU4@lGEsev7PqZbq2f|XoULfXlG%Q5ZW>V0c4X-zs zGnd!P=3LI}Z8%OlG-okcuP2KZk~6t@-et;RcsMKZnAubn-D1^bj>RkKt+YnExDDBS zbJKA)EnNn)A&!qoPxaEW_Ggauq0AD;=Efwfp^~iK@j2Hf0X&bu)RGiZaseQy~jy&0bO4pDlB`{Ikjf;^aHEh?=jVCC+7^+n@)EYwG))QUTjiw z1C#9W+=*4gXc%nOXdJB?m)cfE0k_xJnm>oJMB2ePeG4nrc79GcNXB;)VIi>_PaZ^+ zB+7|`ZYAdfj~?BD@`Ro52Ds^yXA3Tbq+p;o?CK2!C8)}}s?o8yXyuzu#130C%jb1F z^3BapGxxb5MWK2JJEf8Z%HV{nQhHhyd(&nwZCKG5bX2&LZAdHiEr-oh8&_;Wjx3xn2`PbpcTW} zN{i5{6{u!68G4m7nR}VujWa|c;^AepYVQkr>~1$XZj@7NPoCa}y69ev`p=$ArSmmW zbue^!@2SDQzO^ip%hnZGfhcv&KGhe1{HU~t=MN1k@S3+)sx@S{Yv_4xCbefL0Sjkn zWD-;K#HDlz8J+egKK5JDOxJAGT*Pl(na%!ANs(;#aP(65{j$9g1A84GF9W7QOremGFpS{x`@C5o(JIgyM zZJw(Van4j&y|r36>lgjZNvnyJAQ2(fxz4T(k&v+#7ini)q`l2WZf+iKAnY9;?y%3p z%}uH~IAU-nhd#ER2hR@m7LBJ}!v zJ?zsrFksXRX@pF^Sj=bGRiSQZD)(R^&vAlGDa?^M>zVTrC&yz~8;kDug!~Q@XAo9a z!$_nM42#8Jp9$!|q@i;N!&XJH46~~tDT}hYUBO_bl!+BmhtUt;zkNI6EbTnnK4{o% z3lF!;4NDzOq&?4e8NFlqwYH^uy#d(yq8eUo(mj!}fsh~E=W62q3^&hN@#>-Q!a&YTE~*(|kKsP@f| z|LVpXUnm$ho56lP>BA`h)I3Yizr@LXU}m-q(njJ@GRNj}w;z~RSzCW$bM)xjc~kz| z&g%IupRa0v;Thh1V7tSccTQde50Ok~5*7`-qcG&zTd8SsK3_1oTuMQU@UgtbJ9qSk zgT3LlJ6w=_|0+70pEzHZfPOOa%gh%?1#JUm?Vwm-B8V3Ko)^Va?S{+XHn{oA+UtwXqtAEJRd#BM7`B25PZFv3iL zeefN=DXo3<(Hhdiw?OpG6HmI`3(@F;yP3s2eAEF*H5|jYqcq(ex>ow&gN4G?tBUEg z7AEE}Q6UV*(%0DDrgTRO^Ln9B4O8qJj&pFd<_)0n4vk1*BF%T5%6RnbOvhi6qUglQ z#6@}{L5tg)n_Dr?o=Dg=nZh_H%adwE!LHm*coU^fpt#RuDnkSqi`A*BjzjN`6Y>K@ zRp(}zi=a!Fv)PDrAK`(`8s?+X|NNh|E(G4Vy0M{}D-7zD2a+ib*`OerL(tc_V3)}` zk%qmnupnt~m<568Wfn>xk~h{%9GGJmz~rSqun}u(+Bh4GD^2S{r>)U&;8Q8AY=FVo z$Oi)XHC(J^1A#1(QY6tN6RxJ~`G^xpnHnH-=g<3u;x0faKHtZzHn9&N6~qC=#!2}D zyaKxh5Q1)ZkbSzm%gb$goMrSl+os34+&k|8&~)$KgG^ZEMZ>668^m_@{P~ET;~^9| z+}jNXJQf)o{Wp8v?!?*(LcCImv(MFp+r3e+_aQiqu*Gn)D|=yMX^C{m>BIMKf;QVho3mvrwlZ5;**ev0`sT6CB(u{yG4l>>mpli|#uH;8#bmbc-W>?XKG$ripyQ$+}P?_MM zBSZjs92%-2JbrAqg9GTcyYEQsMn=MPWMt0T60tEPEQ?2yJBDq&e}B#jA)7%dnrfr3 z@8IBnLt5wBGo_Q(ulY4$?$`Vp2;aiO*RQ?y>en?l3=m7X{QA1x&SJIEsFun{Y5)Dd zALjo4-zQ%*{+RJ~?(JV{O5fZNJl754a;>fP^hBeiRwEp*wXC2BMLd=c9_9Ae=}*1J zWPM@!+E3w|=B?Ih)k2}2Dzg;xrmS%XQpa{~qa7QCR@>GpzwoV}uVk)V$#i6_ z&xma8tp?TW*IxcYeROegRI@XYH@KbV-~Rrik<`?NV z0%x%f{8{yTt~BDIb7E-3zMen!mXCPU+p&N9cG&#Rzm08-jBK!|c{@X>P^{IQ&XYsQ z`D53^=GT7I;kb}ov|?p`$*RrG4xx%@EW@4>&73Kf1%li zx;&pGJc!pEi?y{y*-!;7)*8yrcT%Ws$UhREPnYXzX<%*9Q}zef04XF{)XnIgbk%N z45cWB5{49wVkl|dqe2!4|L!~QX0z>4QEZM1*&wx7UwifP-c9x#lPW2GUYDb=o5fSQPrQS+8lL0H2L`q@=ha|g(K@w7wx+C$h2T|U zwH|wvXY`O7Mi@+87@za%!1A)K)<_KW#twTmjdI*KRq_L6UhA?*XwSse z)i7OMowv67xkLOqGxA)^HL8_1m(dL@qX$?9ENb3XYoT&Q=QB%&=56Ki_P8D^*!RQgnlMYZ&CPlH7AK6RH^+Qqo9R)3+wx(F zljX3WCSuv#RvT6_{tw)-j&0C{6Z(B3?8Sd%)aq8_Ai2u%8??kQ}e~LsjcaE`7 z`Oex?V(e47lgY39bzzFgz4rR`*GPoC!Jao5^F%s}4#$|MHt!T66p@fulV?s(Cu4UX zZyg-&uid|S_tE-JG@UDE4_6i*FYg|fnT_g$<-=U11ZC##@}v8YcjD>9;nv#I+c(~S z|EBh8i-yNy$xMtL*Pcm1znMrLUqja!Hw3t1_p_TJH^k(mwG4tCA7q}8$kxy?RPldkM!n%AqiUfPM3J96hcgd!4h?acX1 zN?+SfWb*N~#Rrd`Z0sE5D)kb8EE~J=bioi5T1Xtk;qHi-9WJNpc(8Ea;a)Oo#cV29 zRcs?>K`&$u_Rx+s&d^hbduz*2kZUQI*j`&%xPR-`?aT%38f&#KwQ%=!@|o*=&7fR! zp2Pjnh0`PbOm{reRv!EC#nZm_9x0Wv`wRAfE?iq%>ivQ5pMXEm@u2{Oi5>_qO;(## zfTSGFRw|V%rF85NB1gEo+1h-1XJ=w~bmzgs%Erd##^zo!GXhJrH1@)|g3dALgv_qM zWU~1Kez!N!+uz^YHvl!lHLTIh?(X!kAF2`W;3-_68umT+`s}G8zrV>ZFfYq+I?VHY zVdQWNt{!&cWqc{MuS>Wt9&WSiM3K2iIN4K9o8!Tg2lp11cMcMTaP=P0S=o*CK6=Jn?r@gqk=9$!4T_O-9s{r-{Du)YJWxVF2$ zJ$C)&7hZnll@~8xnz?l8+{D=UTug-Jzs7pR`8@ltQU@3K8Regd3Z~!5a%dNS%T$lp{FMnJKTC2IHMV=`CL|#WMVWSUX&8aEY=S;clWlo_Y*~GVnAW1T5kwau~62_DNquqk~a_h zv3M+=f{9B8Xu}dTSJ|q>+$lh^!cY!WSL07Iffm41p>irMX!|0qoY=knushZ zSg$3K$-(`24SO8qjYmU*P=dUu1gtfRktihW&9&qvL>Kfde zZ$krha0ovcP*fTE;mV55CiA3GuN4!~DD+a>8|yH}e!770@b1s-pBkIk-_l+!$99(5 z7^Ds!X{C8xuC}JfXs@FUTk1fVtRY-aH4#;vHTZY5ZL?-Wm&EvQV84wLF4k?HxBq zv|K*9eqAW{1)Vn4?jJopKIn5=MGos#pufkbN*wsSGO@auUbX~uMn*TeY__GPI2y$2 zQ1omvldsJVi*|1i=H8VWRV>b)!O=daNmNv~A5{GO*~zo%Z0amH4J_?$y# z^;+YlcNJZZwFO*q=m9&+ghlUesiYKzjugv<vlkLcG0hB#eZ63kYBa^}o zJI0Z$Zs({CB)i9})xNP;baCKSJGG%bRLV%3R_>nmd+Ih=jas3IKXAcK*yjkHunXBx74o){@oimc!LM znvBLXd!tTMqb!eIF*9Z&Qz?5;phkM<>60f30CoGgMzLf_oJ(@}or1wDp|dlmLiUBl z@BI8P-N}~1G-wO^9_-|&LbMoPe(=DM?L#lVaQSr5-q_P#&Zc40luE3uF$Ka#qNEeE zD=<8|aO?dK>a|8gy7A=kZvOE*Z&mE4&zu{qZ^dA{yp`op0*8RSMVNtFETjf{P^;;c zie9f*i`k#}zF~`O@p{5EQw{qro*r9?72%iR(u}!q2><^dt-v3orz5dzOJuCq;F#^& z>mPlT%LRk4zm6uV5#i5S7t$pv^sTov>ahH2()LpG7xCs_W^|)2!*S=Mcu@iq z;Va6_PJeJ_5P!J}Kv+B5eh;Z-)^Hrxdb*fmPRW-(TEX8^rD(+)eY|*x`N1H?0S239 z#~^N343ooZ)QP0jbNe3lQmOG)g8e3KIw3r$N@ieEOy%U(fp$#? ziJUp_rb*UTIp~6u(MPwI(RcA;L$Rrr4{k&aB{V)UIXTjAQ7|xjr-B$X7@kq&oundj zX5`ehYhEvq6I0i(Uq93D7HVK9O4$ll=xWvAnbmT&n!vcO5GU z@e!wyK_(f)IXZ3_yrKOC&(pm!kwYkANFtTJr%#DN7=@r=vl};UBnyuoi7+wdU#{1Y zQqx^y(>V+>fQlO#2zIF7?E(>+ldT5F64{m2Y|Rdwti6_9TghhYHRk9MPclc3C}}dF*;Zx0eufgBlKp?x-hs6@@e{ z%3EG}`g%{6zLR>h2EE;7=LHJASe-jSL+}UuiIQt(RMnyGqS>3hX^DupkQt zmEcKB_v)JSsIWD?UCxddZbU--<>jQ|%Qs1P(;GglU zAxA!1;z*3rSfNxZ6fKq_i+F_6Z{o2(LrBMu;^bhBj91 z9%lW`B53@fT|ESD?*zsm0j*@tt<9hC1Hgo}0825UEZ*tHCHfBz{44^O2>>^cwT=oA+JLB^J`!67V9rp2|M$+e-!Vg9&92L>*QZBUOwE@ zC`F&%_(dGb@QXK|MoW#xJ#fCj<*hwkymwDKWsr>xT?b7zAb$YKEEJel$)KP>)Tosq zvMARKSW+1^ElhqyBY!hY`}@N^9+H34Z1qd_w%6vCu1OWbHjTNoc))kZ7^f-JZH zYFM3FoC{OPHF-e*So7%Wjcz|WnmRG@^rO#rOSkkGZF`ui`87B!(TB zR0W0*Uw!y4%b0$WR6C*T0S+K+9hjKl7P+2jbGf%{n%3qlNRAw*$IgVa8i$7#pK8QP zDpgByJcC4u&son(*_u;6A;S&ZH_7Jd#?z;b;=-;{Qg#-!`DT%O%KPU1Qje;I?Uc~N zyw6uKd1=8^Fg$pI6+2sZO3qqVZui1#XxZz7#Oon#;?fQ+lHhT`;W7fJ6ns~Z9;4W@EQ+?({gmaR!9ye)uyX*??MkdpTWhN%X>ak3$z9%FE!5!1@ z#FUl8N_IuxUWt(ySs`29RzG|q>2gPiS>u?ip*Jb4^bzN0c||FgBc!Hr=r!C&{~@06 zB0Sii%k^_AgnlYVtC@Ime9%ra%ub5hhDPIu6{^h%l0mp9hRqnfVa5mE(^V9B!ek%>_G0COi6aBr;`6Dlz zzhMygg#kzMPDbr#K5A4_*v2jZkXL*9cH*2pZNKQqxU|18khz<3u-j@M9_wp8W>32= zrthWg&Wz)NHaI}Ic4%(2g|=hS<1kQ#)uZTeh&q*^X)%RHMnWcbts9cT;y~-?YMR|M z7gzU6cn0^6o@uq=ZzdFxkW0Z-D#-DY<>9SG2yT6o;8y%jhYeN6vw9_aI6OJ1=uz-E zk2iLcd2nf|Tuqzva->|yt-}q`(`1cz_yazt!)4|oo>~JtF?K#&pM@(VlZhli2aWkl zHASgqa(eaR#bHzV-~oKv-P+;A26Jje1x`}c`w!Q10`o3@woho19j;zx*~qFbbP7#= zs?TL6>7CWhWWLgfc#LYX5L-s6qQwTR68n4H4pp2#mW8kr493iL-fXV%W|dXPhC!0a zPEYx{>JHx9sdBE#scfdoX;wC0SR|Aq4I|ga&rK&{xyGDre?KK! zeUq$}DMn00F$55n{e6h(TrfROrFwe6pe?bo*BF+4ruOLed+&YtBwjG!Q#lsRfS4ml z7R)Ztc{oaAR>xD9E?yWmSF@`NlHDbiH3*Hw+};NB61NH2s~#BuW0n;y7F{R2#cL7- zpHC31-u}}N8%+-M1)uSe{6fb^GDb0fuy+aH2otBLd!G*)Yht-3wfS5 zBzA~r*)~fZjyL#hHcgJtLH)Iakh2bU3fk!Kkg86NjUx=WKxb0%vooV|Et5omA5~R7 z%;pa_DOFX?e!oH_N%625fFVl^Ed-fR)7jgEgBf2}+05|f?tbt=o!r*WuCFsQnC)HY zM<7FHm6F-%QcpI^yeV{Q`pm_dS1tqs;{&~umzn8|X6d(*S~-*4-^Wm>g;Ae~zr3@s za1X7voG4Y$&Xn%&7o7kJhDrN;$g->7~;)l`enm*`XzzP%*-8e@7CipL^KQpF&bF2 z6^mkhp}ugJ<3oFa-4@FHcjMXLgY^6DCX3P_<>;O#U?$9_zrhnZ5Q;~O#Hrd%VR!o{ zy)F>i`DyO5-)nb(f+LF9aYG_|m|(LeQT6+SUMrJ5!n#am$55^99)iQh^sK=dn^Lb6 z(H0m5S|T7hBuV6re024}14?UIqru7c=1+FXfpv}6vz?!`%VIgfjAG)3L7_K*8mJd+ z28LNf6s2-}3zR2e7+kel2@2IStnyxrHE%-UQ#S`(vh9ATG#8J_=Dt&tHy z3^O~CFfrx^K&2~0!~pFH^mqu9+$4#EdG4zpY(=*Z>hJ|pNaiDizQI{t*0BFUjKE3! zITw5MeuB6!oIB$o@rMtzH<=jFXndou-e`7tDwC2Oy{KWYV+&Q=PL%9+M-dWp=CxX2 zUaX-9!(WTg@@1Vk#38#wR+3*|Tg?#WoS(U_U1N;G@Nl~pQ*G>@+h!w@KZxMYW{G~V zzaQNPjGTW6w}>F9LYN1Nz!j#A+MN68S{#NqK>imdh9DyC86LKRT1ZzAE@#sb3G3<2 zn>NP@T&7a&+XkO8!NBnUAdLUqy>s_8r55vJhCilL8aab*33Jom?wm(t?LGq{%q%7{)t6%-^%E=c$=_)q=PU*WQeRjGb{psas3xz9jI~Jq(6+a$Os&Xs+l{PjKy-< zd)Z>iXxt@oD~w~v2=GGPxKq`#v}Ca^FIz3;vPJtQTdh^=7r*8yo*qdJo6Wl|6 zlt0||uQ0B%V6~~%(HAaVIptUNs)^n4ow|JGm6?!Q+j+F`aI?y`Xf(`RW0;N1!gn(h zXGyiv(CiN$t!!p}=Pz8uidf!Wc&LrnYs`C$D3?}m-T3z798@Hp{(z}gS-*Yz?s{4F zOuhKh%jW{JHqPYF4TBQuoce~MMNTMJ?ogfJ!^K4>>7LXE)SksxTtOh|d zQh>lY-}G`s(OI;ry`gmWoy>NRqeN$rBFw~?({z_X!L$fzc&%of%r zR`FUDjiBV>JD|7g@p9PvbU&U!=IJ;b9g}i=9rt(Qx$wx-z2p0*dOb{3Vew%5$JsqW z#`k;d90wJKYHBc*gwqa{9H?gV5EEB`F_mEwtkU#Z4EVyHCNo@|@SU4CPuS^@v^Gb)h+R8>(0nT>vqHR_PY`%yj#6b>%x9CnYi}Xy0U1(1ePgo(DSWZ*;CYp?7vvZ~zVWmVF z_dwE`s4;T+^2v9hXWZP}ZREZET38kyKU{D~dnwJ7DV4^?22JP8JGiZ%I(shRzUtCW z)J5i{58nNNc?;B@#UYz&4gHntuUxz+idq*Ex%+L0!?VA=Gw3TC8mWb$-8kh4RnnR% z7Tfg%Lr)qbb!Mj{VFRB0FyTHv;Smx2VmX`s*FWjN(f9VB{MVUtnw6eCdw6*69DVR0 z5P+q&)kvxr?iJj`UATKegU~su?EBGwv5j(Ai^W8u2`O~B%w|Kgn#RxFeq1mLkMEuxR~jcU!2=$L&1x|VGA(2V zCIWh97bc95>6%O%dz@<9da4bKpPo8>dVGBB)Oq-0S4(xlWRZA*RC4f4Je6LxYj#@K zL4Rt3ZD71XL`4Z(IgzX852Fq%SB+At4RDo0D!O|6!|y)W+)TjiC@;AO&R)23=9J6I zOMO%JXWBc6N}3bzzwg=E@!X8ZZ)zO3GO6**EKidq(h})QaQ*c!5 zH#R-yvu)cRJrGUO17|{Z1$N`a&E``x!}<|7j!1}t1s-nPRZLo*S%yUD(zvE9T)(a; z3*@DjG=2}{B0?|R)joczAF>o7ZR{=df+;6UWLzx2J^em;UkvS$3*>HhKI1l9p)fuZ zwK0cUi3GL)OLNKx1_;;(?--k!eET+~7cY*E%{@P#gt>1=-4O#(GESC6<@&-)O?c8;z?pz>YOuDe?0oiT;a~br5wV@XosWlc* z?eg?=`8v@A$9Jz>{E&fK4>V`qn(@wjwWTgo0jZb6x(;h%{0gsrUESHEE4M6^~;jmTm|)s_(p0 z)uid#O|N%r>m-d$Aq_KPw+|3HzTBKHvjP^nwY9lf@$LmS6ma9Em&ljCbTVI;V}%}q zE0c^HhQ0harAfuwYsys^bWwm?cHe(h8UMb)I*l`Ge-i6Snh zZ*HNeC*LqFn1bA91u1e@oRdmglk~69eg7*K+|mDQ@~v&RcGBC_Qzn{cl61|)t;Aw0 z+(a-q0gBC}2tv~>zsWlRL9ZA4CGMohsByo4oIumNJZF0HWMH5?F!1Dwp(#u~$L585 z&gAt*qm5|P>owZ)cVFjZJ|~X}Es7)Ot*iHlxN1E&V!bbk4opzo&MjDmriaAo+`_tb zsF~*n$n!(SyGVStM1aVnrEJ}1tyZ#}V3i7mvc+61=aqUnZ!nQo!i$Re765$qy8Cs|sznVo@yRe9>H1l}1jNZS_)4wVd8il}bL#n^+-;Y~%Ae3CWlWEz9LRD2=KV zkg3$jRzxc(R-V{2e@*8J;1m!8m_=g9R#lLy1}{tDYi5%Q>MJsrSiHpq08qmazzjmV z%S&}$0=HKyl_*!w*CmOsS4#zhl42bYB@x#1HA1CIg~^g@+BFqP*90P{%+H%>YH+m% zry@mcc7=M?tWtxR>mtRwirFI64H+5bi&c)6i-j5|OPpLa!aYUgP~#cr*UFX{f>ES__dceMs1Kv;k2PdRm%u`3xCj_%;{G=3UPbUR>a3TeEBtJ`lDMX477rK-i`b)>UZBHA43SZU5`S9o5BKuPC$#ctOuKv!5)p41C@n@yRs7V6mA z$<0_V6xvj1vUOsgMP<$kJBPTbkZ2IJ4_^naK-KqjTd`DcH0q_I%}QufJKuiNT7xCF z+1#|=k!5PFa~7wCQ)N_MmesBk`DX=Dv6-Z>In?XGwBs1kB#foM$Y}v6jJ-e>`FsrC zisnJUUPOY?asU7$YGCt`FO&%<2&7TdL4d4sLkrZZwGy7J*Cm$=sBj-r@H!kavm1M! z_mh1$^M0bnPFVa~v7jYSt{F%QNPWVgCM_-H^MH7^-?-E{ zjf+$5H9*igMsqovRnMf@zOmNO{8q_GW`IURM_Ft}gA}U<0j;!ZLOr@C@L@+8KbHAQ z$rWVhd^;sx^Y3T!4ktV7LJ_JJi6_vNRr0a@{gd`XRv&`jx|K-6sYNQA&w&lDaGKX8 zp?$duF)6iT3O^kjs8+0CUZ%Fk#@>$h_Ie?GVjE0>YF@no9-5A)JQi~ zXlg z#=^oz-i&COni{m=E5jaP%twT#>)tR(UBtw&VJ&3T++VO$bRgG08;XGfwf`R&XuC!L z004La49P=a9#9Yj;F3JM z6;K#LUsp*GWl-NXLKEA}k7$7&wiia&F_>m&V7Xn1wRSyr*j>11AK-<3g?IJ?3hgia z107{;c~-VnS}Za&6FA9E=Qnow|#k}$Dp3+ zndet}1?i36gZiqkHd2u`N>ToeQLIf;lFd*Cf&m5y2FeEh*Gv{idjmlbZLyh|nXf(@ zLU43nI1b}yHZzH(_8Y^hdTNK>Qt1{im>}sGx`rMoRhk{oPD|O@?6L}_R9?xhOUyEQ z{%6YUCjE!$SG+j(5|%BzRE(#5S_BOz@q`$Xzeg=9ysD$#)y;@93Pc7kc6HCobmsVj zTW{0dlRw~D6|6G2{uME1bb2OwAP8|D52~;`Itn58PdBKBdc>{7OvEetN9q#1eKxa` z{zwf~u#Qs6X<`L;Ds618BYNo0CYtIXnMS3~6F=uZXcB&?@DCMyu}TB!HqpaWd`Gnh z)QWr5ekHJHTZuRQUT6FTzm9YIC$YgFbt?WSo3*px#@V6|Rh&3MnR2)-^dYi*r5=0F zqxR_-XW8!&?n$h@qub1nlM%|?(>GC*DM8#gO8o*2P>%Xn><@aU!<_mEUJW<6G@*ZE} zeszlc9oIUAF5@3%orF913jaB=g5HGe>)#f!N9A|{Op^t0Tt^ayzki;!Cq1op*H0@5 znNeImGt11(%uXT*Gcz+YGc$8yI%ej}F*ECCTJo#xRQGhhrmt#x5fIbKt%}U5S*&C`i`mKh zY~n-q`uhERk$3qr-)0}*<>!2fUrKyWk(Tf`eNR8r4E@`mMQ)@!PK(_M?gU-s9(GUY zYWI|TS~t4q+)KLIz2&~4JKVS2clEOSzWb$KcYlqX_C&p-{`zV(F#5DU#(jcO#wcTy zG0GTaj507J%F3+9gM6DFziG#0zg0_NWfjqN!SXNLpobm3=>|ZQWZjnJQ>HPlJf7qE*YaN~^U-Yqee*v{75MRok>(yR=(J zt4;0d(CIouXX-4St#fp~F4kqbTvzByU90PLgKpGKx>dL7cHN=7bhqx&{dzzT>LER> z$Muw+(X)C>@9I6huMhN*_Up6yvc96P>TCMCzCmm5cu)b9vD+m6M|rMnP`m0&NPl<&)K^Q|+7Yd$33D%G{lL z8T2IBy$5o8a^EfgRqngtb~7M|z7F~!=vPp6qo4C+?&bU}2vX5ru`S!_?JQ)^_A(Om zFBgYAcc}MgVC=5Wjr6^&KGYFuR&;gz&5B*Ya(m*>+qWU%e}h@k)x;HZfI;@gqb*`q z`r36CIXvBl`tDs#{RZ>v-JZ%nVHRXBHLD@b8E~%oY0rV?x41nO-CMrceVbzOQnM1` z;xM4aa=QImV1)UN?%QP}iet@6C|3Rt`{r}z0b?y^NvNs(DbQ;E*mUl+ZVroo2uwGB zpi6ScR=()1A-J+{Tkhm;A& zWxj)!K;OVOjMK<6$d29{Dj}>bNo)~=o|bl^O;N!gnpqvSQddt5Mc*XU&ng5HMppf6=t590n(@~=A1c_;D+sC z2boWHkkm0RlGlk;_ac8}IE&{=1?Q8(G&_e&*g4^r1I$ITb{LT+qP|co^6}gw(a|_ZQHiGYwGkWzgpDS^{;j(-EnuY@E5_L zvRkd!G2BlSv;?NcIQHM2(}lZ(@(ke_K0Z@;o{!HG9u)pENJ+_T;ep`+OL<_9Wtdx~ zGEa%BMV#C_i$N-Ps`V;ef6VWIg%Y_p`~`K(3eNK_w@YpYKuerg&qo#|k*|wHxp}~1 z$NbXPack-^8yRXNcjbl<@;9HeOmZfH@^ax0Hs`|B$R>1hvOb+Yo7PmfwkFZS!2t&0Js#T;{QuP)pl zlv^ch8r-5;%_S?HlzLT#upc|~687==+IynEaO_T86AOFgTD=)Q7Iup6P_Je5H|w1i zh zGHi-f6}%*>URC$G)W0CPWt=r>EeoohM!6tGpeGN>IK$X@8zxB?g)^<&1w@+v3G1D^J(s^GOP2=?S)|(zY zMj`9!t**VYWm3<{z=0SSalK0a4rr_U&*o&FaGuZUBstrFzKKS1mH_>P7XbxyuEUm@ zF|JHB1As%KX=VHOtIQ(xevsKGd*U(3Z1LU@H!d69lUbnNrc8(A1z-+ItsUIFX9A$( zai?-;!Vp}jd#g5e(^oqWRI@)u>m8E*Oub&|+pSk&y$R`;)Ekz*I9VUfEW}`>Ejd}i z25=q(%Sg^hZ9CR!KqqOTfp4+1o(k8OZqDs&bHpMciM=@;dXoadFd67X%|dOrRgU8$dH$@ddx7})xbe)rVIFo8K3Ojsl!%V35B%UMks-?tWV9v6_~ zNuH&KF{X?<_I>g#8k+uQFpb6){fuuJ1Y4Df20F{w$_P% za2lQE71*CUc#u)1+~k>JTA6;#w__N>Rx`{DXPX&m#<0VTH{;o3CYvej#mG19em*H> zCR4&1o?yjNrrAk+PD$%#)|9Ye=1>XyMM?WdNjtlw&5_!DeNIOh^zb`;Y>eglp2rDi zoQL(yPkiKuvE!#b|H!iZ5}+$S*)sfC@>_e=c*(k$hN_w%s)?fN;#HGG^@-=7NId2F zr^3}d|IG67yJ-lsWH;3(Ag!nG`_{_j+?C6@%gVW{A?L1+oV&Vu;zFKrp8~-c;Eyph zVuV@``*()575qhQ2j4@@(&=iK>!(#D{r-iFsG(!?0r2x=UWH!(et8r>0Q^ey{}a9u z_>J(qV2#e(Z!N>`r1V#!`Umi9;lBv~0{Fe~pM?(rf3RFm9z%qYnW~SWDKiK#VZoj} zFwP?d)YiWZfwmaa0lA<1S#K(}FZ0~YvLTh+0e_5fW|S(FiyWmB8C7)BF%-n08L_iyaI@PX0k^0EkiBYn-Ps|&Jg|H$1)7iem$o8 z2BPmRrGb>XS{n+dysD9?y2gA1y=Y^8004LajM4*a1qmF);hFzF)#jmWjHd#D@07ChilML(X8CnsMvy+?6BNi) zCucXqQPb0Ni#TEZrO9cWHoMUVlQ?H~VR{yq{AaKFLvL_<+rrY!Jnq?aqxtpm$flc? zmE$S30cdr=0gZk)A5g#(Hh#*~6Rao$~JHy&!Nw;JUzLf%if@AtfO_p`Os>(6Z10 zIKNy=+Yi&Y4-ernJcZ}*5?;ewcn=@p3w(ngX!J3ZcQBH%Ok^sTX9javz!Fxlh7D|C z4~ICxRk=3T=PZ}F6?fon+>871ARfkJcmhx189a{{@iJb;8+eQEb`KxmBYc9-@CClY zH~0=e;1~SP%mNl^@s?_7mSaU$W>r>aP1a^z)@MUDW-HpNwx+FXGq$14+M;b{TiJHD zlkH}EfgA^MupA?ixn0Wchh!?g~QBjiYFklkeuIZF1Fy<~6MMLd|2Pn$IdYEMPU;U@T;fTEtqln00Ci>(x>=fNYlz>69)Q z9%i>zkMv3(3{SCNt5KSy8OBVuXthd~OvnI;A3=I$P=;h!Mr2gR;F#ZH_$~B3TdW#l zacZc=t6`R)hFhWCsD@cV@f|!QEk9aJH<&ljX&AuVGtu&6{}%&tbui~K4!5c zw#TkG5GUY7oP?8c3QomoI2~u;Oq_*_a5b*M9qvE;r?$!g# znBzWTHiZ&*E^X+}YPNeuC;GcHy&24CCfi?RTIt>WJFr>=)<}W1$^siO3ic0SgJ?@v zS+XqbvQV4cyKU*+Ce5$b>fMv5ZZsLj=n3ZD9j418gejp>6$V}$5R6{95T}2He3moBCbQf{vdG&1MQbb4S>ry%X6Gmy*9#3M(H{tRb4(<8$#o#W9z)m`>}OC;VWH38!gb5psOjQ_w_{8PB&ACoQt|AswnD;^nY_@ z%IT`Wa$QFj9yg@E+?1-lCFOi;V7YFOYPaZ)z%t$C_^Ipf#?k5WsO4JZQErTm+!ph? zGbR;%VK5^Z&s05>eD4jP`;Z>h{o(UK_&ive?!!ox7+qsuF3=*a&`S5&GiF)zOg;_$ zu5anGRy)o!alDtup_TmLkXKOiANjP9@5=!>x#;PdtGJqLxR&dukMku#L9KHrp24YTInP zR%?ycYMs_=gEnfDHfN)<(b>$naFa^+ZDL%tt+@;K(EnVkAM>|q_d66f$1hH+s)k~i zRbX_-=m;S-Cwb&AO15&HSjbnQS&-Ajb+H|`)BJ}~h&^~OE&l>0;q(`H0Zodv6#_v3 zME~sKZaErW0hBHOz6o*a=wfh8txO1xk3- zY0zT8h7&#lkeI+XTdpn#jM^nasUV(f%*)S z000000RR91000313BUlr0M%91RqCtis{jB101V9x%^8{*nkHr@W-~K0Ge7`90002Q CLkb=M literal 0 HcmV?d00001 diff --git a/frontend/src/pages/fonts/GeistVF.woff b/frontend/src/pages/fonts/GeistVF.woff new file mode 100644 index 0000000000000000000000000000000000000000..1b62daacff96dad6584e71cd962051b82957c313 GIT binary patch literal 66268 zcmZsCWl$YW*X1l87)X>$?@vE);t4{YH1mFe0jBE_;zih3)d=3HtKOj};a$8LQ z;{mKizBoEx@QFoo%Q3U|F#Q_99{@n6699-amrKppH2XhZHUQxC)koh9Z`96Da}z^j z06>M|%Z~L6Y&1qSu;yQl0D#8RSN+!)NZ{U~8_aE--M@I|0KoT10055byf;V0+Ro^U zCui_=E#qI~`=w~)LS|#={?)gfz?a>x{{Y1Z*tIpZF#!PdSpa}6(AxtIw;VAx60fHIlil?>9x#H)4lkwAf#?OoR zq}|UH1-_GP?ro-XFe6E6ogAsB_lMb{eMTseU$Q#8C1b*`2YJE2UbHtB7q=F#8c?(} z7MH~UQP;KATrXR0jxH^-9xhh?btgLZV8`yP{4?~5t>#`dU`oKckttiKqS}=0h)-TL zm0*m)Fqi`0;=bZIlJL!*^OrHroA}Fuoxd5CU8V%At$}@aT%_Z<7=JytQ)D?oC4fu; zC9haKy!Hbi0eF1ipxzXiPt=aQ5wop-RG^?s>L>gO@@+lUXG(XGZgCD!0D&Zs4~^e% z(4?{(WBL;9gTH%!vIjaaOL4-?5F%AuAhqP$}Z5*a}4%FHO z__`OOSOe6f$5}vgbHKxcU-p9ue+OOu{ZSHabi?^-WyLLrt+h>i_s0J8MO%1(?6KJ{ z63srC7MKwg5YmV8R^udkjP>c;o0jS%3s1#VZSd_ZMMe}<_%<&|(8tdaVsob9SlD{! zxA!4>pO-DKVwcU1_Qs8{!D!x(rP>~w#&w_8M_z*m4KGu9`d7DfIq*xDA@Pot6Re`h`d%{lBo3am-vR=-J-SO9A>&egV84q&m&9c$A=5 z%sfs3V4GByk@8gn49E{h<(XwIcWcps58AEdX7(zpG>h`7(%)_eh+vz{k!pm%BiGC` z_=5Uzd3aO%4=d~2*uWjw8`-E&TB2z!BU(IgE;XDXw1NdI?B6(MBrV0BsbKgOQ)gVq zTiiW$Yclle$O3+`9mkU9lI}kdXSxZCVc3#pUpLeJh8n71U(M+H_oIWzXjf>?Ub;nl zgr}Vj|2|%YuvXf+F+N$AD`H8>BgpF)5=3ZV&6AF!QO#3~-9`j5fsyJ#B#%vv4OtoE zoN*Lf4;gCHrm9!=;fkWSwnDPm>OzFyN{<}u3vWw{2o9!32OW3*>roJVbmjZQzlG(e zE4}U2iH!Q@$Q{J!?*)q_&o{ma{Zw*#>>xizG(K?ovKtF`xdX~MyHu+y&V2B#8?UA} z3)GS+=ALKVHi<)w-QE08#-CNleh`G&y`sLDidTfmrv{gWy`!r=i}Q2v#-<1h==FuW zo4*3ygV;zyKBgxN{?HQ@hj_U+#I$gm{DHH5VFhB{&2 z43OeSH?8bW8=avoZjrZrTVFiF@fH_w@Xx3vrm3WK)B*ir9HxIFotJ&j?Ql0|_MlDW zFAFtz22CtP@SyIE`u?GZ)=dVaum({0Bk5$QOjPFeR;d)dg^tAMWb#XR zx1N+SC{!SJ|LgCF#-Y>9V0n)&ec+ON<`=rB^tflD@PO&5dd1P!f>fx9N5?Gz0tYaF*sLZO0G1fGI zJBmO(<#@h+D1mjw+HK82Tc@$VtNxi% zE|8*n7FS*<*b%&+mElheV^vn-j|^j#B3O7EpDyIt*oZgUdgrVD+nieQ%oCn z=tvim?Kk=%r6-5a5KYn{cSN(c#);ls)$rs z$>2WG89OeQn+$u%7X^jeuG!?UPZfU>)k2TT`WR;^in+~$27hvw5jonPA>KXZH+n=U z-HdTmV=8Uz@-l4RwROKIHX;)pYhnQ{-gA8{I9_E$1U2#W?a|Z=G1jId8eMbFB2X74 z`tO++;x+F#xG;{RF=LA2>8C&>LFr85=i$Wb6{aFrO{Wxnxot^AOP6_d{#zLQ$rDOh zmx8VSzye=SUQ$IMq75xI4HXEA59Fnh)i7cO!uVPQIAC%WY#)85)HZ%qC7?%_55Ys0-MmZ(mFLWpk4!|Q@tKYGc|M5aQKvdmMnP?P5ZYRPA@UcNk!m! zYM=N4>}|X9#ViD-@-{OA)mQFn9XsaS7Y9(?%-TyN$#35%!F`M`?q#}XOl%HVhbwjt zCD9hq%W@?Vb7iv9#SQ!^zs1Ahj*)z0u^gwJ$gQZK>LPl(dju$D&tWsLLmc6KaS3pr1Z2W;DVO|v_@95?1- zMM>VRwrEw^(?(cgn2z03cSM3w9re}A9@&J-iar~ThaWK;6qbgl9R+_nN+$C===>ifAHw@+mVJro54y_ie`FBKhGpGJfp{7P=$nYHDU85j@aE6xcjU`6`n+UdYu z;k~!=E%i><*SAqRV{@mB5+D#ad!{z`YfsejCwwfQ^S{HX?u$eA4ev+DnZ3iM@r`m+ zLRU?0^iI5+CYyk-JQeAW21GoJm#CuR4}=^0OawIPmLf^Bj+NP;px>mQ@ju91?hU?A z@^6NFDk5sm}DxK#dVoV-L%Npvrr+ooO@;l>4Y7QQ- zdW3cE{K)ywgL|nTIL7??f&XRGbC`}V$#eCsHr>w^yd7NU`;^EDQzm7ei3K5D%lm`+ z_NbNiy=Tm2b-)>1W5&6%wKhpFs?&aw_c-nSe6$OHn}oFM`AT6SSBsV1dD$@{#%ECO zaiNNq2pee!IeZP@I^E+v@_!MPqwA4mCt$2(@-z0LcW4k^>Eo>KuM~B@sNL97E6TFl z1)4A2mU)d_2f0GJOww_Oc7q4(mz@Oz)qi8`E+3Ka*{~&X^P|?>khUM&hA! za-0+zz-fA;NCpK8V8&lEAj~kov2%5g?yoc=(AvRjAGX}w(W#TavcyO)!zy( zBwy-z_~z`5c)^_D?7n6Bk6s#PY%1IH^>8*9DYTP!!0{`s;pmNC!t)DD8_4WWoHDid z?f}^jLEV%i`>#l)r6O{$EICF?lGtwyEIZdkw3-n3GcpRG_G3g24WI%{ z$9%gN{?t7?aUhEagsS=Crvcft)p%O>j4XBnA15^iRW@>yZTAu@VcFtzH z7Pjzcy@{m*?pI;}+Li)cVqSjK+o9$8<#htd>v|Z!spzHUXXhL2&VAWwmO>TOz#2F* zLKBCt%h1UO`bcZm61+W2uiv-$*AWdy4%*JD#Q%mVN~LX?P?L)W5)_vf~Eysd%ifN06o<4DrIb zo`rgBZ)aY-Er1H(R(loTgeRKc`aiNY*ov~%7tdG23sIk0S|&| zI`ym(F~+g~Z@5Ak*#hsXsk%wMma1o}98R11$`-WqDhE~YQA+mXDy(Q>%<^37G)?hj z+kV3owb?Lm^=xvbUF5qgnn3}%i9dP8l?^m`M069e_$gUu1G~Si$r#Db>RW?Xxr1i3 zU}3e66CnC_N(ryScVhF%p7!Zs;o9%K&6EYZ3oRWH+nY=r>ML5RV}UVM5LU3?&R^3c z*yGY}>NGt9GBX1LpI6=voIS=^Xvm|6n<>r?b&=nFv_-Z%Mm7gp! zSI@=w{S$c{z45YBG@x~lPoG6l=DOXaZPZVlw2+33otl)CnYysT!Y~2K-zCtw?30-Z z+j4f4G}f{>C*}kX%RUJeNc7CBpe@lm@?8X1D0HyuJA7fg9{pXg(i_i5pHz&enAz99 zWY3;MKvcgk8C$XtDv6Yv9nuV?irv9MVk&VuUm#O*IQgealiPX?FMl0-hGD?jlbT|; zME&f##=f<={Z30HDUKa?&A?`}^JL%n$By&#!^_LLX#Hw!dL^x^o6ADIYq{oZ_wI$f zBPDV!nu9vX(9U=M4q63-<+v6a=_auzKjbnp>~RgNBkd^lU158+SLy@%Fg|_0De54h z^rK{5>e-9~goCutBe7pS^s-`ZU@;qFoc`@|Uwyz__~mA3V5aaYCZ<4e6g-K3SmT;h z@it4I5vQD*>)Q*Fk+6`Eb4vzkclOo0&Bf~(wh1Wr-GBRg!}h;jXKPr10(}{2!1D1% zZnFF}mr~=Vjw0b47Mu_oQ`l$EqB>V3NVJyRF^Qh4r|cIXJIkCIu|e32zE3D{>g4&%2EEepV0ihrnN0lI*h$OJUUNEJ+f5_s5*kt zmQfjSrXy0*UszZofNBGqi063mn#*;wW}5WUXL;JVcPLTyPpbj}@IfE`+)C3>1iy6( zj@xZ`!%VYN^QX6s+4^nia$?ubBc1sgz=wkk0rC;u!2s(j`^WgqwSUq;DL&UAG&u(% ztx2nnfUn_>ZkfgUW8E9g}L@NcOjYNW~s;MKbcH~h0cpk{_HWNdfijblYz+h2z03P3!{w_^F+Z{6(m;mYyc?e=$R~S7W6r)rmnhc^ zWDY8UgC=qhHXPr6E&p}OFapx)Yqfq0c|%ScJfo!5%;`l<0^eYMGZSctYCudt4D;QS zllZXAwPzujN)eGld?PN9>@xFHYu!q3RYPgwD4^+{ZX+R4pqMO?|LJJ$&|pqT%}z(2 zws%$GBS~6_4OO$4U!NF5sidchXC;p!pWSoPq9I=D?mxL{Zt)>jI<~1LE1+Oz;S?N` zsjnlQu+gxjSKXW_*MzO^o#-wU70)7mu(uLfuB-0YqK5E?-e-<1nICGBYERzbSu?t- z1J9I?E{8Qu_&Px*?|>1;GK>itJ}M{~z2zc|c`DfS=_rwR>wbvoH*rc9Ca=CCq-4Jh z+IxAat$A_beud7*u*t20_~6e9o9BJn_Ho1ME|LyR2HWhz8j>^3+Tpo;1 z#OP$C#H+-wZB1(eXsCdjH8Y>Be8*l^l2z0+y_nU@-|33tBxzRwJX*%MM2dIi{#=IoY<7?7I@41JDTMl z|9r8UIP#bjPm~nR+<#Sib?~q)WS#taf5E>&WYVfkl0n+1X*26v+XO>&f<8pb)x%vS;$rMu{Rcy+BTIL?an0i7iczQl+`d} zYwfz$K@_rR)TcHqJ%uE`{3$4djVoPQ;Hn?ilq^IOYxj-eWN$8weIZ>f`k+fXTv4XV zxXVid5tejj=$k{SJ|9C8d_7#uwA^RYU!2J#ik0bpw9U$J7X!0I3Cu;srmBFnZmXU! zu!~xOmIrL+e;d4Fy_Yn8BTM_b>7-kEqBb{bS3=bJ-^ zArybG{xTk8B}Ff%l0yRj=@m6PP)-nCvyy%R%;|U!{>YrP!}BK`AZ-hu>ElmSHK=&> zEupkk&(|o!b>Z|PcSs`6=3@`isI1|I>wG~8HCk8BNXvslF zb2qb{NmN5#uR-97^5i7Y3#R5QJ74sp0$r%yKu?ed&+ivClsUAJZB~9o<~Q6;L}dp| zgxwnq#X_ME*@s7~+yMyT#C>E|gD=JjzeA}2|Gfez+Cs^Y@3HvO`zi4Y z2oH@RhUH`=t1aWXIifih7aEhgjrV*`ZHH6adZ_+ar&ZyfD2E$B z6i?p|;Ppl5a{2F&Nn$CdcSjfBzTQctXYmW#oGbBx!zpUKne^JrV-1O*A zte39UNS;l(F=?FNaY}cPnV{;IWxW<}kbX@ieFQx@krv%HfvG%4XlKg9O7V3+8>hFt zsZ_-g>;fy72bHS{qLMf>2diP8r87W*IH+%^i_F?^Vcf&!KcIFoE=h>1+K_QCN5_s_ z4q#&aN9h^Ld$%bf!>GnfOUhgzxE|*hE-EA?ojuK5A@-75Y%0`lR@w?JsH>*y%6tpk?I`Tui&N%cfoY1R<> ziTCSG=en`fKl@2rmFUkA)=$oTW&^T_;Wp@KWjYX;@4#NB@x@!36O)_Th#4Bu=8*MK zKC=NwyP~_@yce6Gz$)Y@)bwMU2i2q)9rf>$?y76AlgTZUdG4W6;#_}FOmo!8WcV9? z=tw8waqML#6=2IOVbtwANc83v@=3>m-{G0{Ny)8;7W=g^yEtkE^>yoYbICa)d+sE5R5 ziLK%3zGNws91-!M=Gf<__>gK>e=N=WaVosXzjacH1QSgiHH~f)O#=+XaX|Rsy<^PZ z+N0swA*aXW@XXfN_}RltlFet{@n-5?bzS1KAire&KbctG3g4A!B3yFxfvaUB0=oHU>7e+qgGXcrRVL zaJBKZ_7?3UZ~OFGJ@XP}4U>$LdyBF54(1j_{1m|hWwpUDgwKj})AR%%l7uYevu|w~ zkBOe1zQNCkzkSc_-nZ%ZL1wYmEb(6jIMU>7Yg+K%!3ogU`%s>|sEID}D>#`ArT1Xg zY3DbPR2EFVq|exiDiMyL{;h7zv1OiG^7pKqV>Nm=z2UX6`q@g1l92J6cc+a@kZm*I z1)8d3#;T!<7VjIabqo@eyQoJ)37|fr}Z$3c;pZLeiyn9}` zOV#On7kX{lo-U2XtHNsMgs1tS-$8(nM4yol$L~+TU_|hSo}B(aT+{L@Qqtw>&LoFVZ&5)JcX<|jF-?{%dp72IDUzD0V*CKhi2*j^8=68STUt&br&iVp zT&BuNStFLR+Z&i$V42R4;X^c+lSmq13oJAc!GbaOKI=Lp0;>JnzgjCjp67xP4qg9a zdR?9CTpwbT3D8_T3Xu@c7&a8<3RUEg#=nkbg0w+8cqc?u^a08zbMm@Aj|2z%eC+0^ zql|__mJH(p_&ZY9I9)`pcdL0P#sxFdeI2ZfGdQl2{heylGP}w_1jKaz3a+xS@%id) zUXNpAXIJ~d{kp)a&3uJ>KeBkF0>+^h%Q=^5J_{f0O-z>PK22*&cP1cXs-$D9ble+= z=~ByXN64k!9VyHHrr*1R(d9x1ns%vcOG)`V zQ)GPJ#*rwA?dc^MkkKtXkNRsa6q5~dJ6-YNo3j!4o!ms;ejpQ=^?m|rTJiRsg{K^5 zM7|8=3C>L;f(3o71q@ZNtzz4^=Fuj+G^&VWgU!g5T&)PxJb%5;=Q=oV5ZTVL+>-dx zhhj@57~9XMJMd%ThH!JwXU+%2)FLU@1Uk_VOT~m8v)Dkv{-tP3(1{W3lsxylL+)Ams{`mFkBBHjmQA(dV4hlVkETa_SZqb@%q znl$-FD&x1SE-}P^LFZj6804F6E=n>Fjh=Og^ix@pmsBrc;SD;KvAb}^#tTq|XnPVJ zpT2sEeG7j1wQD4@_IZCbtQ+%9$cJfH+nzm7ZuJ_=8dWlMMAS=kbX_atKBec%d{?j6 zMT6`Wiljm1dZ+vZ>{ozBVSFPAiexw&_`jBDO04g7sG4t^{7&T_s(;7^OJkPNAk7EeNPJB+3 zvnI>9baeSf@IPpZWe^9Ev^W9*!{4{x=I31$Z|j8kg4qYeZnj)K>zaEC-uPo>RSdLE zc5^nm$Is!d8}Ln;f6P3~vKgXj)_-B2uSEdl}Se4P3<09 z^@w?vWg%xH_Jh8+7{G4dT9PLFNw#Cn%B3(2XpP%XOtP_Pkbs9kV z$Q-3kxGQq+N6qKq^axgH)t_hF!-n7lva+Iw5CB1Z-2D814juglNK5g0+ch`iw<~fn zBWiwk;dB}#ap%1RpZax*IFkCNe69y@xvGr^2Afgy<;hRjPZ&4)J9UVSLbPd*Li8;& zj#t5gx0#(>uO7y{KHFrUSnY5iQ0@N6dsnw_XV|c+=cU4sBcs8D_UkF3q_a)o2PEyF zbx!;+GWe_i*JgQHGt(zo)>&;KdH-r4|K=fgzy_@zMbL|azNlnsLrvmF=z&Dr_F>=o zOyF^3ZU?9&s$M>Umkl(GgqVraCNJfNUCn%G@b_nHt!Eto8>uzL_&DQ#UKq=` zEOCp8rf~adZdQ?Loa}6dzb~63LkY2ne7g0#S%1Qt>FW9*{J};0(eM>Uzxxx+Jc=Sw zNbr5M_&QPzoZD-!SVIZ2uWzT1bQFtWLBLeutjw; z$)QUUFgL}$slTMW_j9~~-^lx*3A=|OsaHGxyolndAN+|6ft0Ht44TqVo7R95)TnNp zQPr`<3|W_hYJ{+oFnY|oclbRNqpM?1ZI3)7DWPW?MC-KgzoKB4o$cuW)CsOirDD1w zYu)U^(;c3@$p6$5*I$McZuo=gLiFH--|M}MGVvfh^UWW1Xk z488s>afB{8n19#I#%Qg?lGX-cA!ZQ4>3`_FPJvUKpF0!VF%u(QnO~)ezL2D@n4T!J z^TLk=W9ioU>M>iMaW}C(=-VESzwQY4UB6i(J)vX3hlOv*D;9`p!YA;Jo09ZALCS0x z``9xT+*}tmjgwkb^Ht;=)Ha!3m$Ej3da-!tbc8;59KaUhVqo*5YWio)fbPmVPBcs1 z+E63@FJJHMU>@vmiQydDtYDEDw-;?c`FlUhl)EW~JP2Mw#)x;w4hND9y52uN1_s_U zbd_D{vg>WVjMxf{SyxjYYv!SG;qijw`Avz%TbMSMhM?mvIZsNd^g$c$N zjY3h7e`WP_q^S_Dy4f4fx-AJ5imltL_1J#=C9HNs((E^m&@8SiY?#ONNoMOI@>V{| zzt8Ato5|}rgG6+Vlv&z@Jl89_!mE$lDYbygNM$O9HcfPZ8)J&)hQ5)GD`$Pp07xQF zz?AEtd23`xy<1Ka)JF^Wrs@gF){X)*UPwPU%$$DHY3tQ6>{Qy( zI+f9}N*VO;dNX^!aO=whm+vK|KxofHRE+nIq|`WcH)SPb3^IW+jjZ=GtMEFhD9ZBe*g4qo_y3(B`47t?#J9n|fsREt^6+oZnYE|O>VMg+UqNs?XySy+NRDe)ZhJ21Dg9^xuAx;~ADlE4?&9K+FY zLY4OquJPQc%9&G=agFz$sVapHEv;W~Z~-$7(71afdx?2z$CZQEcPm+W`E#ptJe_EF zNs=>4HZsJh-4Qn(h6^Ly;cS>|l~Oy?Vb**xPSqlKMvd+md;Jbp5$L(AjPu#&qk;SC zAt$%M%wCWtQ^L+WOVlob&+GL-GaUCk#gJ^FLpSQBfr6E<#a#buo+bMG8I6`=zw;r!Zr#``Y6%cj7(T>{_-N(%43famwv!j2H*;aMnE} z3GVb9&|gq~f{@+%UQ0=%)KWoB_Ja5(-oZW5k!XrVeL$#1)yf?DPP>*7gtBIkO=2|+ zk~!gxywqm20328+c`k!6&&}#+`iC12b(fR~H@v`kgQjgjkhYliLxiiTJFyoT;X5wY zcxSuxt=;A-b_ohLABKbb?a(Jhv(SoLXjJ*6#VgC^Io-IMR~6zl(u$kjz>u4tzd>T> z`OWiT@O8#+O-b3Dj>Cs(NV8K4hT@nw0v)>J!1}~dmAfC&V&Zcm*7+tb&a0Z2n8`=t z%UU0!STkH%} z$Gl|&T*vRGX=^F|=5m3yDO-g-DW8gQsZGYyk=GWZYos0>I=7MG=mlij%mv9*cE`-i zOfyQu?`5;Xqoa6A?@IAVZTZ+GKMps-AN9#tA#vufqKlEtZ$svUYH7;UrL&7ymjs2h z|KJgsm=GK=mx9x=_IzQv$QXlsJgVYsJOU@iW2Aue47K{Mnr(% zls~)ux`ll{bGrQkeB|0MiR_WX)dU3Fd+OF-Ge_2T_8?>Be~_-;ZvT)7Zx!wtQpoYp#(5_i;Y-fOez&Vj(Be{*bW0QNL}yF}Evr-^v_z zz`DK8xp-uCA?9=`PCl{K9OF*$Cm#5y5;OM?SL#}a#eLWpBhNG~@!M4?Z$4jfC!=gm zwl??6gY&C;;dY!;dQ0gQq^Oe0;%f}`irfoFJIxYe)A6OkkC#f3**Mwr55;81L&Q#h z4uWd~D;nFML_bM6Oc{`GjE-N8*A4VR6tbVinQavNGX(AZ9ne1yAqUQbT+waTR?Mf- z(1^OPqjl>UaH%1+UOZPb@dmn)9aTIjh$&r~avj7?&MSZ7ScL*zE({Z&cFZKv6Rs=B*a|GANc994A_xCl+Q`(OY-EcW-Fv$LZe zgIZN8U4pg4tAIGcvk0PLjwhoB7aq8huIOyN z`E5b`yf>PB|DN`}Lu}QTO#It#`Hguqc>QFXWJDlzEvMW0boIu_)MOBy(+b7MyFJ?xJ&+m}|daP2c&rshQpR z)GHe(QM5MdovXb$_%7Y(vrNMUtr4Yjn!qiQA=ixG3GH;1o_+P|hR5akMmE-M*Ms|i z1zcxF_VRVeWruX?W?FoDYr)}h6sI*;r_srH#qEkqTOKig7dN0^n|V^>(b-Xe>rT4A zPq`G!qtB#EBi#=wtL+upix1#Ta)5CyiF1vB6@sz*`dEY%4RsHD^&B9-h4mg`dY8x7 z_qZ?9dG$;j%KN(2{QcDTEikCJ_Yp)=duVdShqLMXqUZcR+3_cbp=_-2mp(`Io)J~S zFAl*AZH*t-rHT3z-tb6K2+XM0&3jcV?|oi06Z^?-6K&(f?2Z{PdVr08yrcFtJ=|C( z=PdRx-g375e6xI@43*Vhqn4SE;3Yl~Psq70Wa5WZ^LtC`1H@ip$VdGCBQf)3_^>k4 zr8Me`cr1T*IO|7V`=tNF%G35Z>{6%pImj2~0Q;yab~CH1QLk2})BHu3Nua~R0DD-H z>A@MT%`-#?+5~~3RlX7mc6-3{YnmIpgXfG=rKza{J>QoaRBXcUsfJY*4uWc4>uX>f z;YN5AT$9%>?^qn-sI$j#<{O|-pa1DOuQJgXN#A`IctZ)`h%a1qXvX{lQzj*xYo&<$ zIb$i9ixGfSF3|K1a&;?++Es`CP>1Sx_`Wq^a^Se*?(=izf-dxS^D=3}sYHF&%Wb0k za~X?P_o-`s4p?eSoIb(zv`qwQMo`-^0!B>BB+T+wm3*IbheA#Hfnr))SZBHSAZ z4eS_C>y$B@v{{G>!U8*7kWc{peLy0kp=;NT3SR=uIp1x3KEH90sVP5~g!6&rn@eo8 z)nZ&OldlPLX+U5!^1U@L)6d%grvfNvT7d~YvxXx0yJV+JW z>V$;VyO-ZZvijEI@THu7SJuJ(+inZ3f0%=5tYhab7?M?1VO-R7eYBwUm2FEiVl{W` zZsI228CZIWoMRr6?Gcg7e9e7Bm3{3${S-VrdSRM!kyYZW<<7V>3@JJj6#^W}Q#Oyi zN%4)!(CAN#GA-bbNg-<&troPLENSK6__zm49n`e(>h+4tVQV~{ntLxMDPP2`Nz9UJ zH_j{E7~py=u6`1GlT;;)+-1FmlHe*=2^YZYYFIU}s3x(QEt;e_dp5GsE}GS;Yjfwh z7WJAw0GcYg)F&#+_2+-yZTA@Mp9OM>drJzdj~zNDCUWcYDbb~6$2~;H&5@&3F5uyu zlpzWm>RN&8xG0O4^Ei0%)0XknL?Gpx5$Fvbj zrjP@9?#yj#Xi7eUK;y80gEP;1%|p0ir#CX9vKy}2+TlYwuq!QV4cjgh&3SdJ;^KdA zrd5@meTVihq&d?MrBRe1Lvi)Yf8#DlpkWs*b>Dg(qi}a)aFM=VoUPy8)Vd+T${eM{ zn89PbY{>3iDWyJGZ~XnG9eM0MKSccm4XG;XWQ%qRs+l(S3R&(59I)|IoeUosjNqhM zul>F@wJs_|#T-%vEua08J4^~3u%sFcdd&PM?upyceQ%p7e}XY*D5+1vJLo>+gy`M# zOXV{DQ0gX?5jtyb$ECyt!sTCR6s&`L{8?GvqU`*yxEA@yX5<-_Th;O~_UK4KL-(=U zgY*m8?FK(arYzh(_X*T2IqCB>qWd2pI>l;Cdf9nyNZ6I0^fkMVV=UN4-YDjfAN*9y zuGA&CPxFNRUGl;+pIsOao{pxAW5)x0aySe1>=7zh9G#0S{5Z@B+>?cFp0qknz^GCS z6Bl=f@_agDx+q83L8Vgy6^e|c04=289z#@%)S~3u$sGQ@#O=fR_;%re z{piCv?e+oLQf;nbp!Ya-t1~tpDHqL@F!dX6y%tVVF(E6JmelcdSdJpCHb}2;}aa zkk@zgTc?BFnc!0xqF%uxtrDf|_@ll}db$DzXKtS0nY$x)?oyw_<^k($+OZp!^JV3t zqH5tCLsBDTLEhi8`b=bhnJ60o|M94@fr80rc=m=vRMl{963-HZnm{mC(<||dNX8Lw^k|t^_-o{YXWA-TsoICH6tPD%?-ZfK2mpkDK zHKi;bEQ?_1qCcToxpUrTS(0QyRXrj`DSAkSu&^t51+cny?fdvNZgWPtp5Y=K{br>y z$ueJ`_-D~ANmmIx-c6(N{tjp;N!Vgxu`cM@hv^ve=8GF?zR zK=wg!M(GxY7zq#JgTlCd*rj^aIc%A`z4T~MeoS~-L$7tAqO@8?D`jRg6LZnH{+iH5 zsqdFfY~M#4AN`&5w;;*w=>1y3etqDPDNNQQ&;*UP9xbpL-8+bRstIN`Gjz0UZ(J#` zb5V!yFAQ$C^iF*Ib-~qE{BI>0DIP2a8KgkXn8~2JW=rs(roFg(d+xQ5{G~gRYcLP2 zvpxnoOKx#=3VU~tZyiKjK8;euXsnS*G_BjL2ozE;;ozoD*-Id}SCnyDq>g6J?ac@q zYtQz3*CPn8_C^exl^@oW>{DwX=u~i8@NFfLedDg<$f-MYd#yOQ$?3lZ7x=P}MZ_iG zlJ7>8Xab@bK@qRtYOg5(K;I+!z-N9NsOl+j{(mxiPTW1=EDeEB&S*32c{p8cAq2 zL-QEor6gyn{fpi$?UZdOh8;}^EcDPo46s&;TWsLb**!d-^UK>_-1y-}Jcu(7B{I8x za%>O##Iwe=R|0O=hR*i_5)Ix4L6vT%0M7~P=zec>+bfO`jH5M3@8f!a{m`j4dquPR zH_iLI2iDDHSElfWyDqG48tP>a=%I z?|0#@f`xRF@)L76(_pQ%Z>Qxv6_p$PDKAYWr_i7m@tEFPv_LU_!9@=I=3%z%KRi(a zvdOJ~bDuJ>*^y(lGt6XAHu=?Xk)O;_{6Y>hK9su*UW{^45yDx#At2tg!huQ5gq!;z z=bqLpDqHH1c5Z~|skW)Z2r0{M99}}a3r3G4=*rc`o1JiVEy*8&!Ih^?7cr;?Jipx4 z{0FUX?VG?B)}wPC&QD1c#++01q;9HUv?#Tm-7)jMX=Wt!dmbh zpWusIE@O`jmu8<(HkOy4|CEQLZIkXWYm;jei4t+)W!kBf@ML|H#M>~a`_~=ee(Nt7 z5Lhu5(x`IZgL}P!kOziuX$zKO#1s-a1Cbh;&9=*)O|~Ff4w8+~ZmwOZ^Dz1y@ATWP zV$dx^85>bx^Tde_2v(gX@_Mn3cl{)0J=G5XYOBxqw>_xj1%gLdZBTu_JvfW+f%)lQ zT6o_EhwP?1r+_(RoXlrqNHAfIAkVipcMEJPD13cfBt*f=UozVzQ9$;r(#tyc5g&fB zR6ilW?pNAe=MIEn_5bBVvx}U`Bzego8U0XWPM`I+oCWeI9UB}|Nrep<_p#0X>{z5% zD8~JGTyqiSu5rgWKXX!=-}6uS-5Z-b|AZK}v-F%&S(6 zEPe;|5fF5G|7eKpC2P5Hu@ zxXbm|NgqQx`l7Vy%KtK|P9APXPkOJ%QcpOaCG4i4Xeuyhb$w?AR-fN-UTc)L+T(FQ9VOHyPqPrC? z)grB4n=O;n**2AA=1=Yq=_l0n9+A}L**0X4Vs)YqRQZM)FQPynYW>(j->PDH{cQA7 z;z+-c0;7&W{q09lboEzA?YUd#mE41DMVt~D8t3GsmyBw{%2Er%A${%Hx`|B`HB}X_ zb4WWqF+IsX-IZd>y^L-)bxC!Neb{|%Sk{5uGyj{FKk1Y63yBbEX9|}MiAnBb500$5 zx7VE7F)#S1oo?g71etXDHPL#-%0NfmLs!}NCqH}lU+8C*GAJsH^lDL>Wtj!_RD`?< zaHfiI*blCmi>&wQD4JTq$*Z2GuQTg{;sK5M-B^^eh|UR8=khTgXo>kx50V8|r;inV z!)B0AhurOYjrd+-SGDpEThfjoK7#SYCsMWY= z>P7YkL5+9PBB1LBe=C7)A={TPH?y=;=u%4D>q4$|kgI_0(cn)AM?EKQC1+_ zKtX`)Z&cci!uc8Au;pf$*HS*@=7AL4=I*WYUQyXMoirTQcf1}d?K&q&=6^RNvgi~4 z9t^(us$1rfxe|!T=JH|w3pv*Jp|}^Re$@y;eC*>{b4_#10U`K_`~zK|CXzznaLMSQ zM88*atx|VQ(@>+G8n~djt&3|BZ!4f%4m(OHQjz<96m0ixKXfpY-=2VC!R5^CnxF*( zwKtBn{gb*N-NpN|qeQR=g8@KpQXDmac0nBla4)}2?r)G1c2LXIoX%&_!h&k6Zlxe7%cZ#Cp>b_Z#CMUt7GEg2T2-l1VO(=3oEh!?bzm z&>D)f3*B74eq%kzJ2tBGupu3k;ayq}f_rR?wA!Uivbkqe^h;{{pyZTmMSYNUz2Mam zlPq15NX;Kirpnns63I#}cUF-qq?ssZ6s^~quu%x3Ygls-sb{0Yz-X6y!kiPgQxj;a?=n<*Vp3XayHTD@# z4+Kx|fC>H$%O_?rHA%z&Yz09}1$an>(m!E8bJm-s_=QF?#~{aET=lUZEd(p8bHhpj zbu({YXPZHzKrr?rBoC4T4@#lLdWUL;K;Ark!9`|;78CR+3c{Aad~tXIOpgeA&ZUi+ zmR2VTFF0z@#$LX1+tqA2=K&wrCwY7rOs`~@J&hC>7;KjywBz(^PV7X=KY0fLj!^;d zNU((50g-@?a%j-(qJH@$o6S?V#vV$Rt~eGx3rs4iQ#%^CdhWq<*{n)R76NFhMkzy2 zgK@sU(m#7#K)|0Wm<;q)zB8p{0s5w&D_Wo)z@`@%cpZh~--IGAE`9K=mSUS+>^$Xu zeqW8$3>z9&6tWFNnqJ{Fn?-b}uvg_^%?#7R$a4K>2Gf1aBgbo%X^QLwIP$>pKBkCB zLO%UxlLbl3sjL+HZNntR;+Q;`GOG0Z>jg zmlY&Wc7YiVVHw`nZ>%*#%7Fo)p?~SI=nfO28*T;G_pQZ!sD4_62;v~;%j#8D z*q=JSpA|d$&6QQqBQe9VjC3 zh9o2m;i>M00DtxAVHEMw4=N1Ew(RWiY8FZsEiB`*$`=+<)dQB(=hiOOK44XwAuHy6 zamDmm^V<^NVe~SilUnwr*1p}T=C(|B@1tT~SQ3}{otzI=k~-!pS9H;5pCu~&`THa+ zXa0_`E<-ZbP}YXe~ecQe!#dJ*3NoDRAb<jpsxKx1@jJVeo=*MjpnVj( zEE$NdEEJSe@?tM9E^x};X)+Cdi)Cl_Gr!OJ`%D@q_N}2!8|BRZV}VzIPC8Y)kO!em z{P`^`La-O-bi^C`km6*B?ZZ!WFi%7gX|RYiV}ZrEO-+!B^(3vWxzlZorFZ+20AI16 zsk3?L%H~0FvcJGb8APAmE^m4~a-zvw>U_+;8Ur`Vij3nQ8f~P81WH49EkQaLNWm1t zM7o0H)%p{oIs0dG`uoluD3^0?Iwf0T$HO77n?1>O`-8||n5atn!MnX@D_5(>O2uAz%5r!#A7&QQqQWT37#AdY44R=aACIL%i*Vn zD1kB+ac@8e(U6LP3w*FU27y+5TGSbT6Xg9MdctdOHFnfeh0^6c%2ARj7G}QA9~p!D zIC~01GSW-?fL3JqX^ZaW0#x-9tbHN>hA|#DYRNY)Wv`;MB7<9ZtgUO&xL38?#n?eZ zq9(T;=Yh;D+iyktMfRK~xWASX%nuWkI)~qU38o5S$uN14?kQm(Dnq;Q^F8fg*cg>TA4oJQ%ZRlia zmQib%rxv0jS0I2m9;|A*qlIusT~9EdAgoJq@~=lMuzq?k24_6H&Z7^>VHNKb(zxxh0=$Op<-76-3k7Eq5H35 zhiuHU{rGE*qK5bYJtPvH6!(UZpeL90y+hvpwUK~&!I+-uL&=tfRXk!4fy7<>mg0tM z5gF2*zxlCKh1W~S3>`rYk&WRC+a;pEAN9SXOy{ff`2gWH#@>(9XYxcmc_BIEiJg!E zP6c}dE~s#gXT3(@VPW28<@VkUawKroZ!OpS$FM`CI1r;~oRo$Ph;w5?P;}beNgZMjCx#g4!?? z!&LY_^-$vBc0N2cSQCj6NAI6f>7F|H2m*!)h5|37#U=ZoIu=U-3d-WF%34!MX#A=^ z%z5PI$)x4R;g^Y+YDSs6oPji3g+>0T4J#P_qWe_nY`>vwl9pHQlJRVc zPR1Iy(h^veY%P|fu4G=7Z5WjeSRsYh=RsxWXQwHi@)BLmi+_`^mUI( zU$+l*K4j(~_z?KfLxfLCT@_ytJ?ZMMYwP*yK_XV#d1PFJtFw6I1t>;5UZK!F%l^{B zoxcsbS~yjiQVGh|!N?pHqirr2u0JA1#vzF>YU>%X3OYaK9$z?qB)*g}h(%|(fe9YD z^$pD7c%k>HaPB?O#14wkq{Zp9zD+XCE6<@^w`@k1H=u5Dtc00Q~_-C_jie3UGaF zF7FBlP>@V|{o%B^XZAV+>uOr0)LlGr`=^`Ix6(8T`ycn%zK@%6cAl<1P3K*ujBRi8 z!N)~r8u-{Ah=u5rVTP>-G0~EN*`uRe8YKQ5eSA+7LpC-NM zR!QT<-p-KjZ(F@#BAk=EU80_U`f)b$R91 zh&lcuyf`*4ETc&Jpjx7JH<2{6}dyAD#bMhmt zPI(>Lz@=zngFxv1B>?~l6D4YRAPv{OE>!)`J2ZV~?_1<}%&vLDdbr%N0S-39S+h`~ zf(cRcP^+)rJ!-yW2ejKSi^F63JjdeYhH`?Z+b?c=;Xd+)FWpscIf$x9#ZzwLPxnvy z_CkH|4d36FMx5ObxicOgwbyScPr0L*n;yk+upRv37iF~9@2s15ywam9M@lgmuIfe! zs3Pk`TjHIXez0JR4AVjXc@(8l4M`^$FojP1_1G2fs5i0YmUVaf$sgd8zbAXYaBIJ4 zaPR>700;nj0HD7!AOJi7@L$BVUm!F9U;t2eK$t$@-h6HVfLYCogCVy$$YXoA5Y3@xh)+T_)!ZjoX`QTufJRt&hP{XVFZGdlq$*Rk~GED^ZXW-&Wi7HPzgu`!Dy4PQ3K<( zywFs-+cCOHb!UPhD7lO9((Y{*j!=gcgpO^J>OS7vRtGo$`9d2+9Y7 zHHKGd*OE#6pc}7nLfksM}n%-ekpXs9W2`}q5{ zEbEwW#6gl%E-O^p!L*8bGwJHe8J9zh-kzGZL391=oYs!L)pafLQvMO*Fcl5~V z8P%27S-LGoH!k&H^)dA|?d#{)$hY+~F5J~{>%X@JKrQY*M_fE_)pG$f?6K5069Y9Na~@+#nS z0P-$QE0Apf_%5b9FmC|9JasY(ps+%?<6pynNabOge{IbXu)<9LaVpT3DPEL9U^*=3?(8-QjidsBtc1Z6$#8Uo~1tuf;mQO z%is~(#lMW=AL2{?V^&xv=Sc<}$2v;M)TJqLRb(@dV3DdQd73}Am}nGQN9HMxb=G-# zr1r$_3ghMHEB;|n#2O4|ki^)E_8lfS%5?A_E;uWb<)9I%n4@(D(h+KzHG0J964jf9 ze~iP-T$|K1rE`k)822_FY67YVR2jiCk*SB%(5vKgHRNiFxrA~>_sa2^lDJ@Y0At6_ zrkZABE1uY5v}J3_tQ z3k2`W+69lAQDn;SpoXUE9k0czguLi|uSK+m(&}BVHRGn08((njr+{}S&5c6eFLo!{ z_IKL_eg*0Fx7!7O1^xE-L#Pu`Owj$;kDMWlry#A2&?Jn^AXJIyCWvGTnH3_{ucL5D zzVl-xtWy9vmu)W7NW_Vx6Y-4-0#ENeBoDx!wAO5+I`eAtbCnZg&l>bQ+t6kI<$TtO zH?c-Iag&77e3CQ?)tG~03O7lQ1!rbdYJrP|UV9o|QR$h?d$z9$g*qx)L#Q=3*C=g6 z=_S`pFZ3C3NmUi0<4JEoR%~S^pFEpipu1D z)$y|YMV-#VwdIa8CC9F{^FrIy*3q@dOHJDF#2)HHIJmBqU9sD`*M-@AG2c=TE(*jt zm{QO{-$;CL%s{NcjlFRz4>uMsOphpLfuaHiOWd+3dSTeyiTX&+!QS1byO%d>0?{8N zB@oaCH}>eW!#ZxUy0e%`^UCxa&#X-|k4!r_%w;oQ z(xIgY1P0$%akLD@E+c##$YY1f*wNGWH8&%@9QbmFDqb5!Be5>|&Z2kgepR|Vppm|@ zzP>&)Yp$Y&HsXxkLrOr#8z?XWw_+Mn;B2Je&&{XWp0c4X@L@d@eSk0^w-NMzrobJr zDh0UGS^^=oLT;wP#%fzf`go1iEbo780mSluHlfSw#md;xacA>VDUr_4jYU??O$GNU z^)Z1@Bv454(0gvCz|5HcHhoaZkCGFY1 zBL15WE8sgG9YuNgTVz&AlXQ&$II(fOm!2Y@tRSy=SLju8KjS`UK^)l`*NLo`tT8U% zU|D=1d9z;~n!*8&P5k8HnBb=2O*>FS5o#7C*@QZHb1Xy4BTr5M!liKVCvG=)arM=M z8U?^LX6X+BpA@<{yENYyo1IdlpJ-HpU4>n7RAkW)D(PuIug-iAL%F0`e)}P@ zF0wZj%WDcn6LE{eS8WHGoHR{ha49V_Bot#VlvD1LA{&u_l0-J!Q1QQN4_X1QXS#rr zg2+X9qy3Z)`|n|rtIoca2a%&xz(1V-JiIFc;tJdGwsYL94|b4K3eI^fjJ9XD*}nI+ z=EDv#tBFKY`)FH(xHhSlmhj3iZcjN~xq`?5`GE5<0N!e8{_K7V#(e z=I56iKKyZna&ofkn~JG-0Jc)UrJq*`6mV;IXx#^DHUv7@-V++5sMAstmb*iJda>x6 z(C@R>%bg@3ZO#uREUef2(gtUO6vur(Ou8S4uezfBpby(j=$gTa$6MA$e!!#QE9*|I z#&MsDa|pJ1U$n^}uj>$5h_I%mcmQaId6-j$6N69KAM!-Bh#v?OD&g*FT}Iqg+Az;r;Y+l zV48VoQ)MbOdayno99glE@g2}(W^E2NfqvknaGOAIXTFKq+NH z!Z7V_J?breAgSDl(|F|iVp$zj9@(5~C0b3rYN#PUsy33YgKLS5K^8B{MhH=`Wb%j> z7Gf|--&xy(c;HwXfr)Y*l00V|0KTIcl9chy_il%DC0WlCzm@n9 zcWe)LLL!maQh};T2yI3B@`dG&c&yxQ@vS)l?o5i}2ZF_lLpR1bFVTWou5F(4Z!AW= z?2>bnsezZ4QD~%dW%9E0E-T9CaW=Wkn7b^i-m%Kfx5(*3pV-DtBSS7X%wX)-0X!LF zw9O}}cZ$ASB&ZjmTIIH|&{h|oQs>9D^FE6k*loa-@^tWo3F5ewm&uGbg3nK%GaKn0 zbZ`bd-}1{t;fm8#QUPZRhIZQ@OaD82^48c*!Qi(G@x!&GkiMG?E~rHx7LXbRC(8K1 z;GS^%5w>%3AgucVn9PN)`Tu$>_f9Y5PYBcAPmbSswj@6yO7A2%KtcxS@PB&F0Lmb{ zw|Bg^Z*d5vueWy>_AllEMl=QoW_+(8Sji7uw4C3-tAW5YFAO*aiZ2tx%xg`5e7|=< zf=obw0jGGZMEDs-yrRB7AVA3){4dh5JD~9la4kLq0@&@;QH9Np_5F3+`v3KYHq5qYD-Y#wFh@AZ(B%ghdn7P!NxVO&ElwQJDr& z@A@T;j+)N3KB|P4IWA&@qbUx?2j{827+bW-S0;k)G4=^rfZ|a(60qMC07&LgXyy>R z7?7Rn5UA>qy&Mom>`~cnA?R*teHFCU3a?0>4L*{-f|499n>8BJeiK-})+cRM*Fe!o-Dq1WG4@-tk0yb(LOUO^sTAb~&`N$WG>&uuf99z;YaIO1;F6$h0 zxGN0{4J%HoPMc0+PD@(7Y{XfUspMLb))p(W@7Le;+G*kG^$LKRqFTa^2_lE+Ln5FG zH1d8L+|7!i=QHXnBx9$HuKC;OvU1^Z%=YoHZSfn;YE<0kIoKI9_DzW63 z!1EoK;v6^Q9Pi^CDSsq~s>e%yQB2MKZ)pI+rQesDqqFffFfoyRk-OgyI=HA|oCX^0 z-7rAT5NyMCaUnWFZTgQ58VHbzK;=N;LEQxGjqFA2Wos$Yfy!LbazE|MRbofLih7k4`WE3lp!O7+LU5KeMq#~fmqCeo6J6Q*)nzcOo2v?1pc0S z<_^m4mLcyJcBdiBxqj3PpM*53-aM+MeR*_Ulk37-r!r0TLa}OY0INEpUA5($bE{;+ zxq93s*JggsQ~1QIk#;`lyaup*zJXIriCgr`x*=8pyGdC~h7^u0l-N+B2<^#2$VqcP zvhUFh0N7&O`Is?kjoLW&+87YLAqSWv99hHA#XURBJ-O5)y3{=s-6M|8Bg+j!oHRsP zw=^6|l7fkRMMqi7$;w)$D#L}P<$CY|M1flxNKP^B#G+S<`OxJ24k*SWg|t&tYrB-? zW{Dow^nqAF**n4k1;tS*d6fK>X7(6h7jq&s3}leG+9{0 zAw$TQbYXlM3Vo2_vCnB0o|rl| zTvIBJz6|@Orc-#+F1^(d!*W1UB{rE;`_r-X#RTSZm^t2GGQEY684MY)iz-&Fs=o)v z60|CzXI++58biO5u04{$j=XV% z`L28Dc9<8(TXrv+AV?yaGNzWl2~SbqbvsX0)AiD4rsw@MEc}9Tyxf2FuB~x0$A6|Ji!A(QdhsqoN$Q!l7WfjMHoz>v1~X^8`!V z+_`Kl#dJk;)7+(EDhCdp^K0=a&9+B~c~GdpY_DVFPv62V`=DT=x%l&^pMbrz{(mm# ztR5UeAlffVJU>VhBtq}7HBde%fahmUb8LG_YG}aU;Dp@x+Vr55n4F}B!ltUO;*5~C zvbv6zu(;Biw7jgSilXGsz{>3U$j0b`#B$C25A+{!Y)2^cUp+28O`?PRbgXUxwH+Rp=!&`}1O+oK2-)1yFUimoxl z)uYrVxKWyG)ROLsu%Mwath0K)DXvj4On#XXH?;J_83dE3v=HKq1XoD4=9Hb$Q;KZ1 zdd3+E(Wg`i0y9pQ$VAb(B=x2wC{ygrdMe4e`q+e1?}1c@f7p6X#CVETr`!X4CnO#? z5mx{pw5L#-p_whDsms9uAr5hiy=4^Lg{KGWab_9L?oC{5rtOpmn1g}Ft#wSt_JjK< zWE(83ApUq*_&cPsc%h0sV)&iQv|H&xfNvj&deJjt*`~N@#N4^ZJ+*7%#rCUV+`?0oFxes z#VA7IOHey}rEGLe)G29uQu_9Dq{ti3MQpM5XKgIwJ6DqWgPhAPM^M#~I&xNFMufp? z6<5fE{{-*~w2^7v+~*f&WDg1^+1Q=SGourJOtFSw&g#q;kPED@!yV8%m_?BIx3xf` z&L*0h*_KXs5FfZ_uKyR1TkH4cg;Qg91~G{H+5no!cZ2>ZM=%GYempSRTHTmw>Z(Z) zgu?e-Z#_*jQp1!hFS6MX92`e;5^~37^9TZD;%DOu?+32^>>ouqF2QvLS&oD39c}jG zR%GLB=g7*1>3FAQjuQ`|+(78im|DwZ!Zhu=;TVPk>-rI1l5V9E!~PcZo4YZHuXJmXS&w)mN?gKZXn$81IO$5?I zL0YHu3f15lgTDAqh3)|+QEt*MwuGYYODLO!S5(XAbF-T|$$`#|#}2qL=0`jQ6X_3R zAowK&5IKN8Ukh~{tJ43(AXSHykRy~sBvlk}NXnP~sh}4tpw*lksRs>{ub{wZHkmJ# z=!D7Yv_G9LmG1Zp2!+OAu$XQJODL60rL&lA2Z~6gR;f3cZiUKdHD9eZne7A!iN)p& z8cTD;5G$HZ>$Ex_t;cA&UGum<9bu{@j~C5UplVwGqW=MxsQ<$R?`1?v^3^Z9(0SPkzN7z`Gp_255- z15)WsMw{VEjt4Yq&3fyha+Zt#zNO7bHO~he4yWVgU>Va1t#-TP)o>Np3m&)U{pC;v z+YPVx`~B5OP58g`*5IP##^}myzrfu;I==_?{L?Sn<||FHO|fPhzK!Oo9e2@ZN~|L+ zw`mDEg$s-2+EkZHGhpnsLDS~iC8pe`?31ot5ju}GD&42dm99M*JC6;n?Wf!qpIssR zw^cIUr;HgHh9%|&%)K~F)B7|((+r!~w&M)DfDkkd>xkl14cm|uRSlb%rezJgpcvLQ z>!_;cx=2)OBd)H=;*_mMdKuCQYct+o-4K@Jx@HsC^}KciKn00#7#~D!Kq1CH%nQeU zSPK{w3WLpHIoS%C6w5vi(+~`S{6~_FCz@fJ8*O1P{XmxeEO}v?eF6_HK?JPr@HLQI z(dUdR_C5ur#QO?+=RKBLRAbkR?{!Yjmox_|^&tm;a8=?@$EpB_N%H)d!#cY-q>Jz0 zP|NkQcR2)Y1Yr~aeiZHP{p;B<@7XXQ^xemf?2f%@7?!JY!5lCdO^{&WLE<9gLzLvk zv)N*?JU}7Q=nQ(3;cQST)k=^340N9RaqJuK+cET=&)bQ-BUmG^1+DGpShubdANl7;aGW9Y+k#XhM{sM}`67t6(K$ARdRLi;RJ zl{V~Rips5R)N==_zUo2WyL;BE61q4i-#Txz#z9FbT?y)}PW3ViwxL>~ z0mjKQuF?u(-UY`YFNuwkz8l)vIRl4b#UzbhNyC zuX12_u~fVy7mo``N5y9k(}9OWW*@i_Ghhqa5$W>YvVIv4Gfk*`Bd&ZWSKsFklsi>J zCyf?&By_Jw4t;lN71}E0(^hv!?UFZ3j~9hX-ZG@Lrh8F#=I@8tSMUg)zRnR&ZM5T+ z?tI>3>#m+OylvH11G)DM`qEhicQD|Bg4A5>3rByJ+cfd42nUAhYcday?&T4W6}Omk z_io_(N(0F`QLv)2;I1D-W0Qx~*xn1SVbJ3TkM7X=$J7!AMcAoldZL@ue+cKcBCbWx zjb0Vu^>SPJ7B|uJF7Bmte5+30MQ5J0zO=`lxqNsqG~lDGdqUgtEvrTmP>U829?}&t=p^X zFgqi%udmGVI=RN{^ka_`7E<0sz9Z8bxvz<6UlP>po)Y{mJPLN<tNU_Zh? zq?&Gsil57+9up#eYjyDNgr{cOeJkQX=rXJQmQ83Xgtm z7Bmmc^!eT_A6}~;H|+b!LaiUje#XbhgT+ty9N&J@_ujK+(H1CEDFsRI>#gz><~4dm zg|c7EvB-K_c!Z8ZdN?#>pB5>DM2C-2|6jRu?Qk3vLhz7LgFp9;2xaL1OFF8DbEEx| z;tI~SCEiu^yw1v2p}--9wDX=qMqOY(j9eC^l5Q1A%ZesX{xFQ| zA%Y$hESfd9d(R#v>25wqJk0-0{|u0}$!vYOyXhQWJXXHd{RQlT*kI;IPR<`Vf49XX@pRgZ9ja2h$IK#oz?;;sHmt?@I~6p^`Yov zcwPtma5^yBKVf#i<57d^}DW{}Sy?13A znS6<4f|>W@1v$}!5Dl*71A76{>bnW}rbINgQYz~l?4H_xv(v*|{mfpKUh~0j zm4?yiP+_cWbjrI~lyFY;k07(k$XP$=ymaYQSo^8h?i*k-%ta!fo{G$?l0XvG_i&%W?PSYWux(ykS_}%|KMp@W z<)&~0#-;knw0<3r3(?4 z*Yk~A<-_*ij5(y=8~wFrlVDn7#5uEM7rMVtLaA5r15}AHk^OrfBAKiM6fgh)-lOCD z&H7^W@_XikL;v2u=;OD87$vSjj6^0~oNGP?#zHsCwg`}XbtGWr6y<`bC6wNJSQZHB z=4Hd`3AY}};pb=k*8^dg-aDA80aWB68r=a=f`9=k_yPFoE)Z%ot#3cMHK z)(#DTfk>>EZ?JNg4@n$~F(@#f`yaGsP_90EIuu$^%q~e%(%D3`sVU<`M%ARjG3-N> z$|{aEN%NnLfUB8Uqmz28)vZg3XRx$Hs)4D4W&4g+a^CV(@-rTY5i^t2oI4>gJ_0q4&m$)+_V~s+!Qg% zQj~vGk}}1yi+vn{+S<7_eanl~?kS5?GRF;$0v+W%3O^NDnqt=#u4-ac%qpmsw9cWQ zvPdmrQ~9MzkLHdoE1GiFJ+7Eg@?nvCA8Vnk!9RKx?7_6bT6!ODX}w|n2*FAC&*ZHZ zkzvJ@<~$qGb41zZoE}l5R)_B#yf)F}hMDdhJ5lk6(eHpi@qYeGyYBvp6q^qL9MHL{CrS=~6qy`BE()|<22ZF%{4Gy3BA zw)~0t;Q}IRBBCPf2_zOc&X?u_L`?9Xeh`D$TESJKY=mkE z_`yj+1g%J&A(ef|yM$y_q@vJyn6u1BVbw!^JZinfn=!lJ+;V=js_ehDCChWin1ykx zuEw@?imS|LA@rwXPp+;sUg^97zBxW@iD=hh*@J?+-d6)tHmgjTDY#>Pr>vAM$0|Zq zl8UOO5lzdS#$2tuD;QV2td;{;ijL5(SzRkWheWRWh2FDEYA3w5-leT(Te+9~wCRbX zyWA@VyVjPKnZ2}oGte_&I&=I|1U2$p1pPi6yp&OK}iH$00JPf z0%G+6FyM~^n)Kn>VXK2ic2Qp;z8T9hq@`s`0F<&VMxu>n>qRs&a7TDg5}j;XgEk?r zA@jm#M$!&Y@gAn$Y(E9RE91q;DU{J`=>^k?ve9gzYla#PdF!%A!@Guf6m`oQm6f0* zg)K>*QeCCci_z-|X5v@I!H*{HmEN$WAs>1b^ZoB@cZ4!0mq}E3MIpZ z6c!<4grR2zoR!8(8Wlq+p_6&W7yR+r(b>^2@jfxfu{6=AQLk~kvA(g(@DPbKiv)_K zjD?LAm?ato8+{w~9)&BFtu-%GBA3q27u>(ydtS$1zh6UMeP~)#6_^^I*D-9mTs6E3 zTNYPNKOU_@t({p)FtB5&hSijqz_lnUk(ZS&qH-3e4b|#dI=XoJc=hw#?m4m-dNYo+ z9eDR9TLDaK{5S_O4#G-;X{yyU$wQ{L1_${LX&zIm{6?1D5|nv6%C$XS$XKow;*n z(UxYN`Fdu4A8hjMW{$3h-dJfep2Y;uf&{9YQ&LusL$z1aHV?J8+dAdZ$lY`?M!2W7 zyu5dHz1-M%tz1nU6ci8wK`A0BN)SNC>uy`Ii*Fhq(iQ^0-Q_J*J54W58$VagZftIZ zw#c~+l+KC)!s7ru_7&}(77DUu$asfDA{CU^=`OHiD*b_>=9SCdK z3Hl*~xQ~U4E3J35m(RDf1R3t|YFYWa1kmNFfD*z6TVHs~w#S#Cwe4}tW}L(0_ipA> zABRQexw{|-`rF|QA3FZo)4v~EpXtJl*W=#U`>=16{rmY{W7wLt^ixRa8^?Dv3SVEj zmdZ()7ju9rMREf+D2d8hLt|}sS2?)i?DRA})6v>hlkH}wr>EoOuq^4-t6}-9+v}w| z?EI=2?N&&BXQLvF#!%!py=HAnA$4>WN;Gw3O@P4eIGFep=lyv%f)*9@Sc6P{3go|T z4+WkU31XHjohehcJK0s!^ZmZQ{D)${JDYjx4~+hivK%w=~%&b8TAF;M2z=)q(3=yLeG2(*J0eI_(4NfT{dzIl1YLgNjOL3s2|i+==U-#6lmGNjjorL zk%2|V#fl6Rdu8Qghd0fR?h^u2%rgZ7 zj5=DoP8Oq}1`RdqnH#5VzFm~rnAiqk3BkvTTEgXGMeG9wAzqmBw zJgy81tn5Pn;jsF^a4>-`igxs&hWZ76i5Ckw2-f`D6TV!zkPlL|T6=ly!bu>&a^Wl) zXt`n`8ECp}0cLTxULhRmS17E^t!dk3?Avt+Swxm#D@$GMZ@IagKST3*q{b}C)KX8+ z$A>R_xCmRN1;*QfJuV^s0JmaAvFLMXJa9$RAc0;k|K~vT7(1dw9(oA!4}Rl{F7I z6YVv3c{PWtPBnXf2~V{~1BvG1B?{X8i41yLMZ_#n{$KZZ=-t8jF6i{hNAbkurZ_coZ z3ELc%166D@o*>ab8c`!uRNA!OOOE=9#U2uTv8IINGi)wSyR9fJ_`l2S9RrEDU-u=l zD{E!RXELNL&^ChjDN~PGjJhvAI91rv9STm&BxYu?U;&WBNEzQqReUtl@bEUp9b1y> zl94HhXsL#h{mP2bWYpwC`@s~@m)!Laqs>G2B4#N!|1yDE}j~>b77}PNzdYxbT zL$j``C>9lenC{YmIdL_kG;>5+yjtLz^;6bxb7J2ZPCYF>_Swnm{W@h zffoE%GIRfdL)ifUb1|dbSuqiK(a&lnmBn1GHcRGj{=$M#yzH0ha`PBuQcz|D2JE{Tx99@?!K>3C( z?COjCP(C3hzhfd77@G-vDAz+7LmA^xJzJ~4qMe|4&C+^Tv|iGC6Q|mQy%c$e8YIvN zcu_1^_f`hSNH9d!icp9mmn0e*^fN0`%c)nPNFkNb)zXYM|6v+Z9b!T+o|u?0Gc!98 zRIrEk@g@~I;%+TE#!=?nuq*haJ;`9|sOUWt#(c)xRt-^kqDWp26?I6lR)ucV>`QH| z0B%{eRW6rnBB_MZKxKq={pa90*hUib5Gn_Gy8|)`t*lg{7gPma{k=yb*TJ5YhS){O zubtoR)>HJ2rN|c}mqL$ez+G=w&A+>*QrudOcs9GM&lg8iZp}(|dJC^C7dQBBpU9F= zWn&gvYm`r8;@OWB;+Qf@nNYU&^A;yWmFKr%1)^u*60yke3C`xdruu=S0Dn zHEWizn&MMs0c;=xKDU6<%uH?D_=wSmDOQa06=>#dHK zruB3@d<+Z>Iqa4^?}sTiIa{{hLgaTjG6CDF71wz)nZGk?3ECp_iTSsI#_6`np zeSFbI79N&)XY%x`TRu;eZ9#nq<8DwD-ax6TOs(Y8%v$+2TcS!T9U^hkk0YL*AkJuG zr$7~j(A-?@IsAJx*DH3NG!8 z(4AC&8}}|-wPQU`nwQbxa5@Gyl-T;Z zdfEPoLM&GiX{bEiGG#nV@o%WF)=c$-^G&B8(xKjl6=cX4UwX?X{ z9onZt#eH+P-izWybK*&Yp>YVSM8l(C8`@f%QO)>_vS)U z>NaUdNR}?W;t`Z&)m&W&&n`T>^*KV4C7KSm8{3__!m6sK?*4y@Wyz8>SS2>|{b)H`!gYk1?#iFvvqUh;x8F-j8o6*bcc4`PaZ(5y~Y+R^4 z4;wh238#OaeJ(6I1v_m_2?{)0KsdFl2-!u$H9H#1NJwTrxq@_k8{5dvA?;it0ys1K|vv>J($ zgxstXc?4laMUTr^nEnEytd24@ntmm{JHa20d+HAy1SIsM?)w+}8_ea1a^nrrdyOdh z@-bfhK(&?9fbTy)AJsrR08>JaUsmDeCN9c>YZOG&l#%0bj@;A2Fdb3~s4G}tOfHt3 zEwYR=-i4sTxDe18Rty{;>#Xw>Z+wm?xu!i#==6YIGDMP&K4lO*;vp*>Uh$0CMg;tB zFvSR-k%Rw(K5W>;c1dD0rZ_PwqBy=cdOyS#92bMsR;(-(2g!?t&g6>{QY*pGvfsU* zm}y1!yyh#dNA%0Z6=4d_w3=rwH;QL2$QnK~Hy3Gx3D7S`{6ybE>jAqK!vI;)Ir4M0Chl$znD&n4H0ILVjmM`m11Lrm5HqAtm$cHac=sF#grkL#qq#5GK(--$SUSm z;ufi_V*lo6^NGWSd}8e0XY2VyXfEUu<6?@okV|aIx?HQdM2Q^Aw z8NwLCBx83sG(Xo*cnsF(+6iO9PDp4~8PS}QIhR!XA7nUsT?d=szp0Vp>kaS{H1r%PO)+z+m z$YdZ|Yb|3Fo{}x;!nht;+5IozH{eJ$fZ&#&_YU3?W|!_p70WAYj*A|#BoX@ zucy%j)&)wSfj;$E1|VWpNYnlg=nloy4F0Q zWzW*TgY+LD?TV&x0kBl0%q)vMxpkX?Xk=k>GLcP1BUufeuSY`uQJi>JM5)I`pi?L` zd_JF_nusZ?+V^I%GKJ#BM#a*jsRKX@f+ihX2rdSrMqC-yOy0pV(1H1I)0ig-brn`K zpN_dk$3P~BRLZVSqN1f|p2cuvG0B-4>Vf7s8IP1s#zG+@COqm4T3V1TqTOCl zsn+cEVW8j`0N9@33k4i^_wKz(pGS-WTpk~VegVvT#*vJBLokOifUUzp-E=u1e_b== z2Q!YaUJ1*SLqiVRg)3LC__z|Kjn$qGW{#dOU=5L$<{ zq+aue^(qKWK1*L-o3lQaM)}Y}rKZAco}R`qOb!Vp{!+vjr%+T=i{hM-B&nU6zUiP2 z)CroQ$z|Z{R%I0s=PeY8;9u<89iBN+fA1G9O`+eXk)J`Xa8FLU;V1TeR#1p1ov?BL zxA?DK_5b8Cyd-ETDiVR8W*p~$g4Y3{nawQ3%w_UeaM3$6V~*#s$N6|w;1c@O`G(DDMO_<2mKjKVn^Ef_Z&wWk!TfY#I+_D@Tf$kTQMT)5!c1W zTC1*Xb^BO0?>%|p!i9I=?%u3hUc7i=f8CO9bLZ7}7vPwf)7x0Z5I?D~gT!Wm#y@AV zw74vw=!uH;C*;q0!u%8Ks9S$x_Bl@|)}Kf|=LzNd6XxeUkywAC{2NdF20rnd0MPLh zW?)NeYwNCd>jE!F>m%3e^g50V>CKCe!^^3 z@;onN3>QxJo;!E0_jJ!IM^7Bv+p@tNR~jzf~L);W8$JD78omzy2uvf zh;LsF-I5lFP^~mI6Us_cp3sJ3%9H&fQoD4?1Sz@cS^7&ze_5pME*Jcav)~h~t4jZ8 znu*;f&!0c}GtS0ApaA=#Tlg*jIsRo4NCE+mKiTMR8`YcBZ?fl?@0 z$0MX}Qoe|4H>4GWK9Qo*Ju6U#P=hp$5Ndjs@<>%81zJFSqmNl>B>Z|&=@cn#DXv?w zN=M-TBBc&NH~gPsd6L{7c~iPjwg#z9q{=X@$5c2TuDTWke2^O+9v=6l1S*xgA!9e$ zY;|>YN8oRW|JYwY%3>XguCA^_T}PD4BlS0mT2hmi+SghtqSd9e@ZJv2>(=S70xbb? zeuIJlcLc}^)MjJ91{e482OnNbZWh<{+k(LSfl_G@D5pgt;~OMdjkhIosf1Yxd-i=s zO`PMzgNjG)v9U!M!zdyi6j=8JN}^xG`g~sWp5FZ6;>89yfvon3z@B{>Wgw9o9wRI3 zL}}|T!uCmJI9S5Wg>svbZANC`R$NieWHREW_Aa^IS#Sxm=)9>43OzLVdXBo5#>PgE z9zA;M;?bi<*e}R*s$>p|dwLdYy#xSF+{nnp$e1fIGch_b<`20h@iH2XOm=1V0p{No zigYr(8n3}DO4}2OB<+lEVk%&#(|B4Uk1J6TR6^X&8Sz6kf1}CQa|)F~&#}XuFYfPr zv15;T!Ym#r)5bRZgbI_Y*nVtPC2bLmN~O_KrbG20$A5UKP)*3E@1vUd`mtM(yT`;& z6Yl=?cg@;Xb>YZ^@%v9a?loN)E$G6P;L^8PJ@!O*!{X~X(|z#3(IZ3;CUs3~dJtW5 z_f#4i)1gY5xQ8v=ohaESa;%QLRVKB1s|d{$Q!(^5yli*=yW zQVhj1_=8^k$7pj*4r61CM5tLbpRRs>C}6>0V}1xsMoN5!JV-uKj4_W+VgrUAuQbRp z)WC?i>$njeKwb>TX*gJou{egnP#XKXNQ`=1(zn=<))6`@O_hY2rD-{#ercK@w7fux z-8>@Fx_kFvC5t8~yAlr0O;1nH1;c>noDiPD(~Oxg+!OweYA67f_28_Y*>uSEG-=TO z%0-k?JBkVAw3a$R@AbNx=1^Sg`3u!r{$e$8P~1O?^sjQQekJ z$lbq>3o7KA!aU6M+@kN%@CeR}9Mdt}N@xO`n+(Tc4!719pHJCYIS&a`0Os9?4q|jX zzZ!0C;vntBF8<#TYbE^v3b?I7vnv8VYWv^xvZUvI0enAdd~a9AO3K7i8FVcI^`&mp4qH7sxm9Up{FUM z;*1{c=k)Y4Pm&AM=x07zO=d9%5A8PNaaIC&xt*T+{0qBg$e9Li)B1`a(qo7K$t{Ww z7gf0*&()S!qS5805FUH`UMuq_%C248(p8@0Sqd^awH9*>C`mYInY zx%X(=J32ZwGq$Qk9^q`xxR>l4CWJRBd9)g@zj5j6)weERzIy56s;W34Xp~BiJAOKE)|Wwd9|xS83+U-w1rFH*3-1V`r$96sp?%Pam&4SwEe(oOe?-@gOftvR&nK) zi55*kC8G=Bg=mUHVKC9?JSIgJGxD;U`i9yvE!SUivJoJ;xswuJ2Vn*&W*}^v6f57L z&N9Mm1@;cI_mJ)4^07$Bi&@@>ckhl)qaE?i2k}a3(Vpni;>Va$G%XSTqx<*oa~!w@ zDwDCR^EpVz@mh(e8P0A&=}s;zC&hdj?mu4)thj9I6yMtAi`N{!@SA_}7k}|9mo9zq zhxq%KUps?WcLTohy7l)ZoV*hmZG)i^>PTB~YVLyE+{W_@j%9k>zB1amikO z>eQ*O27P84`%qqPm4~M8{_p?&zyHq=zu8ID3C6&Sx{?lDRe!)>vTM);%J;aBq9!JnBWCZ&Q`2%D_QLxGszN(P0SX9kkZ0 z?zec+|H8>QSjS>OeCABpA5Eo#&>sHT2|xh` z*W}i)_6-taWO6=?5wU9#c~}Nah38$$;uojZ^xXMv{f5Y8=-z_swT8Xnlgmi3RL0^A-b84 z+>9)-gKf|;EHL>WGrisLUFy}->lE}76os1g|dZn!BMBH6^A`UV;Q(0+{6&-|c&q^JHLn5D% zsijy#?Zyc$ zU!%pI1)+^dOLQDXSnV?<3+Lj5RX)p(BRhetK_(X+UKypfh$m_WQ&|}W3$(>tMlCLi z+0{969GFUiTyCdk1|4+A!3K;N9t6-liU-^vMhp$%C7jdcXebz1Jxg=rOP%xTB|J=9 zQr905Cv){cP?gPbD(z|xQ8Z0VHj8IzTQpqOg(fe|RhC9W9L$mUyh}=6IYP^%X$7G& zX=>iE<~l-Wq^WYlb`ykJ)@ZR`KDpojvPlvXH{K9|Une5_)_Oz;BIjmt`8g0pLxU`0tLSg|$(UtwwL zCFq79NO&+L$9e?*V1sN(6pnA;bD?jzfj8iX-5XfN)bniS5|QQU4K!U84sEc5BG4t3 z`JNPoK;GoKRr*HS6#P$-UO@V{OQ{b&5$RQ=|F)FghJPv2-$gq3l)i=ZZKQ3S0x#NZ zmMskrDfrBi=Mi2{FjL`+rv6`N{{h%mk?oJ;bGy1^NtR_x?k#TV)r61)0tqY-Ah48O z>Qc7w-tu~XzETXk|JQqO-}cHbKiI+smR^>GkhsN8;@)l9mMrVaRxkh0NOCuMW$Y_m z&D^PX%9(RM=Zsn{aY;fgad?LTfdtZEMwYdyNN6!^uC1+=1lDC>nYl5r>8Q#wVI@)4 z3o`tltEv+vovpkUZd+YVO{KliXfzp&S|g_7(rwtQRyfFB zSynMD$5Ux=NH$A|ETk=Ya3qyV5rL#+O`e#JB$A8>&BSaA?xXzwGC~UDs0b8TP<&5- z>hS_`fI^Q3=qk;o(u|8`(f|YW_|j%bu`FqCPmf!prsxVmU{HLuMN`xuR_)wbw7*5g zimXOSsI42VQG5zY13mKWM)WX%!W2L3@hPi{WtvckDtO8wcAj&gc-p19I35zfo1&_4 z`}ezxFl|{XvI=HnQ$V9mQRJ|6=#WIJ5DNmV{5-wjg7Jbp1=}F1<#z6zdt-^N(h}96 zL~G|po})G5!fkx41%rTVK0S7G3)D?Et*)`G#?#Hq{lY*PTtq~RP$vww@q?BTng-KM zgcnbby_o(s5<*F`&+7?;YxVglK5!wm$W1yBLns-e`Eu0*%QyZ}9v@cMIcJTzOxH^LT##=ZVMj>`O0w`z7*a znFpNqUbG4{f5lTU;BoTgsg0E37;T+Ww9bFc9>xtUZImLk7NM$Jf^Tubci#=Z3v4C# zS~&a~zQuRBw}Q7|jQ$nhcJjB_%46hD$)7TnFCHV)KusEy9|Up3@u)6uXWgvIsi*Lp|sJrCZJ zBDa)))3G>)PJZ2=Wb#VO%4TQh!VJj=Y`IjY)(EXCE|TO#E=|%e?=dma==0AVDUqfi z8SzNA!a|#B7Dj%e1v~D2U}knv>ufj-!OQUzx1G2R?r?*X97Yx@M}0jtN^_*%sab^a z4uioUE(~6xs(rl!Gf|fg<6cmyBhdu4Wz$O5>rEFFys1`Sxzac~N=G5N%}p-6to`uA zrfEo`#&_%h&E5i?X*YDIUnVPD>3xV%>9Gh zhFSBE2(~l-pY+fYB{0Gd;hsHB9)b6UaTLI_bj_fe^c!tMOa~c`9~`t;Ixl_R(a)37 zOdlVLxVioNN#fOn^&Yf#0e0k$|pQJtdhVmBgV^jWbyd%<413SdM^2SnQ`b}-mt>4NGyk<`|k1^I98U${pVW=!>}v=EX&h> z&N?4qn8>^j<^{%mQL`C}n5ypn7A~3KIa$N;i6pt`&)c8pcU7w*8C}?d>V1Gb?yD{! zLv%5O%4|kceS5*w$&*uPi55PUBpmBP;v|`ZHu6DeBVWKkxd7S8!BeMRS#2pX(^5-l zsiWkt<+Ceu;|}=SV++0+&n$(jV$vU(oeu%@{K+RVazSRD>9m`HN{Qs_$2R4vFZPPP z6Ply5b4yVS?&qIB*<_ssC-RnCI!U?AX&px1#f0W$Y1?j$=tGUQudJnI)mUqDPSsX0 z%D=a`Kt3WDUF=1W398fQ_m4fLP<7o?F7^~TC9hi_sEv{=Zh?cXh(TW0V;LNkNybpb zFN_7B;(r0Cqh)&x1&C9K!KK3sSdPWAy7xlMG2hGNOD>*8#?T4VHY_L7)bLx#o}4;M z^CvVd8{TSu*%}R(YkFGtN!Cv;x+Rg8iu!gRr{za~-lPNG*0!Pq&hz+@U9GW-wn$iw zru?B;+O5J0on5Nk1z4h&mB6X49-mbMCslYJntF{D&U}?yHH!he*U7GEBke_Q)XJ%2 z{CnRU|AHJ}lh1CMBdI$EJ+r^G*L^|GzlL~Uobv&~;6l#)M<0Rx6jFScvwccPrNR$2 zRL<2QDi70O?%67H$5=EvcE=qWYc+(e)mBY!?;Ur<`yfT>ixUT;ojXUi&U>T96MvS% z)-R97n+b!9kWxCkwoOg7jgAUT0zEsyK&KKv?ATY^1yI*+9VH63EL|y`hKpW(wP^qT zC}#zIWaXk%Z*umt*Is)Kn&uir-n(~p_6B9#Fn{e?o~KR{1{WcfIja`_si9$eLE1l& zF=jF0PuuK6gOmP`J{lS#BanzuvkGoA01YM7Dnrif+sNEpROTF$lMZ*KHXaNHY;8uR&~%jcU9*5vcl5>(?#Isg}=`TJ4e8jVJjxk;yU(!HT{agM!k zaWs(7gTB=#0;8W@VAxn-7UcTyI3z%;B zE-KGHvA=-H0En4_{ZBlr1jT~#j46)tf?eCT?II0G2ONtUlxKf_)@a1_rKQ+%Iw%}U zw-q05_hvqvF1w$8m+q&xT(?%@?8{NqPOiV7d-wdsw)V^Kz542_=ndB{fA-0=6lBF815^G@t2V9{?dl6O-E*mZ_f%d&9p z+|pzq;bJuTvUI)eop;_j-`)EP$>@}0UU{&L6xuWMT1Ilo<=_DH13q@X?O)qI`Mmv; zbKigc+-H5TUGUzI{^hU!>R*2Js!YjU#%*8->~zouuc1adNKqluT80(iq7L_P9GgFO z8meVAHQVnz^X!W+K6~cQJ*HG@&r`?9Uy#3G?tDTPs{0uxod!oWjmB1=IzZ;motv|r zA{+J{3^Uk%`Q4Zh1p{$%@bk~{`@-w5zkXqmw4-xjt5GELCaqe-xmDv(Su9b7sn+87 z_?~?Sp7iz2BoYZ-8CVzNJMR7Z*S~)64!R@Gsw?uoV8kDFtBUd3yJp!Ht;ORx+;m0o zUA&#k7eD^sCm4Hg{_OJQUQBUUKK}Rv`i|(!!vrU@ct>ZsR5Xr_8wPQdQl@nl(M@+h z6;o&Mst)hpw{I8TRb5qC+0sWJeKZgkW#9cfui99RA3PuGP#%ufJ za=UwVFLZEa&ZBe7*0b%1tQ#7#TEAe@GZ@Bp>`)SVuy*wc<--qm>=^&(-~R32J{l*S z%&66_EhpSe-uL9Ja8&Em`YTtjbPW_5q{XS|TyNK>oI%^&t>r%akSiG&DB%VMsD7Im z^1+4DvLxkK!sSacn;svhMpBxZ=#|+Sa@UsZPaP+2@-O6nmHbM~HR`i%qgk4{xf#S78yOz*gz7E% zwnB%qw5+1C%Ij|a&#e7ycNRG+7)Hy6d{gt$g5p@Ay?W=N=9~9#HUqS6qY)du-Qg_S z)`S&n_pVvb-1OA7tDv0P+8w$6QI^wCH$j_yN1dJv27Qa6G_=}7=%F9&FL&`68pj`P zHHkleI3+Ya@Wd0(eC5kuLEAoy@Zah4yLjaF&iOSGpWR4J*Y?+c-FAb$;NQuAN4|E9 zbdfIMYyX8kA@I7}w*5_R_msmvT=>&Jy|8Xa@)z=-k!>0BfZ4WjXTqE&l$b;+f3kua zr;@3BTE0yd>OPcP*IKB{4?OWiV3U=)V>C7QT0?ak=I(wvcYkYn?kcJcAXU^DHb>Uw`^S=4!vO4_gzNwMcU5%*gH1e;??zJlU zKcHnlyGA>IPi~fQcKq$%c6hGog2RE;$nk=7DPx7#yl8kJlEQ9GOurXV&UN*lUV?H#4!A{4z4kMio z^x>_SF2H%dVBso&d0q@;jN_GIoNjvRDO-b3HE^R9Yjv*{%kI^h>Anu7--=&za=FIO zS;Kg}HhE5-+Qb_WXkB&#(0iDXnNB+1S>P*{d34XEkQ8eh75-XndY|OjAosiqGR| zYN{z~s6TYLx}>nEr12I^`^R>a>3zs;PF+N|eovp?T}o~Oi$quGFp2`u`PMvxA*J{i zXO~1tQmNroJj=+&n;I>AXaMCJ4D*&o2z;`&yCt_nwORVhg;&~@aY%MFX_rn5rkO9HDQs-?`ADV5wD-h`6AwTA^rQINljl(eFjSdG9$~_` z32PsDM2p=i)g&}YT7!yBFkHfwcd({V1Ct>K51P{pV~|su&1-le<}yN50&>qGXW7Qa zl2(Dw^a8%Z@{q?0e28kJbXO#!S^1H5mA}1_pXg~9JY};jSlXGLL^uM}d*@*RSQFjA z78VR}i2-3e)UBD~7t2Uvi7amSlo;=yF!ADfT7YbvLx^)YYr$YDC98USjmD18FMZxm zxrnj~EoAEJHIhD=!&q0&su~+f5#!QnIYf963U-jWeR3_TM`;a9i+0yCS8rWkeRtCOM9E<%#p_ zo+!=joK$tAKV`?h|NXI7kEWmJ{;<3I5AiL&%Kmh;j{GtBj-z+|YWlzl@_+Gn02uce z8DyS$<~SL|-5>GkU%hJ-0}fRd1d7DSd;_yA2=sEVS`>Sjzy;)O7cTY;dBJp_>xG-c zjc>H){Lct8KY9g5<}Q5t>1X)r8UjDOrI2Td2RN(ggub+-*yo)KaRnGv1tf)eluKhe z=3Z%lCGVS>?Ws}F*qHtxHb0p8VYJnJvQ4Dt@ zg>0khSR`o!98G__b%R~2@vQv2W(!*Z*)VZ6EHAf4>pTD8Q@wEcvY3^Z~6UKuJjCg z1@c~&e>m;t8XM#M%XuDj_0P{&RQ%{i^}BY}R(Oa;7NMJV;2_QJ^Upc{WwPE*kMNT~ zBWZ|wL)P|j8FR$4 z>8vx84|xu=8VJTVrZYj)xn=XpIY<5PhyRwAxCXkl!)zlm;FX*18EIla*KAJtI!)os z=Czm2$_Gmkw#;eF*&{1g5>%5>S;*)ijQbW?I#nzTQk!`Tnw}m_#sqXSNzLW)97liz z&|aJ-g`hqQ$@ImGuc#^+EI&-;@uzMhXUU&s{?3}8I(`$z$4$513FWLiZ?%8(n|6%k zR@o7YCIx+-$z+0%C>f2#b{7f(n1Blig}ZmlOftD?civ8G^x|@jw&&4kziFbTor3#D4^Up`fy|UF*W>IC- z&^4Ov`@pchX?K%GvqpYyS;upv-A4F0Dw7MO+r@T+02UsaJmdKlNhXhr`$&i!Ngk02 z;-a@$~)u@+;T4qvU_Hd)Fq<+MAk=lHb!DNoF&_r@SH) zGm>>YN?O-(HblDJ7#Osghj}K6O6JPdn3Id;qfA3tCxj@@Xb8XQ0!(qC(L~av>X}RE zD=I1=y3EH5sMw2jX>Wzc4{Wht_s~P&bJAHIvJEYla;bLOxp{2n0Tf!{f!;)AE8}3O zY?%{e%vs=MS0Z^JfH?iqorurt#VyAV#%zW z5vX61Nn&}#9xBVOspdSwavRE&C$x7PtV2FHp}Jb|4fz&iW2j<%v5L_Y9traC4$uY8 znwlD?rsLY1Z@zhL@yL-yVwV}MR@QDa1x8^`4=9hY}4kITblS-k;^ndestc>0OS z*38Wg+w%idg(Z--+J|SogJZHu(iKxx7K$WaiV;l1<;%($2k$#GF{8_AWoTz6&YV5~ zrbA&NMT*#$6*S1=;>3zchia=;C3A}1uH?#j^GbQhN=Y*15(She!d+||4=@DD1_c;=aBPHe-rRZJ&i zyoS<(^YgMgRt8zHC#EkebCVU$)_usU7F*Wx=6w$iWx%=qO8Uqxo4V~Ok~NGHO5~{)oo8fWhJX_D-`ad>b4;;j_?b9`?Mjd zl#Ak-_4;Ic5akoZ6DNkjS^W6Qu&h3M^ytk8_s-4jwYWIFK9O)|Y2@4tL*X2fkj1vE zAzjKJY#VGBMqGS;V^7aTxv>4n5w#7Y)uwL02A z`q^lVIyj`Z5MOm{kKE_Ngh4*XLJ)q43Fr7*jd?V(`ebSXUNCfO6`p`$L@OQ@#nsLL+!9TQ**YuHac`y4>*kI`N53)dB-j;gkIt>NfVT&V7oKm5Z_Zn(?( zyIYBiEa1=eU)pZX%K`&JY|Aaz%Fcz-V0n>`K8mc{NqhoMU(qr09r7KfXycB8d4PcY zSV?6{gNpD(l3cw-GHyq8Xi2@y6z3B{r&y^^(kbgf#qaO5)SNI zpOmV!baZqzxmB)UJ#DACH{O_Ahu1$RyVnBtiS-z95trV&4!BQA6b)@HvI^f{;R!ZV zp5W;BzBl?sbnxr4dkaF?srj{E(|i#z{G`k<%oh>FTgf4J-qF) zbwq!-wT$GMn2jr0i*am&R_yv^40!0R7BOp8)fURJ)~#2qjk^CUdna1H^|of|scz$+ za`Z$u($K0BpMIL`eL*BI$ZjyzTi4q>XLi?{(Zq@1{LC;=@}K?S-~0OJ=OfgHKCI$T zbyF$E`20MBDM7k;@%?s%8b*>BhA8dtqaT_scTY!&AtSmlkmz*x<<`1@h91~Og+Qe{ zsEnef;-;Has^}mH&Vi(D=jkV&c;enY)ztwAB&1U(ns+qqEaY91P`I;cNArnOvgy>_ z%{DUiDLuz)irAX(UPeFMl(RosvXImpVXRjbTj03R{74@-iGu_E0|N_O|L0sru9AkN zD^ZBK%Y|l^`S>hWS{Hh?c28q$iV< zU*%EqH|#Hq=;&@)ljhXggyDzpK$_;#LBsIw+mC`~C+P{cb%W;EQr4_-H}u2$rOr-C z=;#p06=4;wB}tNr#tuz=-ro|pg8(YZqyzVJ#Yu}A0 zzMDC@L0^r2R;|ySd!dd}Ntnh~z7t%UUFBe*BMOy-We@^Qu&KXniL90K(~YP0T8Q^^ zbgR$3#Ikq!1S>mXa1o-zCMZSH>2yzz7MY4QH6ggzD>^ZeNJ&K)=-NW zw3Q~EW;w#C*eRei%advUKwl4DhLV5a$>$=AoTZ%Z5pO>6rLX?RZyY(2B!^^UK~t^M zVP+IcbhSYX)1^s+wa%-N(rQy_KnrFdlVcFKEJPLt4 zUZ=v)^XbYgmNEvw38tj^!7uyf)g{fa#rLKA?>_^>11ApDk>f}@ufF~!D)6S z_l8I4Nqy)0hx{&0d@&k|gp?G9MXnB3!r;oRy-ZdHqjG4#iCz(?r4=7+b*GI&*_Jh(Eaz{dFK9y z?mP44haPy~fjjqCk-LzNlwYtNwXQSJ!xDQZCuQBab7qr71xFeKpWb*Dh?d&A;KP2; zY-O1kp6%?o-s@Rf3I+m!P+G{x(SLdIz#!Fq3vwg|L_s)}NW09Opr(hO@mH_T#^4eu zhLQD`rc!2bw<_|)&;UIPM1>Kobvl~vxNTuUEW){?XU^Pm_~>mAY#iB9!QySD3hGWi z_Sj=z+F49)M$)=`v({w}j19Fx&3(>l<)9e65KhDrvi^u8HU#9-Wo&91j~sDtI9;fy z5}KmZ)6t2EA`*}}!-4(#Wp?**38xEP{z)|IaNI;CpjMfSUp{wEX5SuPo&z95$AuTR zUqmz5%gU_y;?t=lMG1Na2Pg3rN~EmlzWS6Ot>8%+aG#f&!~J}U_E;^5Zz3>~1SK!t zrRCLt$xDntK$Xh{mpm~wkiY7f2VFX?D@KzQ>(YL|`#>>|#*r)*6Iyzs*5eNIg5#ry7l?z!jg*+;&C3{#0DsO(gPAw28S zvOHm8sWitVVV=I=&I1k(ATiEy;LbY>l9L@^V{}X=3kq^A_Eo~*!nia$9HUcl(cail zS(%r$4Jf8!0l28BDa9O8BECcYZIZA zwkmsI=F<4JYwjkSlz#N#V~rN?oM$=`3rA4Xl(uje)T?(kT7r1*3&x6l)b{872WrV} zNL*c0w;#Pi+uP-VmOY<{#F2Pxd`dR%sxhP%y0Q9QnNMh|cI|Snw~9+7YD}CkXUPQE z$D4WmyAcX%BeYc*n+@}96~<@7rnd^yWy9vT3e#u9rnU;>ZjhfU8>ZYK-o$@5O(`3e zB>9`eoY}C*`Y>TNP1lV>Hp#HF>G25rqBcq2IK?k$5$#rC+=iOnD8<`y`@w2mU!U&3 zu+rlk)ba5zSnjJsjsuqe!jiA1Vsmn%Wk1WAD$DZ1HR_Cfl%b#Mx4F=)cW&;(@O$D# zLf8M8i-t4Va1MJ#i5D}}z%KzGEgm2lTELa5E1yFrkUaNUHg8q(zT#gD|La@$Yv6C% z!e0x2?H2y|@Q-fcPxBSG@YloNu!X<*3(Bd3e|YP3Xn8hr3AwVskly_YH^P*r+&QX9 zmD^+S|G@xvCBMw46gw%EU)~TJV#dh?Lh}?0DcTs?!p$?pk5Ii)A+}9%eT5yftxMUtWj@Dq)H{<*yPWA{A|AzdJsM9)V9=??<`TL@0A_?1Y$QU(?=nfBC21Kq z#<4}>Xi&z+V4XrsCa>t-j81SB3Oa+S00&kTm<-f3Detr!I72>|qIMJ@2kkwZMavq& z)%ALeHXCTSC1SA$+-vB?GD2L!QY0Mi@24#wlvhZS#J(a5Bx8U`5J?(`QLxhZz5cQ`?)CW=W5fvjqu~`vFz1vU=o3!b{Bqc4ktk8 zsr=#5ATfeW)e}J=2HfaqVcaC`Vk6<0i(y#23fK>}D70-898_;G8KyL5luOqtqzNde zq>ODvE2HM*Z4QT7%TfA9ElFw)xRch6QgF zR6r`Wh(a#_rR-8M1SBxeLG$U0D06mpab$Lc{kUIc36ez%IkiYsgR_0nKy)xYrV8g1 zeVB~s$;yr?Yt1RikddL8C<8qxF1j!>oJ@v7BiFCY!1gvs&-p+Ios}9v)C5uAC1OB- z(6~7;wdPzr!xHR5h)OPX*o|rq=vz*0$SX*Z(o%b|-EK8o(G&C3YEl52oR=gcDrXSW z)S68^E^B9J%{qxXQOF@5?$2?h89{KFRT{#QbV;Fx#C&5D6CvztU3!M-=sV#%yHmw-E9OEo4l^K)ut6lz-l5WN7!Qh|>7B_f$nbCX1t zmfS>gv4T$Jsud0S7~NKr4WG2q45KnwQRjSv3ipyBANN)R9qKA-N1voQj&-S6jt+UA zQt~#7LBxO*4H!A;h~h(2_>@RGy=vq8bOw*Xuw&CH!CdMn(g+~W5kC=kVQdRp`Z`jJ zsK+7%9crGW7SXBrQmYH|0!g_r{LgAf7YTh%lX-0hKFO6jEP8fPSxk!@<0_C0dJ`Qp zTD3q&z1B)gof$uB6*O`&9GRt9E1Hx?k}QjthLl!b+R7~20zBO+=fP42AJw*PC&&(7QkPM{3E$~@Jy@Fo1kwAn6QS9iLkiqzp`HqfQX{lS#D9VWw z`($zeUbo)LClVXbT6Avj!Z5eGxrGHfTEWj=e>MjvG2nF)>)GrB`{ni4GGi2S3h%?vuAJ zqPPl5%avC<9J1sntSGOpzV+7D4fdmZI@^&ZMSjOZ_@=40a0#{uyIgA_n*bzl=h?hl zPu`70k@T#85vkH-`TpUdX=>1NvVXXry!&phE_dYS#7Z`aeZMG*ixbz*f5tK4*@@As z*!XpHTx`2^iDhwtyg)w-vD!RaC8*;9E{(CGWC%x1w}Unj*uRqC}!dGaNBNaFiG9y=KV^tE<%EJj=D-;OO~L_d1Ph zqE5Wq&0YJO*M`X7%fF{y$TKR=BR7?Re*C@cb0s<1lEDHq6$!!OdS4)nO@00(-+LR|?h={R6_VlmhpE4)lyd}F~(dNPhH@AED$cTI6 z88jX3v@Kr|7N7eXHBs@(`f$Nw9vdTL2%npI?5pJDa(F)4x&+}^$`}qUDsbFT`(PJ0 zHE=l~>m`r~Qb7%D9o7_p*3~9VWji20*U0pg75Gb7P}k$83ENMxg=O(q76 zL=Q0nK%VOfs%5DJCGxuH0Nni?!Ejura1Z2ULk>`gxxv`c)e~CeIBs!fh@QkTgJ}HB zymu06>%NJ}$q|<-Fhya${ZoNfM>M2>s{)&R_uYNhsh9;blLgYylaPf1XTWQ&j!woz7w_V|C_R>GGWLg zw0-LNlqB#x7nr_s;d6{`uXn5)qx(Wv_m#FbqM#Vcbf(tRbd;;pF;38FoK)?MO$)rs z3M=7SV{xI?Xt9vh_GuUypPL@MdbKC+IQaOJN-(Z3*>(V<{lwk(!3^Js7NmjJQ4f!L zddRwQ-_H69D;FL@At%xdCJ$RG8VDE|ySJVLAU3qSW%Mx8yC$A$ zdDR%<#@RswVI?KX!id2aJTZhP@)VA(?*AV@(ZcM^Jki3uNmhH`;f%IIM_VW45?#Zy z+zi?~>n^o*{P<^W5PrHqgS$+|(#3&`EAF#TeXUNc9|DmyMw>%fVm0QXa-9YoxNx|_ zt|3;rXsGXc@8A&JSW#(JRaIGGStY(oOQwg0+-q^z1f-7VC!;^{U>0Chk?*J!#e4UY zcY6W%W5n2ZvSl@`oECYV>wNRgPC8>S5!G20>t~<&>Q|q^!)_)f=34*09L-uAV^we> zMldJRJ2n=%etq;h+|b0t5WeV-2zEp!mZVv=$yVf;_IQ;j)v;!GHtA$tGR`m*?y=O} z#j@^Nm3I(sdJ&R^X?o{X6*(LSZim}dQL&4DA8b)5A)ziE{%>kovHv>GZLuz zx88jFLO2{_W2`9czvajga9r1y7lK?4E*Yi=R%CvRkM>@H>$%?7cfE(+^^T6Cyjr%a zdx>QQkc{!9%<7tUy7E|#M5*mhN0H5>X48b0mu07}!Fl6xFa4eZ*_6NQDBS+KhK9QR z^ln!^mnrX&Be(3AL>8qBhcCSS=36MQ1ZibJ<#djXE}<@b80Fmx>&m~{{p#y2%yvvw zV|Rb)?t5F9*H6pqsF~#_2e|KZuQOfSflXy!Wbb88zwRPyQzQ~c5%e7NH@+(=gZF&x zoJzlg zEA~z1uW*4Dc4sr;VtI{34X<3Ij~_sE~fL@P5Ei_B_332GIk zq9SO7(AEU|vI`bxq&L=B_j_HhcL0iE>BpR{f#juqV{m3cw{`4HY}>YHV%xTDCllM|#CGz; zwr$(CZ{B*p@5lXp`*d}k({<3hx_Y1L-M!YL%(Vv@Z?Qk8e~3bOdUkV_m9;CtCPXCT zSn}A~1YGLeXo|=~JZ}|%X%jnV`P~QwZh?#JcYk|5GpoU15Uslh3!+hoLO_V!R#Ebr zINvM~CbBXTR^^;?6AN+E*3}_y%<^0Z+vw5bUF3CF*UShQbHOIb_y0V1rg z+3{+2l|FoaCxfkIS-9TRsu@Pmc|Dy!JRnR+gsND&3D*x0)+yg_V#mih-5=hh)^d!Y z?x>6+)3TMLaR~DI&VEKKQpujM&V@BKJxNKChwnnadRl)z1T=o%tJD0DGQYWKj0`zf zSVUQC4~+kg%oFb2@O{tt^n@SX84=$K-=`vX;YEpW_dFO;=^LSgz-E(BZQcb+c92fV zQRtlP@Oi&9t_)EqDi!)u|6XxC8|&K{m6VEfShqs8p!H!_do3&M7A z2yD02R=ubKha0P0gtOQvS*5W4DlF~O?}<$mm0}Gc(V;-s@cH706!Kw5O_d2Zs04S1 zn8pfV*R&GR5t7jnDauwU^T5BekyX;xSSPeAVCcwqeXrJO&%(UX-C-O$4#X!PQvdCH zbWh3+Ol?Ud<6IAhuj}Fx&VET91&+Rl%~&2`<+>UNWU!))ZQIc~tWr>w$RGr!-L)2 z%XYOgt8CXyVA)mH>Tx|~BRc{5YQht<1zBKZcE!8o{8Ct^8{5Hl=ymrmuFT7`U+M|eDUNq|JpH>sUXVb1aXciU0K+e@BrM$Cz4m#fu2G&|LH3qUkx#+U(>4@j@3rbZ!(E2ny2fDlV@{$EA<~BZ`k2&}lQQV)<>6~70 zrOn%kKdZ<%b=TfV8-|OBe92-a{bw zuu7jk5H_4Ar@j2AXAiuU!V}YOzBAEse)_tM)6|$Vp zOAwbQF!fS0Rp$$5*{k;0meX09&JsY8aq=a~4yH$GE=y}K^t^>|GYhcqcMW0&zkb!= zmMa@^o#3Sf7WNRNwebh&0ozR8LK1ko^Xpr#_#OAh^12?0>s(F(9r4~RitXU@D=_#Y z{U8YOyna|Kf%gXD&mj{mbQ^)0m7<&|`XU&9D^msIo3x>V&IzDDc#1IwRmXaKAgQx9 z{?P|wuj$P{HnFk5KORo8RPcF*!v+)c3`Hk-WP^x;d2@6iRONdXzME zBM{sI=}2LC7yyp1X2!6oCxl^iszYyF(~*kC1S=fLvBaZxbrCv7XV#2C1gc~T(n;Xz z+5ICws2KxrpPE8ayVEg*?&!+Yd>; z%7(UQE}{YHn(}9RKwj9GI2=*m3VLa|yA+&Qb3fM^Lp_>FZvr!*2(8pmpPiKLm$g|fElhq+JDd)@N3zpl0(Gnk1o zca7tey(WnlX&lY7bF#fJzDw#Vx6{{|HTy{qCX^w% z_c7csci8eV4iO)d;G0h{<#EV0#bjYfJqFzh>#uc`L)~9MF8l-pNQ2OFHM|bvl}m)g ztVhGBuCCf~V`kXw@0F$)7Jp7vv|d0-$}D;khVlt_2{D9_ae3m4nCQoyYKDkM#Ya9a z1(Qqmhd^tx3|~0c)iX!V5Zw(QAMa_=QrL7B7Rmde8vBivh5HlMjnyej>#?t0q6vQo zkgfphGS&fhTY`2E%|9oj#6IeEQb(mhXNv$JSS+8#xFO zed`W+v%+a$<>krcWhhg2*Vb0dFE=3%V8#aULpJ#Lo`%h3c^1HDw%ge`1yCN%Mng$0 zrr~5l#-&%;D2X*f^k9(**%UHu#6ttB>ZgACEIe#9vyvjQl~uW91Y%xoVR`XTXW#gc z$YRcnz^VL{Z&RrdCj{xi;%{4u#3FRV`1F=PLl`(5h%%%$jD_`d*JF(J`KOX)F8M^zt$pw5!TXe_&Dx zsL^d2-o%86aSlz@4FF}Tr{~D;Q>SuK|jx_`&FFWdue87v#7C>u~L@` zUT)e`?YiE&U|^$oB%rb@AfAsebuN}McBkDac z=*%xM5u+5SX-b<_Z>YQTn>o1`eqCF#Od90`ym#c;I6dp@hH8U8pOhD`o!^ zeWrKQ!@HO6ot#jzfv1romiiN6okbRabli~v7YEf|8J;9*l}8OOtHOPf`TQyr?_Tec zTU0neOb?zkjNe)?h5n-lG^KVxhK`QD=YiI4*SQ}PA1)#^C=<*7cJdh-ah4H_$K%>E zCCWvr3Sqi0h49yERUhpGR7Z!eU`v0)BshG(tV_=CZ9Z2wGd4UWA;K|qvgi0HpC{Gj zDJ?6K26o+YQkoK!6PD@qas3GNMm9f#DhDLF%g9to8VP1opKJ?%!Gd|R*d+YUr~b{e zO93c%_y|J<{K<_U`w14cNrUVqbc@G~i7`@g3JI9fUpT-LkeU2-j@rDGhuBZAU*eX8 zR$(H6nnyx8V5k9ey=v0loHjmtQ!K3ivUjY>Cov%>E8TN|&&rWN{DkBR(H8zm==<(t zAZ4>SaAJsQvLq+>4>6Lu`cA*RE`#n;S66P|JMx@GErtM}_%PK?hrkv2KZP>|kYN zMOfa-uH$&OsB~)89oIXEC3efNJ3qGIq9MZZ`xAlh^=04fnp!0mVcY3hmx7#&58KYS zoMV1QlJ=519MbgDAw)xyxMK_AU$knbY=7mWOk9OE3wGfWnigpblta)|HY^nh=<+`m z4;%f1Y_}xB1=zqAEFv2XGRo9}u#663X^MJF?rJKCZr~CLo<38jmcUu=KT+IGaI|X9 z`Aj^?Bx0zB#Ymx{I>=DxdA3lB#>sSS4$!;qN;J$G+Cj=U9}m{Zi9U{|*v*|fJI&6I zvfuANj$dSa9@dBj)Wiq zVa})!t^B3rsxrja7dD%DN>N>ryjv{w_RLU0K>@fwiH9;l2%JPF(P;58rjVHrn1hXZ zn2{u>HQp*rIy4BtBKgqxo(Lw<9tp-ji7sDS9}dJ-lxO#Y5%vA@PSAGcp!RR4gyG*M z#ui)L+Hcmw*@d;V3*=uRk>h=ocDgTk-hMuiQjUpXs;c;jSIi+h8k~qziBD;_I_6yY zkoQZ{N}C@eTgCKEaacIkWCf@S75U$DH7}K;tM9wM2gAlgu~nH=^ShL1=vEvxb&*vV z>hH~3Wk=I}Ftw;sMiVm(hkH|kQK4 zCX+g zHIt17W+01jqIK}_8ro@oAVIQ;)8(-s)|TJr?dAzN+EnP%5gCyaO~ClyBTnFZ+BScg zXKtmVgA`OR?6bSI_7swWtCWxs1Zd~Ro16_mPK~?`Ivtpc$Yz@#y6yS%d2>9AOFO6( z>o;e*eHsyx2DZ^_dGM?yPRr{Ib3S=zxLS&>CH9%~QtaENv5)jG{pPMN^CVK^GEe8c z2(w{xX<=9hBPML8#;sMZ1!ok)YJu)BEAyQj{8Xvxt|9yA(|Bs&IGE1*p}dnbGXm!` zd~elj?b$Y}sa5OwdtOM>Gs#aj6_QiYm{#(*n3x8f#MzTvANgbN8x0CBm$M7*_MUOq zOwRZ~n!AXs;j6lK;gUV&woLder$%pT3Y9msz8&HNd1~ZH+P9B+wRSEl7`~lTjqLyd z(z5qz**6JVv^xgKNq43h^Z*)zz`MTz-bOiCA>Goo_Ar^Ux@iu5Nf0XMoKPd)ome9! zycH?|aJWy}!)CwtsqgQhN05He(NapL4eI{G1!QadV-SK({KU)k&ZoRb`P(yRDNmdp z6P%RHsQm4Zcsm&lQo1KoLWL^3keMa#S!XDN2F7%OH%xpjRic5LFnNb91>GoMo<@1J zwXtimYRif#kA9R=!NJYUeyOL_N-XB!kO!YU-moexPp}p2(GtA6%1PV8eca*HyC_Ic zNB_2rUMC(EY9?0qG?9l(nLnltLRRilBwxit<-hM5Zd?)xifR&|!8k%w&#c|(=KG}K z?0NwMIe^F~Uaj&&sKg{KQ6?z48!ub)=j0Q&sH!E)s5IK4ZwK@h@q$I8uk4a7*wPlA zW`OqC+Sb;U*iWY?_-gMfyyXMb;% zqft0L9jNlfdUUge}RIgR4JD0wg^N@h(qC!?mxkV`nC3cQcp+i!n88O6qL zCut3MU3Wg`cqM_SLNP%cU=}aAaQk3SvDeo2B#YF<5e_cxI*GecCQ)4KG#MBQegd_P^D&tA0<6fbpSxb2z2j$?+3 zxl7`e0^lB*lQ?X)*Ufj)A=l~k&R`w6{;>;j*`EG>9^MaWyClVzX^qz511*TKIj-JR zZz9=0VR2aldy`I5b11{)!(~d5gwPJHsf%*yFc1z1kE zN^;8RdKb2fRW%$OmvK58w-fEPI_`c46C4j)-+pxv zf2k5|c{9Bjtg;@P#d}IwQ$EO8QAO>>DQ;fgeJ>Bs;mx*ZY+~0u|GDSX1y}DE-kka8?gO70L$=s<#5OR$?|z6#lQ<+pd#0O zmo(4$(V1+>O9$w(guern8|41!Ml%L&~9hV_5ChmxjIwW{W;$KG2ZRNgZxGRit-j}=O+3D zU#;gUV+8o(SnJfcX}1C+7je18RIgGW{O$u0=v9JaJR5X!8Wbjz(r~WsouP)2HkHVm zOR>3@wMR{(sVPDANkfM^Hl-;wpuhOF6w3TVS$Z&K4v6m=k`Ep-*{n3M+2}iDmPi-O z6K|9*uWU@D9Me!B#BJ9sMMoD@^dPfU<)=r4ShD;`q-Lp)Bl`u(b}X@fZ%enQtfI0O zOPLx+Au0=_{k^r2y?BN8+D5mI{{eaJ3nYtN1w=TOKY~<(qIkPFfq-ABLJk(yIsKF% zGw0FOUeI5eaYN$f0>V?29c^m1AlHDPPuzmqvYIo=@AK-Ybsammc%{N)yQrMm-LvLU z)XyCec)grdsC8ui$M};rLQr+QaM9RC*94|`SJq)kDSd9Ua5RbjzV5WMvaSOD0$~hvNY1J70Yye!*w>O!2zT}a0ysLPSnV;< z6!c<92ECUSC+7tWZFTho+M;#0YrArmbFR9U-WJjM<#5;8$FCDH_qvJJ^X2Jy-EBQ=Ja=PU8m5fYTO$&n=9ZiJdGHza$40<~8AcPls{DyZjb$T$? zz-teug&EOyM(?TV^f(M zE91n#z~Oj?1N;o2$c39O+O|u=_Dc5n+yv~PTAK7R(fT1wj^2)FquE z7?Pe&Re5PP0;IAWL`8n&xveoNhc&46-%RIe^SGyGsO zCQKu2>5sKMVCePa{iKl?0Mnbh6xNuibG3LsevY{Ap8Sp}I8h-a^rNo+vHb;49{YN9 zB<$2c>uSL|$+&i48aX&WTu0afU3t0fb&Xd-z%N7R@truK*Jj-AEP?(U6B{_+wcL4y zD~QHoZ+p5Qn>v!otS4njL#+vJvR#vC=Pfkk5%O_<@aVQ>vB~JWhziRgajY_trJ^;} z7TBucwmvjd!FrXH*_l36H4&_tGS1wSC8S`kq4~0<%gpMWvR(4=#?iG)yd8v4?zC=W zwrpvT_b^cueC`0Nh&GR* z?bWmjy)K48?diIt2p!Z*&*wNBE&Z%`Dk~VHY^{?!-#KnuAi3uRBbNhw1rjhAmo{M`tfnU_>lN$iPZ<`6PRQk^5 zxaGdsq|jv4r5>+6|K;Wv76fZC$bfhzOF%>t`! zo0sQp>px*k2o?j3#F@R2xBac7f#~2r?YhI!+XCQZh_z#BjxBt6j!#5SP{!dH`SnI8Bs$Eb(yrC~yX} z2rYSEEx8#3(U5YIt7c(y>m`(jk^;VTAuIw(TN2m?#ku5b0?dQ2{Zd&l!yx&OWm`FlCIymY-g6DM6N>3Ra;?`&w%z+>*!en-Yn~9H z^Pb}fOmnW@Jqd1iH~@)OtW^&*8{y*{0+058jAlkQ3TBK@pPbGd9$(s41%&qXjxc%e z8~aL!mmNW%hqJqJT}X@yW+$mA5NK?7bWcz1&T|#@x`yZk*j(KEmHO&Cf#$AlZHV03 zwU$Y8xvtKBuhFq6H;MWj{DWw=vB5EA4EH$SI1$%lI2NTjaW-v`Jx)O`A)s@*uvFe) z{B!b1j;wn0m_tTj1{|WIg|oAn{)mS}qP4P9E6%Ken^S >-Aun5A4Gp>4U0IQJ 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 G)cz05(PHWV literal 0 HcmV?d00001 diff --git a/frontend/src/pages/index.tsx b/frontend/src/pages/index.tsx new file mode 100644 index 0000000..02f4a3f --- /dev/null +++ b/frontend/src/pages/index.tsx @@ -0,0 +1,115 @@ +import Image from "next/image"; +import localFont from "next/font/local"; + +const geistSans = localFont({ + src: "./fonts/GeistVF.woff", + variable: "--font-geist-sans", + weight: "100 900", +}); +const geistMono = localFont({ + src: "./fonts/GeistMonoVF.woff", + variable: "--font-geist-mono", + weight: "100 900", +}); + +export default function Home() { + return ( + + ); +} diff --git a/frontend/src/setupTests.ts b/frontend/src/setupTests.ts new file mode 100644 index 0000000..1dd407a --- /dev/null +++ b/frontend/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import "@testing-library/jest-dom"; diff --git a/frontend/src/styles/globals.css b/frontend/src/styles/globals.css new file mode 100644 index 0000000..13d40b8 --- /dev/null +++ b/frontend/src/styles/globals.css @@ -0,0 +1,27 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts new file mode 100644 index 0000000..021c393 --- /dev/null +++ b/frontend/tailwind.config.ts @@ -0,0 +1,19 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: [ + "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", + "./src/components/**/*.{js,ts,jsx,tsx,mdx}", + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + colors: { + background: "var(--background)", + foreground: "var(--foreground)", + }, + }, + }, + plugins: [], +}; +export default config; diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..5dd49ef --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/hooks/post-merge b/hooks/post-merge new file mode 100644 index 0000000..ce5bd23 --- /dev/null +++ b/hooks/post-merge @@ -0,0 +1,21 @@ +#!/bin/sh +# update secret files if git pull on master resulted in new changes being merged locally + +branch=`git symbolic-ref HEAD` +root_dir=`git rev-parse --show-toplevel` +# must replace with actual vault_path and default_branch, can run setup.sh +vault_path="kv/internal-tools" +default_branch="main" + +if [ $branch = "refs/heads/${default_branch}" ]; then + if [ -f "${root_dir}/update_secret_files.py" ]; then + vault kv get -format=json $vault_path | python "${root_dir}/update_secret_files.py" + if [ $? -eq 0 ]; then + echo "Successfully pulled secrets from Vault" + else + echo "An error occurred while pulling secrets from Vault" + fi + else + echo "To automatically update secrets after git pull on default branch, place update_secret_files.py in repo root directory" + fi +fi diff --git a/secret.config b/secret.config new file mode 100644 index 0000000..651ddc1 --- /dev/null +++ b/secret.config @@ -0,0 +1,2 @@ +ROOT_ENV_FILE=.env +FRONTEND_ENV_FILE=frontend/.env diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..11c0c95 --- /dev/null +++ b/setup.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +vault_path_replacement_str="s|^vault_path=.*|vault_path=\"$1\"|g" +default_branch_replacement_str="s|^default_branch=.*|default_branch=\"$2\"|g" + +# MacOS +if [[ $OSTYPE =~ darwin.* ]]; then + sed -i "" -e $vault_path_replacement_str ./hooks/post-merge + sed -i "" -e $default_branch_replacement_str ./hooks/post-merge +else + sed -i $vault_path_replacement_str ./hooks/post-merge + sed -i $default_branch_replacement_str ./hooks/post-merge +fi +cp ./hooks/post-merge ./.git/hooks/post-merge diff --git a/update_secret_files.py b/update_secret_files.py new file mode 100644 index 0000000..2629b39 --- /dev/null +++ b/update_secret_files.py @@ -0,0 +1,56 @@ +import sys +import json + +# Open secret.config file +configFileNotFound = False +try: + configFile = open('secret.config') +except Exception as e: + print("File secret.config could not be opened in current directory.") + print(e) + configFileNotFound = True + # Script will exit after checking if the Vault request is valid + +# Decode json result +try: + rawInput = ''.join(sys.stdin.readlines()) + decodedJson = json.loads(rawInput) +except Exception as e: + print("Unable to retrieve secrets from Vault and obtain valid json result.") + print("Please ensure you are authenticated and have supplied the correct path argument.") + exit() + +# Extract the data field containting the secrets +if "data" in decodedJson and "data" in decodedJson["data"]: + data = decodedJson["data"]["data"] +else: + print("Unable to access the field data:{data:{}} from result which should contain the secrets.") + print("Please ensure you are authenticated and have supplied the correct path argument.") + exit() + +# Even if the config file is not found, it is useful to still indicate if the Vault request has any problems before exiting +if configFileNotFound: + exit() + +# Read all the secret file locations from secret.config +locations = {} +for line in configFile: + key, val = line.rstrip().partition('=')[::2] + if key in locations: + print("Key <{keyName}> appeared more than once on configuration file. Ignoring second instance of the key.".format(keyName=key)) + else: + locations[key] = val +configFile.close() + +# Write values to the secret file corresponding to their keys +for key in data: + if key in locations: + try: + f = open(locations[key], 'w') + f.write(data[key]) + f.close() + except Exception as e: + print("Could not write the values for key <{keyName}> to location <{locName}>".format(keyName=key, locName=locations[key])) + print(e) + else: + print("File location for key <{keyName}> was not found.".format(keyName=key)) \ No newline at end of file